AWS 实例调度程序和自动扩展组

Posted

技术标签:

【中文标题】AWS 实例调度程序和自动扩展组【英文标题】:AWS instance scheduler and autoscaling group 【发布时间】:2018-08-09 14:09:13 【问题描述】:

我为我的 AWS 账户配置了新的 AWS 实例调度程序 https://aws.amazon.com/answers/infrastructure-management/instance-scheduler/

问题似乎是,通过扩展组标记 ec2-instances ec2-instances 已正确停止,但由于我的扩展组将 Min number 设置为 2 AWS 扩展组无论如何都会重新启动它们。

我不想将 Min number 设置为 0,只是因为在应用程序重新部署期间很有用。

如何让这2个服务正常工作?

【问题讨论】:

实例调度器是为了节省成本。在不需要时关闭实例。如果您的 EC2 实例的配置是自动化的,您应该考虑缩减您的 Auto Scaling 组。 ASG 不使用实例调度程序,而是支持计划操作。这将负责改变 ASG 的容量。但是,如果实例配置不是自动化的,您应该不理会 ASG。 【参考方案1】:

当您停止由 Auto Scaling 控制的 EC2 实例时,Auto Scaling 会将它们视为“不正常”,并将继续终止并替换它们。

你有两个选择。

选项 1:在您的 EC2 实例停止时暂停 Auto Scaling 处理。通过这样做,Auto Scaling 不会关心您的 EC2 实例是否已停止并且不会终止它们。请记住在重启 EC2 实例后恢复处理。

但是,AWS Instance Scheduler 不会为您管理此问题,因此您需要找到另一种方法来安排您的 EC2 实例停止和重启。

选项 2: 将您的 Auto Scaling 组扩展到 0 并返回到 2。这将导致终止您的 EC2 实例(当您不需要它们时)并重新创建它们(当您要他们)。这仅在您的 EC2 实例是临时的时才有效。

同样,AWS Instance Scheduler 不会为您管理这些。 Auto Scaling 计划的操作可能可以帮助您解决此问题。

【讨论】:

【参考方案2】:

另一种选择是在 aws 实例调度程序之前和之后使用 asg 备用功能。这也可以让您在关机前使用同一个 Ami。

下面是高级解决方案:

    使用 aws 实例调度程序定义 ec2 实例调度 定义 lambda 以获取关闭计划并将 ec2 在计划关闭之前置于待机模式。 定义 lambda 以获取启动计划并在 ec2 计划重启后将 ec2 实例置于待机状态。

【讨论】:

以上是关于AWS 实例调度程序和自动扩展组的主要内容,如果未能解决你的问题,请参考以下文章

当实例连接到自动扩展组时,AWS EC2 如何更改实例类型?

使用 AWS CLI 或 Python 增加自动扩展组中的实例数

AWS 自动扩展组 AMI

AWS IAM 策略拒绝对自动扩展组或 ECS 集群内的任何 EC2 实例的权限

OpsWorks基于负载的实例与自动扩展组?

AWS ECS 任务内存硬限制和软限制