自动扩缩组可用区转移 - Amazon EC2 Auto Scaling

自动扩缩组可用区转移

可用区转移是 Amazon 应用程序恢复控制器(ARC)中的一项功能。借助可用区转移,只需一次操作即可从可用区中的应用程序受损中快速恢复。当为自动扩缩组启用可用区转移时,该组将在 ARC 可用区转移服务中注册。然后,可以使用 AWS 管理控制台、AWS CLI 或 API 开始可用区转移,自动扩缩组会将处于活动可用区转移状态的可用区视为已受损。

自动扩缩组可用区转移概念

在继续操作之前,请确保熟悉与 ARC 可用区转移集成相关的以下核心概念。

ARC 可用区转移

启用这种功能后,Auto Scaling 会在 ARC 可用区转移中注册自动扩缩组。注册后,可使用 ARC ListManagedResources API 查看您的资源。有关更多信息,请参阅《Amazon 应用程序恢复控制器(ARC)开发人员指南》中的 ARC 中的可用区转移

重新平衡可用区

Auto Scaling 会尝试保持每个可用区域的容量处于平衡状态。当可用区之间出现不平衡时,Auto Scaling 会自动尝试修复这种不平衡问题。有关更多信息,请参阅 实例分配

动态扩展

动态扩缩根据您在扩缩策略中选择的指标,扩缩自动扩缩组的所需容量。有关更多信息,请参阅 Amazon EC2 Auto Scaling 的动态扩缩

运行状况检查

Auto Scaling 通过定期检查自动扩缩组中所有实例的运行状态,以确保所有实例都在运行并且运行正常。检测到运行状况不佳的实例时,Auto Scaling 会将其标为替换。有关更多信息,请参阅 自动扩缩组中实例的运行状况检查

实例刷新

您可以使用实例刷新以更新自动扩缩组中的实例。开始实例刷新后,Auto Scaling 会尝试替换自动扩缩组中的所有实例。有关更多信息,请参阅 使用实例刷新更新自动扩缩组中的实例

预缩放

单个可用区的损失是可以容忍的,因为剩余的可用区中有足够的容量供应用程序使用。

横向扩展

当增加自动扩缩组的所需容量时,Auto Scaling 会尝试额外启动其他实例来满足新的所需容量。默认情况下,Auto Scaling 会均衡地启动实例,以在自动扩缩组中每个启用的可用区之间保持相等的容量。

自动扩缩组可用区转移的工作原理

假设有一个包含以下可用区的自动扩缩组:

  • us-east-1a

  • us-east-1b

  • us-east-1c

所有可用区都启用了可用区转移,您注意到 us-east-1a 中出现故障,因此您触发了可用区转移。在 us-east-1a 中触发可用区转移时,会出现以下行为。

  • 横向扩展:Auto Scaling 将在运行状况良好的可用区(us-east-1bus-east-1c)中启动所有新的容量请求。

  • 动态扩缩:Auto Scaling 会阻止扩缩策略减少所有可用区中的所需容量。Auto Scaling 不会阻止扩缩策略增加所有可用区中的所需容量。

  • 实例刷新:Auto Scaling 会在可用区转移处于活动状态时,延长任何延迟的实例刷新过程的超时时间。

下表描述了各个选项在 us-east-1a 中触发可用区转移时的运行状况检查行为。

选择受损可用区运行状况检查行为 运行状况检查行为

替换运行状况不佳

所有可用区(us-east-1aus-east-1bus-east-1c)中显示运行状况不佳的实例将被替换。

忽略运行状况不佳

us-east-1bus-east-1c 中显示运行状况不佳的实例将被替换。处于活跃可用区转移状态的可用区 (us-east-1a) 中的实例不会被替换。

使用可用区转移的最佳实践

要在使用可用区转移时保持应用程序的高可用性,建议遵循以下最佳实践:

  • 监控 EventBridge 通知,确定何时出现持续的可用区损坏事件。有关更多信息,请参阅 使用 EventBridge 处理 Auto Scaling 事件

  • 使用具有适当阈值的扩缩策略,确保容量足以容忍可用区的损失。

  • 设置运行状况良好的百分比至少为 100% 的实例维护策略。进行这种设置之后,Auto Scaling 会等待新实例准备就绪,然后终止运行状况不佳的实例。

对于预缩放客户,我们还建议采取以下措施:

  • 选择忽略运行状况不佳作为受损可用区的运行状况检查行为,因为在受损事件期间无需更换运行状况不佳的实例。

  • 在 ARC 中为自动扩缩组使用可用区转移。借助于 ARC 中的可用区自动转移功能,AWS 可以在 AWS 检测到可用区受损时将资源的流量从某个可用区转移出去。有关更多信息,请参阅《Amazon 应用程序恢复控制器 (ARC) 开发人员指南》中的 ARC 中的可用区转移

对于使用跨区域禁用的负载均衡器的客户,我们还建议采取以下措施:

  • 在可用区分配中使用仅平衡

  • 如果同时对自动扩缩组和负载均衡器使用可用区转移,请先取消自动扩缩组的可用区转移。然后,等待所有可用区的容量实现平衡,然后再取消对负载均衡器的可用区转移。

  • 由于启用可用区转移并使用跨区域禁用的负载均衡器时可能会出现容量不平衡,因此 Auto Scaling 还纳入了一个额外的验证步骤。如果遵循最佳实践,可通过选中 AWS 管理控制台 复选框或在 CreateAutoScalingGroupUpdateAutoScalingGroupAttachTrafficSources 或中使用 skip-zonal-shift-validation 标志来确认这种可能性。

有关在自动扩缩组中使用可用区转移的更多信息,请参阅Amazon EC2 Auto Scaling 使用可用区转移的 AWS 计算博客。