我们正在使用云形成为AWS EC2实例供电。我们有三个不同的堆栈-测试、阶段和生产。我们更新任何堆栈的图像的工作流程如下:
- 更新"黄金大师"实例
- 将黄金主机快照到磁盘映像
- 在我们的云形成配置中更改给定堆栈的ami引用(通过json文件),并将
update
更改为堆栈
这会减少堆栈中的实例,并为它们重新配置新的磁盘映像。
我们的测试或暂存堆栈没有任何问题,每个堆栈都包含一个ec2实例。每次更新时,图像都会被替换,没有问题。
我们的生产堆栈似乎没有以同样的方式工作:-(。它包含(至少)2个位于负载均衡器后面的实例。当我们以相同的方式更新此堆栈时,ec2实例不会立即刷新(即,更新完成后,框仍在从以前的磁盘映像运行)。好消息是,当负载均衡器自动缩放时,会使用新的图像。
负载平衡规则和云形成之间会有冲突吗?
任何见解都将不胜感激
OK-做了一些实验。您需要为缩放组定义一个更新策略。通过定义更新策略,启动配置中的任何更改都将触发更新。如果没有这一点,就不会触发更新。
你不需要ELB来触发滚动更新,但如果你有ELB,它也不会干扰它。
http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-attribute-updatepolicy.html
我们可以看看您的云形成脚本吗?关于elb+自动缩放,你可能是对的。
为了更新ami(没有云信息),我手动将自动缩放组的desiredCCapacity值增加一倍,并在新实例在ELB处于联机状态后将其设置回原来的值。
类似的策略可能可以用cloudformation 进行脚本化/配置