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