我有一个 Web 应用程序设置,其中包含负载均衡器和自动缩放组来管理缩放。源代码位于 git 存储库中,因此当代码更改时我不必更新图像,但偶尔环境会发生变化,因此我们会创建一个新图像。然后需要将该图像循环到自动缩放组中。
有没有办法自动循环播放图片?现在我安排了一个扩大和缩小的操作来清除旧实例。
答案1
我建议使用“AWS-HA-Release”来执行此操作 - AWS-HA-Release 的工作方式:
- 如果当前自动扩展组和 ELB 报告 5 个实例处于健康状态,
- AWS-HA-Release 将新实例投入生产并等待 ELB 将其标识为健康(使健康实例总数达到 6 个)
- 删除旧实例(总数降至 5 个)
- 使另一个实例投入使用(总数为 6 个)
- 删除旧实例(总数降至 5 个)
- 依此类推,直到所有实例都被替换
在这种情况下,您可以发布新代码或新 AMI 版本而无需停机,并享受全新实例的好处。AWS-HA-Release 工具可从以下位置获取:https://github.com/colinbjohnson/aws-missing-tools。
答案2
更简单的方法是将 Auto-Scaling Group (ASG) 中的最小实例数增加到当前数量的两倍,等待所有实例启动后再将最小实例数更改为原来的值。ELB 将终止较旧的实例,并保留带有代码的较新的实例。要实现此目的,终止策略应设置为“最旧实例' 才能按预期工作。默认终止策略可能会产生不良副作用。
您可以在此处查看 AWS CLI 参数和示例: http://docs.aws.amazon.com/cli/latest/reference/autoscaling/update-auto-scaling-group.html
答案3
我管理这种情况的方式是使用云形成中的 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
答案4
自 2020 年 6 月 16 日起,EC2 AutoScaling 支持实例刷新 - 只需一个 API 调用即可安全、自主地替换 ASG 中的每个实例。
要使用它,请更新您的 ASG,设置包含所需 AMI 的启动配置或启动模板,然后调用 StartInstanceRefresh。
https://aws.amazon.com/blogs/compute/introducing-instance-refresh-for-ec2-auto-scaling/