

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 设置自动扩缩组的运行状况检查宽限期
<a name="health-check-grace-period"></a>

如果 Amazon EC2 Auto Scaling 运行状况检查确定某个 `InService` 实例运行不正常，则会将其终止并启动一个新的替换实例。运行状况检查宽限期指定了因新实例运行状况不正常而将其终止之前继续运行的最短时间（以秒为单位）。

一个示例用例可能是要求 Amazon EC2 Auto Scaling 避免在 Elastic Load Balancing 运行状况检查失败且原因是实例仍在初始化时采取行动。Elastic Load Balancing 运行状况检查并行运行，从实例向负载均衡器注册时开始。通过设置宽限期，可以防止 Amazon EC2 Auto Scaling 在您新启动的实例进入 `InService` 状态后，但没有立即通过这些运行状况检查时，不必要地将这些实例标记为 `Unhealthy` 并予以终止。

在控制台中，创建自动扩缩组时的运行状况检查宽限期默认为 300 秒。使用 AWS CLI 或 SDK 创建 Auto Scaling 组时，其默认值为 0 秒。值为 0 将关闭运行状况检查宽限期。

如果将该值设置过高，会降低 Amazon EC2 Auto Scaling 运行状况检查的效果。如果您为实例启动使用了生命周期挂钩，则可以将运行状况检查宽限期设置为 0。借助生命周期挂钩，Amazon EC2 Auto Scaling 提供了一种方法，可确保实例始终在完成初始化之后才会进入 `InService` 状态。有关更多信息，请参阅 [Amazon EC2 Auto Scaling 生命周期钩子](lifecycle-hooks.md)。

宽限期适用于以下实例：
+ 新启动的实例
+ 处于待机状态后重新投入运行的实例
+ 您手动附加到组的实例

**重要**  
在运行状况检查宽限期内，如果 Amazon EC2 Auto Scaling 检测到某个实例不再处于 Amazon EC2 `running` 状态，则会立即将该实例标记为`Unhealthy`并予以替换。例如，假设您停止了自动扩缩组中的某个实例，则该实例会被标记为`Unhealthy`并被替换。

## 设置组的运行状况检查宽限期
<a name="set-health-check-grace-period"></a>

您可以为新的和现有的自动扩缩组设置运行状况检查宽限期。

------
#### [ Console ]

**修改新组的运行状况检查宽限期**  
创建自动扩缩组时，在**配置高级选项**页面的**运行状况检查**、**运行状况检查宽限期**中输入相应的时间（单位为秒）。这是实例进入 `InService` 状态后，Amazon EC2 Auto Scaling 在检查其运行状况之前必须等待的时间。

------
#### [ AWS CLI ]

**修改新组的运行状况检查宽限期**  
将该`--health-check-grace-period`选项添加到[create-auto-scaling-group](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/autoscaling/create-auto-scaling-group.html)命令中。以下示例将为一个名为 `my-asg` 的新自动扩缩组配置运行状况检查宽限期，其值为 `60` 秒。

```
aws autoscaling create-auto-scaling-group --auto-scaling-group-name my-asg \
  --health-check-grace-period 60 ...
```

------

------
#### [ Console ]

**修改现有组的运行状况检查宽限期**

1. 在上打开 Amazon EC2 控制台 [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/)，然后从导航窗格中选择 A **uto Scaling Gro** ups。

1. 在屏幕顶部的导航栏中，选择您在其中创建了自动扩缩组的 AWS 区域 。

1. 选中 Auto Scaling 组旁边的复选框。

   这时将在页面底部打开一个拆分窗格。

1. 在 **Details (详细信息)** 选项卡上，选择 **Health checks (运行状况检查)**、**Edit (编辑)**。

1. 在 **Health check grace period**（运行状况检查宽限期）下，输入时间长短，单位为秒。这是实例进入 `InService` 状态后，Amazon EC2 Auto Scaling 在检查其运行状况之前必须等待的时间。

1. 选择**更新**。

------
#### [ AWS CLI ]

**修改现有组的运行状况检查宽限期**  
将该`--health-check-grace-period`选项添加到[update-auto-scaling-group](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/autoscaling/update-auto-scaling-group.html)命令中。以下示例将为一个名为 `my-asg` 的现有自动扩缩组配置运行状况检查宽限期，其值为 `120` 秒。

```
aws autoscaling update-auto-scaling-group --auto-scaling-group-name my-asg \
  --health-check-grace-period 120
```

------

**注意**  
我们强烈建议同时为您的自动扩缩组设置默认实例预热时间。有关更多信息，请参阅 [为 Auto Scaling 组设置原定设置实例预热](ec2-auto-scaling-default-instance-warmup.md)。