Auto Scaling
用户指南
AWS 服务或AWS文档中描述的功能,可能因地区/位置而异。请点击 Amazon AWS 入门,可查看中国地区的具体差异

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"
                },
                ...
            ]
        }
    ]
}