Auto Scaling
用户指南
AWS 服务或AWS文档中描述的功能,可能因地区/位置而异。点 击 Getting Started with Amazon AWS to see specific differences applicable to the China (Beijing) Region.

Auto Scaling 实例的运行状况检查

Auto Scaling 实例的运行状况有正常和不佳两种。一个实例在经过完全配置并通过初始运行状况检查后,将被 Auto Scaling 视为正常并进入 InService 状态。Auto Scaling 定期对 Auto Scaling 组中的实例执行运行状况检查并标识所有运行状况不佳的实例。Auto Scaling 在将一个实例标记为运行状况不佳后,会计划替换该实例。有关更多信息,请参阅 替换运行状况不佳的实例

实例运行状况

Auto Scaling 使用下列一项或多项检查来确定实例的运行状况:

默认情况下,Auto Scaling 运行状况检查使用 EC2 状态检查的结果来确定实例的运行状况。如果一个实例未通过一个或多个状态检查,Auto Scaling 会将该实例标记为运行状况不佳。

如果您已将一个负载均衡器或目标组附加到 Auto Scaling 组,则可对 Auto Scaling 进行配置,让它在 Elastic Load Balancing 报告某个实例 OutOfService 时将该实例标记为运行状况不佳。如果为负载均衡器启用了连接耗尽,则在由于扩展事件或运行状况检查替换而终止实例之前,Auto Scaling 会等待进行中的请求完成或等待最大超时过期 (以先到者为准)。有关更多信息,请参阅 结合使用 ELB 运行状况检查和 Auto Scaling

运行状况检查宽限期

通常,刚刚投入使用的 Auto Scaling 实例需要预热才能通过 Auto Scaling 运行状况检查。Auto Scaling 等运行状况检查宽限期结束才检查实例的运行状况。EC2 状态检查和 ELB 运行状况检查可以在运行状况检查宽限期过期前完成,但 Auto Scaling 直到运行状况检查宽限期过期后才执行这些检查。为了给实例提供足够的预热时间,请确保运行状况检查宽限期包含应用程序的预期启动时间。请注意,如果您通过添加生命周期挂钩在实例启动时执行操作,在完成生命周期挂钩并且实例进入 InService 状态后,运行状况检查宽限期才会启动。

自定义运行状况检查

如果您有自定义运行状况检查,则可以将运行状况检查的信息发送给 Auto Scaling,以便 Auto Scaling 能够利用此信息。例如,如果您确定实例未按预期运行,则可将实例的运行状况设置为 Unhealthy。Auto Scaling 下次对实例执行运行状况检查时,它将确定实例运行状况不佳,然后启动替换实例。

使用以下 set-instance-health 命令,将指定实例的运行状态设置为 Unhealthy

Copy
aws autoscaling set-instance-health --instance-id i-123abc45d –-health-status Unhealthy

使用以下 describe-auto-scaling-groups 命令验证实例状态是否为 Unhealthy

Copy
aws autoscaling describe-auto-scaling-groups --auto-scaling-group-names my-asg

下面是一个示例响应,说明实例的运行状况为 Unhealthy 并且实例正在终止:

{
    "AutoScalingGroups": [
        {
            ....
            "Instances": [
                {
                    "InstanceId": "i-123abc45d",
                    "AvailabilityZone": "us-west-2a",
                    "HealthStatus": "Unhealthy",
                    "LifecycleState": "Terminating",
                    "LaunchConfigurationName": "my-lc"
                },
                ...
            ]
        }
    ]
}