本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
关于自动扩缩组的运行状况检查
本主题概述了可用的运行状况检查类型,并介绍了将 Amazon A EC2 uto Scaling 运行状况检查与您的应用程序集成的关键注意事项。
内容
运行状况检查类型
Amazon A EC2 uto Scaling 可以使用以下一项或多项运行状况检查来确定InService
实例的运行状况:
运行状况检查类型 | 检查内容 |
---|---|
Amazon EC2 状态检查和预定活动 |
这是自动扩缩组的默认运行状况检查类型。 |
Elastic Load Balancing 运行状况检查 |
要运行这种运行状况检查类型,您必须为自己的 Auto Scaling 组将其打开。 |
VPC莱迪思健康检查 |
要运行这种运行状况检查类型,您必须为自己的 Auto Scaling 组将其打开。 |
Amazon EBS 健康检查 |
要运行这种运行状况检查类型,您必须为自己的 Auto Scaling 组将其打开。 |
自定义运行状况检查 |
|
Amazon EC2 健康检查
实例启动后,它会附加到自动扩缩组并进入 InService
状态。要详细了解 Auto Scaling 组中实例的不同生命周期状态,请参阅 Amazon A EC2 uto Scaling 实例生命周期。
Amazon A EC2 uto Scaling 会定期检查 Auto Scaling 组内所有实例的运行状况,以确保它们正在运行且状态良好。
状态检查
Amazon A EC2 uto Scaling 使用亚马逊EC2实例状态检查和系统状态检查的结果来确定实例的运行状况。如果该实例处于除之外的任何 Amazon EC2 状态running
,或者其状态检查状态变为impaired
,则 Amazon A EC2 uto Scaling 会认为该实例运行状况不佳并替换它。这包括当实例为任何以下状态时:
-
stopping
-
stopped
-
shutting-down
-
terminated
Amazon EC2 状态检查不需要任何特殊配置,并且始终处于启用状态。有关更多信息,请参阅 Amazon EC2 用户指南中的状态检查类型。
重要
Amazon A EC2 uto Scaling 允许状态检查偶尔失败,无需采取任何措施。当状态检查失败时,Amazon A EC2 uto Scaling 会等待几分钟 AWS 才能修复问题。它不会在状态检查的状态变为 impaired
时立即将实例标记为 Unhealthy
。
但是,如果 Amazon A EC2 uto Scaling 检测到某个实例不再处于该running
状态,则这种情况将被视为立即出现故障。在这种情况下,它会立即将实例标记为Unhealthy
并替换它。
计划的事件
Amazon 偶尔EC2会将您的实例上的事件安排在特定时间戳之后运行。有关更多信息,请参阅 Amazon EC2 用户指南中的实例计划事件。
如果您的一个实例受到计划事件的影响,Amazon A EC2 uto Scaling 会认为该实例运行状况不佳并替换它。直到到达时间戳中指定的日期和时间后,实例才会开始关闭。
Elastic Load Balancing 运行状况检查
当您为 Auto Scaling 组启用 Elastic Load Balancing 运行状况检查时,Amazon A EC2 uto Scaling 可以使用这些运行状况检查的结果来确定实例的运行状况。
在为 Auto Scaling 组启用 Elastic Load Balancing 运行状况检查之前,您必须配置 Elastic Load Balancing 负载均衡器并为其配置运行状况检查以确定您的实例是否运行正常。有关更多信息,请参阅 准备连接 Elastic Load Balancing 负载均衡器。
将负载均衡器连接到 Auto Scaling 组后,会发生以下情况:
-
Amazon A EC2 uto Scaling 将 Auto Scaling 组中的实例注册到负载均衡器。
-
实例完成注册后,它会进入
InService
状态并可与该负载均衡器一起使用。
默认情况下,Amazon A EC2 uto Scaling 会忽略 Elastic Load Balancing 运行状况检查的结果。在您为 Auto Scaling 组开启这些运行状况检查后,当 Elastic Load Balancing 将注册的实例报告为时Unhealthy
,Amazon A EC2 uto Scaling 会将该实例Unhealthy
标记为下一次定期运行状况检查并替换该实例。
如果您的负载均衡器启用了连接耗尽(取消注册延迟),Amazon A EC2 uto Scaling 会等待运行中请求完成或最大超时到期,然后才会终止运行状况不佳的实例。
注意
有关如何连接负载均衡器以及如何为 Auto Scaling 组启用 Elastic Load Balancing 运行状况检查的说明,请参阅将 Elastic Load Balancing 负载均衡器附加到您的 Auto Scaling 组。
当您为组启用 Elastic Load Balancing 运行状况检查时,Amazon A EC2 uto Scaling 可以替换 Elastic Load Balancing 报告为运行状况不佳的实例,但前提是负载均衡器处于该InService
状态。有关更多信息,请参阅 验证负载均衡器的附加状态。
VPC莱迪思健康检查
默认情况下,Amazon A EC2 uto Scaling 会忽略VPC莱迪思运行状况检查的结果。您可以选择为自己的 Auto Scaling 组开启这些运行状况检查。执行此操作后,当VPC莱迪思将已注册的实例报告为时Unhealthy
,Amazon A EC2 uto Scaling 会将该实例Unhealthy
标记为下一次定期运行状况检查并替换该实例。注册实例然后检查其运行状况的过程与 Elastic Load Balancing 运行状况检查的过程相同。
注意
有关如何关联VPC莱迪思目标组以及如何为Auto Scaling组开启VPC莱迪思运行状况检查的说明,请参阅。将VPC莱迪思目标群组附加到您的 Auto Scaling 群组
当您为群组开启VPC莱迪思运行状况检查时,Amazon A EC2 uto Scaling 可以替换VPC莱迪思报告为运行状况不佳的实例,但前提是目标群组处于该状态。InService
有关更多信息,请参阅 验证您的VPC莱迪思目标群体的连接状态。
Amazon A EC2 uto Scaling 如何最大限度地减少停机时间
默认情况下,新实例是在终止现有实例的同时配置的,这可能会阻止新请求在新实例完全运行之前被接受。
如果 Amazon A EC2 uto Scaling 确定任何实例已停止运行(或者已Unhealthy
使用set-instance-health命令标记这些实例),它将立即替换这些实例。但是,如果发现其他实例运行状况不佳,Amazon A EC2 uto Scaling 将使用以下方法从故障中恢复。这种方法可尽可能减少可能因临时问题或运行状况检查配置错误导致的任何停机时间。
-
如果扩展活动正在进行中,并且您的 Auto Scaling 组的容量少于其所需容量 10% 或更多,则 Amazon A EC2 uto Scaling 会等待正在进行的扩展活动,然后再替换运行状况不佳的实例。
-
扩展时,Amazon A EC2 uto Scaling 会等待实例通过初始运行状况检查。它还会等待默认实例预热完成,以确保新实例准备就绪。
-
在实例完成预热并且该组已达到所需容量的 90% 以上之后,Amazon A EC2 uto Scaling 会按如下方式替换运行状况不佳的实例:
-
Amazon A EC2 uto Scaling 一次最多只能替换该群组所需容量的10%。它将在所有运行不正常的实例都被替换之前持续这样操作。
-
在替换实例时,它会等待新实例通过初始运行状况检查。它还会等待默认的实例预热期结束,然后再继续操作。
-
注意
如果 Auto Scaling 组的大小足够小,结果值 10% 小于 1,则 Amazon A EC2 uto Scaling 会逐一替换运行状况不佳的实例。这可能会导致该组出现短暂停机。
此外,如果 Elastic Load Balancing 运行状况检查报告某个 Auto Scaling 组中的所有实例都运行状况不佳,并且负载均衡器处于该InService
状态,那么 Amazon A EC2 uto Scaling 一次可能会将较少的实例标记为运行状况不佳。这可能会导致一次替换的实例数量少于在其他场景中执行的 10% 这一比例。这使您有时间修复问题,而不会让 Amazon A EC2 uto Scaling 自动终止整个群组。
Health 检查温池中实例的运行状况
Amazon A EC2 uto Scaling 还会对温池中的实例执行运行状况检查。有关更多信息,请参阅 查看运行状况检查状态以及运行状况检查失败的原因。
运行状况检查注意事项
以下是使用 Amazon A EC2 uto Scaling 运行状况检查时的注意事项。
-
如果您需要在正在终止的实例上或正在启动的实例上执行某些操作,则可以使用生命周期钩子。这些挂钩允许您在 Amazon A EC2 uto Scaling 启动或终止实例时执行自定义操作。有关更多信息,请参阅 Amazon EC2 Auto Scaling 生命周期钩子。
-
Amazon A EC2 uto Scaling 不提供从其运行EC2状况检查中删除亚马逊状态检查和计划事件的方法。如果您不想替换实例,则建议暂停任何单个 Auto Scaling 组的
ReplaceUnhealthy
和HealthCheck
进程。有关更多信息,请参阅 暂停和恢复 Amazon A EC2 uto Scaling 流程。 -
要手动将运行状况不佳的实例的健康状态设置回原为
Healthy
,您可以尝试使用set-instance-health命令。如果您收到错误消息,则可能是因为该实例已经开始终止。通常,只有在ReplaceUnhealthy
进程或进程暂停的情况下,Healthy
使用set-instance-health命令将实例的运行状况重新设置为才有用。Terminate
-
如果您需要在不受运行状况检查干扰的情况下对实例进行故障排除,则可以将该实例置于
Standby
状态。在您恢复使用Standby
状态之前,Amazon A EC2 uto Scaling 不会对处于该状态的实例执行运行状况检查。有关更多信息,请参阅 临时从 Auto Scaling 组中移除实例。 -
实例终止后,任何关联的弹性 IP 地址都会取消关联,并且不会自动与新实例关联。必须手动将弹性 IP 地址关联到新实例,或者使用基于生命周期挂钩的解决方案自动完成关联。有关更多信息,请参阅 Amazon EC2 用户指南中的弹性 IP 地址。
-
同样,当您的实例终止时,其连接的EBS卷将被分离(或根据卷的
DeleteOnTermination
属性删除)。您必须手动将这些EBS卷连接到新实例,或者使用基于生命周期挂钩的解决方案自动连接这些卷。有关更多信息,请参阅《亚马逊EBS用户指南》中的将亚马逊EBS卷附加到实例。