如何在 AWS Auto Scaling 组中自动循环新映像?

21 amazon-ec2 amazon-web-services autoscaling

我有一个带有负载均衡器和自动缩放组的 Web 应用程序设置来管理缩放。源代码在 git 存储库中,因此我不必在代码更改时更新图像,但偶尔环境会发生变化,因此我们创建了一个新图像。然后需要将该图像循环到自动缩放组中。

有没有办法自动循环图像?现在我安排了一个放大和缩小操作来摆脱旧实例。

小智 10

我想建议“AWS-HA-Release”来做到这一点 - AWS-HA-Release 的工作方式:

  1. 如果当前的自动伸缩组和 ELB 报告了 5 个健康的实例,
  2. AWS-HA-Release 将一个新实例投入生产并等待 ELB 将其识别为健康(使健康实例总数达到 6)
  3. 删除旧实例(总共减少到 5 个)
  4. 将另一个实例投入使用(总共 6 个)
  5. 删除旧实例(总共减少到 5 个)
  6. 依此类推,直到所有实例都被替换

在这种情况下,您可以在不停机的情况下发布新代码或新 AMI 版本,并享受全新实例的好处。AWS-HA-Release 工具可从https://github.com/colinbjohnson/aws-missing-tools 获得


Ser*_*sov 10

更简单的方法是将 Auto-Scaling Group (ASG) 中的最小实例数增加到当前数量的两倍,等待所有实例都启动后,然后将最小实例数更改为原来的数量。ELB 将杀死较旧的实例,并留下带有代码的较新实例。要实现该终止策略应设置为“ OldestInstance ”以按预期工作。默认终止策略可能会产生不必要的副作用。

您可以在此处查看 AWS CLI 参数和示例:http : //docs.aws.amazon.com/cli/latest/reference/autoscaling/update-auto-scaling-group.html


Gra*_*eme 6

我管理这个场景的方法是在云形成中使用 AWS::AutoScaling::AutoScalingGroup 对象的 UpdatePolicy 功能。当云形成堆栈更新时,它将管理实例的循环。

一些参考。 http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-as-group.html http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-attribute-updatepolicy .html


bwi*_*ght 0

说实话,实际上并没有一个很好的方法。我发现最好的方法是在 ASG 名称中添加一个版本。每当我更新 AMI 时,我都会使用新版本创建新的 ASG + 启动配置,这样它就不会与其他组冲突。然后我终止旧组中的所有实例。

如果需要更具容错性的部署,我建议还添加另一个步骤,即创建新的负载均衡器。这允许您将两个 ASG 彼此隔离。它还允许您有一个“暂存”区域,以便在更新之前最后一次测试您的更改。然后,当您准备好进行切换时,您可以更新 DNS 记录并终止旧组中的所有实例。