如何使用打包器并与自动缩放组集成来更新自定义AMI



目标:保持实例负载平衡的最短启动时间,并减少故障排除时间。

方法:

  1. 为ec2实例创建基础自定义AMI
  2. 在每个版本和s/w补丁上更新/重新绑定自定义AMI(与健康运行的实例相关的代码和软件更新)。2.a.是否可以使用包装工/任何CI进行更新?如果是,如何?(在包装文件中找不到循序渐进的方法)
  3. 使用chef自动执行步骤1和步骤2
  4. 将此AMI集成到自动缩放组中(对此进行了实验)
  5. 将负载平衡器映射到ASG[done]
  6. 在发生故障时,通过在具有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和所有相关的实例。

最新更新