对于AWS ASG,如何为新实例设置自定义准备情况检查?

时间:2016-03-15 00:27:16

标签: amazon-web-services autoscaling amazon-ecs

我们有一个运行容器的AutoScaling组(使用ECS)。当我们在ASG中添加OR替换EC2实例时,它们没有我们想要的docker镜像。因此,我们使用cloud-init运行一些docker pull命令,以便在启动时获取图像。

但是,ASG认为新实例已准备就绪,并终止旧实例。但实际上,在拉出所有泊坞窗图像之前,这个新实例还没有准备就绪。

E.g。 假设我的ASG所需数量是5,我必须使用cloud-init来拉5个容器。现在,我想替换ASG中的所有EC2实例。

当新实例开始启动时,ASG将终止旧实例。但由于docker pull滞后,部署期间会有一段时间,当实际有效实例将小于3或2时。

如何在cloud-init完成时“标记实例准备好”

注意:我认为Cloudformation可以使用CFN-Bootstrap弥补这种沟通鸿沟。但我没有使用Cloudformation。

1 个答案:

答案 0 :(得分:2)

你看起来是AutoScaling Lifecycle Hooks。您可以将实例保持在Pending:Wait状态,直到Docker pull完成为止。然后,您可以将实例移动到InService。所有这一切都可以通过AWS CLI完成,因此应该可以在docker命令之前和之后使用AWS AutoScaling命令实现。

我提供的文档链接详细说明了此功能,并提供了有关如何使用它的很好示例。