在 Auto Scaling 组中,确保在给定的可用区中至少有一个 ec2 实例始终可用
Posted
技术标签:
【中文标题】在 Auto Scaling 组中,确保在给定的可用区中至少有一个 ec2 实例始终可用【英文标题】:In an auto scaling group make sure atleast one ec2 instance is always available in a given availability zone 【发布时间】:2020-11-29 14:36:42 【问题描述】:我的情况是有一个健康的 ec2 实例一直在特定的可用区运行。
ec2 Auto Scaling 组中是否有一个选项可以确保给定的可用区(比如说 ap-southeast-2b)在横向扩展和横向扩展期间始终包含至少一个健康的 ec2 实例?
谢谢, 阿维纳什
【问题讨论】:
【参考方案1】:当 Auto Scaling 启动新实例时,它会尝试平衡可用区。因此,它将在 Auto Scaling 组中实例数量最少的 AZ 中启动一个新实例。如果它们都包含相同的数量,则将随机选择 AZ。
当 Auto Scaling 由于缩减策略终止实例时,它首先从 Auto Scaling 组中选择运行实例数量最多的可用区。然后它将终止该 AZ 中的一个实例。如果所有 AZ 的实例数相同,则随机选择一个 AZ。
在选定的可用区中,它将根据终止策略选择要终止的实例。见:Controlling Which Auto Scaling Instances Terminate During Scale In - Amazon EC2 Auto Scaling
如果您想确保“在给定的 AZ 中至少有一个 EC2 实例始终可用”,那么您需要确保 Auto Scaling 组中有足够的实例来覆盖所有 配置的可用区。例如,如果 Auto Scaling 组配置了两个可用区,则将组的最小大小设置为2
。这将确保两个 AZ 都有实例。
还有Instance Scale-In Protection可以将实例标记为“受保护”,使其不会被终止。但是,这不一定适合您的情况,因为每当替换实例时都需要对其进行标记。它旨在用于非常特殊的情况。
【讨论】:
感谢您的回复,约翰。我将在白天向外扩展 4 到 2 个实例。因此,在我的情况下,将 Auto Scaling 组限制为 2 个可用区可能是一种解决方法。 是的,可以。两个可用区足以实现高可用性。一般规则是“不要有任何东西。”以上是关于在 Auto Scaling 组中,确保在给定的可用区中至少有一个 ec2 实例始终可用的主要内容,如果未能解决你的问题,请参考以下文章
如何在 CloudFormation 模板中禁用对 Auto Scaling 组中实例的详细监控?
网络负载均衡器目标组中的 AWS Auto Scaling 目标