我正在使用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停机的情况下实现这一目标?如果没有,有人可以指出一种更好的方法来自动化这个滚动更新过程,因为我有多个环境并且手动操作非常容易出错。谢谢
使用spot实例时,不能将MinInstancesInService
设置为0以外的任何值,因为spot实例可以随时终止,因此AWS无法保证在滚动更新期间保持最小数量的实例。
但是,您可以将UpdatePolicy中的MaxBatchSize
参数设置为1,因此一次只能更新一个实例。要确保高可用性,必须确保AutoScalingGroup中有2个或更多实例可用,否则滚动更新将终止您的单个实例,从而导致停机。