使用 Cloudformation 和 Spot 实例执行滚动更新

Perform RollingUpdate using Cloudformation with Spot Instances

我正在使用 cloudformation UpdatePolicy 属性执行滚动更新,以防我的 ec2 启动配置发生任何更改。这在使用按需实例时工作正常。但是,当我使用 spot 实例时,出现以下错误:

Autoscaling rolling updates cannot be performed because the current launch configuration is using spot instances and MinInstancesInService is greater than zero.

MinInstancesInService 属性 设置为零可以使其正常工作,但随后我会出现大约 3-5 分钟的停机时间。

有没有办法使用 Cloudformation 在不停机的情况下实现这一目标?如果没有,有人可以指出一种更好的方法来自动执行此滚动更新过程,因为我有多个环境并且手动执行很容易出错。谢谢

使用竞价型实例时,不能将MinInstancesInService设置为0以外的任何值,因为竞价型实例随时可能终止,AWS无法保证保留实例的最小数量滚动更新期间的服务。

但是,您可以将 UpdatePolicy 中的 MaxBatchSize 参数设置为 1,这样一次只会更新一个实例。为确保高可用性,您必须确保您的 AutoScalingGroup 中有 2 个或更多实例可用,否则滚动更新将终止您的单个实例,从而导致停机。