目标:保持实例负载平衡的最短启动时间,并减少故障排除时间。
方法:
- 为ec2实例创建基础自定义AMI
- 在每个版本和s/w补丁上更新/重新绑定自定义AMI(与健康运行的实例相关的代码和软件更新)。2.a.是否可以使用包装工/任何CI进行更新?如果是,如何?(在包装文件中找不到循序渐进的方法)
- 使用chef自动执行步骤1和步骤2
- 将此AMI集成到自动缩放组中(对此进行了实验)
- 将负载平衡器映射到ASG[done]
- 在发生故障时,通过在具有LB的ASG中从更新的AMI中调出实例来保持所需的实例数
Crux:终止不健康的实例,并使用ami尽快启动健康的实例。
--第S页:我浏览了许多来自[http://blog.kik.com/2016/03/09/using-packer-io-to-optimize-and-manage-ami-creation/]以及https://alestic.com/.
使用docker已不再讨论
但仍然无法找到一个明确的方法来做到这一点
在现有ASG中交换新AMI的最简单方法是更新启动配置,然后逐个使用旧AMI ID杀死任何实例。ASG将根据需要带来新实例,这些实例应该使用新AMI。如果你想变得更高级(比如让旧实例保持活动状态以快速回滚),请查看Spinnaker等工具,它会将每个新的AMI作为一个新的对应ASG,然后在没有检测到问题的情况下重新映射ELB以交换流量,然后当你确定部署良好时,它会杀死旧的ASG和所有相关的实例。