这是我在 ECS 集群中 AutoScalingGroup 的 LaunchConfiguration - 使用 cloudformation。
UpdatePolicy:
AutoScalingRollingUpdate:
MinInstancesInService: 1
MaxBatchSize: 1
PauseTime: PT15M
WaitOnResourceSignals: true
当前设置的问题是,当我更改 ECS Host AMI 时,会导致每个 EC2 实例被关闭并一次替换一个。这会导致当前正在运行的任何/所有 ECS 服务在创建新 EC2 实例之前就被终止。
有办法做到这一点吗?他们的文档没有提到如何实现我们想要的行为。
任何指点或建议都值得感激。
答案1
在更新之前将 MinInstancesInService 设置为大于等于 ASG 的当前计数 - 这将使 Cloudformation 每次在终止最旧的实例之前创建一个新实例。确保在更新过程中暂停 ASG 上的进程,否则自动扩展可能会干扰 cloudformation 对需要替换哪些实例的理解。此外,使用自动扩展生命周期钩子心跳暂停关闭实例 15 分钟左右,并使用 Lambda 拦截终止并将实例设置为 DRAINING 模式。请参阅此博客文章:https://aws.amazon.com/blogs/compute/how-to-automate-container-instance-draining-in-amazon-ecs/