使用 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 个或更多实例可用,否则滚动更新将终止您的单个实例,从而导致停机。
我正在使用 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 个或更多实例可用,否则滚动更新将终止您的单个实例,从而导致停机。