使用 Cloudformation 和 Spot 实例执行 RollingUpdate
Posted
技术标签:
【中文标题】使用 Cloudformation 和 Spot 实例执行 RollingUpdate【英文标题】:Perform RollingUpdate using Cloudformation with Spot Instances 【发布时间】:2018-06-04 11:59:18 【问题描述】:我正在使用 cloudformation UpdatePolicy 属性来执行滚动更新,以防我的 ec2 启动配置发生任何更改。这在使用按需实例时效果很好。但是当我使用现场实例时,我得到以下错误:
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 实现这一目标?如果没有的话,有人可以指出一种更好的方法来自动化这个滚动更新过程,因为我有多个环境并且手动执行非常容易出错。谢谢
【问题讨论】:
【参考方案1】:在使用 Spot 实例时,您不能将 MinInstancesInService
设置为 0 以外的任何值,因为 Spot 实例可以随时终止,因此 AWS 无法保证在滚动期间保持服务的最少实例数更新。
但是,您可以将 UpdatePolicy 中的 MaxBatchSize
参数设置为 1,因此一次只会更新一个实例。为确保高可用性,您必须确保 AutoScalingGroup 中有 2 个或更多实例可用,否则滚动更新将终止您的单个实例,从而导致停机。
【讨论】:
以上是关于使用 Cloudformation 和 Spot 实例执行 RollingUpdate的主要内容,如果未能解决你的问题,请参考以下文章