我们有一个terraform部署,为我们在ECS集群中用作docker主机的EC2实例创建一个自动扩展组。在群集上有任务正在运行。替换任务(例如,使用较新版本)可以正常工作(通过创建新的任务定义修订版并更新服务 - AWS将执行滚动更新)。但是,如何在没有任何停机的情况下轻松地将EC2主机实例替换为新实例?
我想这样做,例如更改ASG启动配置生效,例如切换到不同的EC2实例类型。
我已经尝试了一些事情,这就是我认为最接近我想要的东西:
这几乎可以。问题是:
有更好的自动化方法吗?另外,有没有办法在ECS集群中重新分配任务(无需创建新的任务修订)?
答案 0 :(得分:0)
在进行更改之前,请确保ASG跨越多个可用区域,容器也是如此。这可确保在一个区域中实例关闭时的高可用性。
您可以使用 AutoScalingRollingUpgrade 配置Autoscaling组的更新策略,您可以将 MinInstanceInService 和 MinSuccessfulInstancesPercent 设置为更高的值以保持缓慢和安全滚动升级。
您可以查看this文档以查找进一步的调整内容。要自动执行此过程,您可以使用terraform更新ASG启动配置,这将使用新版本的启动配置更新ASG并触发滚动升级。