

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

# 对经典负载均衡器中的实例执行运行状况检查
<a name="elb-healthchecks"></a>

您的经典负载均衡器会定期向其注册实例发送请求以测试其状态。这些测试称为*运行状况检查*。在执行运行状况检查时，运行状况良好的实例的状态为 `InService`。在执行运行状况检查时，运行状况不佳的任何实例的状态为 `OutOfService`。负载均衡器会对所有已注册实例执行运行状况检查，无论实例处于运行状况良好状态还是不佳状态。

负载均衡器仅将请求路由到正常的实例。当负载均衡器确定某个实例不正常时，会停止将请求路由到该实例。当实例恢复正常状态时，负载均衡器将恢复向该实例路由请求。

负载均衡器使用 Elastic Load Balancing 提供的默认运行状况检查配置，或使用您配置的运行状况检查配置检查已注册实例的运行状况。

如果您已将 Auto Scaling 组与经典负载均衡器关联，则可以使用负载均衡器运行状况检查确定 Auto Scaling 组中的实例的运行状况。默认情况下，Auto Scaling 组会定期确定每个实例的运行状况。有关更多信息，请参阅 *Amazon Auto Scaling 用户指南中的将 Elastic Load Balancing 运行状况检查添加到您的 A EC2 uto Scaling* [群组](https://docs.amazonaws.cn/autoscaling/ec2/userguide/attach-load-balancer-asg.html)。

**Topics**
+ [运行状况检查配置](#health-check-configuration)
+ [更新运行状况检查配置](#update-health-check-config)
+ [检查实例的运行状况](#check-instance-health)
+ [根据运行状况检查进行故障排除](#troubleshoot-health-checks)

## 运行状况检查配置
<a name="health-check-configuration"></a>

运行状况配置包含负载均衡器用于确定已注册实例的运行状况的信息。下表介绍了运行状况检查配置字段。


| 字段 | 描述 | 
| --- | --- | 
| 协议 | 连接到实例所使用的协议。<br />有效值：`TCP`、`HTTP`、`HTTPS` 和 `SSL`<br />控制台默认值：`HTTP`<br />CLI/API 默认值：`TCP` | 
| 端口 | 用于以 `protocol:port` 对的形式连接实例的端口。如果负载均衡器在配置的响应超时期内未能在指定端口上与实例连接，则将实例视为运行状况不佳。<br />协议：`TCP`、`HTTP`、`HTTPS` 和 `SSL`<br />端口范围：1 至 65535<br />控制台默认值：`HTTP:80`<br />CLI/API 默认值：`TCP:80` | 
| 路径 | HTTP 或 HTTPS 请求的目标。<br />在端口和路径上向实例发出 HTTP 或 HTTPS GET 请求。如果负载均衡器在响应超时期内收到“200 OK”之外的任何响应，则会将实例视为运行状况不佳。如果响应包括正文，则应用程序必须将 Content-Length 标头设置为大于等于零的值，或者指定其值设置为“chunked”的 Transfer-Encoding。<br />默认值：`/index.html` | 
| 响应超时 | 接收来自运行状况检查的响应时要等待的时间 (秒)。<br />有效值：2 至 60<br />默认值：5 | 
| HealthCheck 间隔 | 单个实例的运行状况检查之间的时间量 (秒)。<br />有效值：5 至 300<br />默认值：30 | 
| 不正常阈值 | 在宣布EC2 实例运行状况不佳之前必须连续失败的运行状况检查次数。<br />有效值：2 至 10<br />默认值：2 | 
| 正常阈值 | 在宣布EC2 实例运行正常之前必须连续成功进行运行状况检查的次数。<br />有效值：2 至 10<br />默认值：10 | 

负载均衡器使用指定的端口、协议和路径，每 `Interval` 秒向每个已注册的实例发送一次运行状况检查请求。每个运行状况检查请求都是独立的，并且在整个时间间隔内持续。等待实例响应所花费的时间不会影响下次运行状况检查的时间间隔。如果运行状况检查超过**UnhealthyThresholdCount**连续失败次数，则负载均衡器会使该实例停止服务。当运行状况检查超过**HealthyThresholdCount**连续成功率时，负载均衡器会将实例重新投入使用。

如果实例在 HTTP/HTTPS 运行状况检查间隔内返回 200 响应码，则运行状况检查成功。如果 TCP 连接成功，则 TCP 运行状况检查成功。如果 SSL 握手成功，则 SSL 运行状况检查成功。

## 更新运行状况检查配置
<a name="update-health-check-config"></a>

您可随时更新负载均衡器的运行状况检查配置。

**使用控制台更新负载均衡器的运行状况检查配置**

1. 打开 Amazon EC2 控制台，网址为[https://console.aws.amazon.com/ec2/](https://console.amazonaws.cn/ec2/)。

1. 在导航窗格上的 **Load Balancing**（负载均衡）下，选择 **Load Balancers**（负载均衡器）。

1. 选择负载均衡器的名称以打开其详细信息页面。

1. 在 **Health checks** 选项卡上，选择 **Edit**。

1. 在**编辑运行状况检查设置**页面的**运行状况检查**下，根据需要更新配置。

1. 确定选择无误之后，选择**保存更改**。

**要更新负载均衡器的运行状况检查配置，请使用 Amazon CLI**  
使用以下 [configure-health-check](https://docs.amazonaws.cn/cli/latest/reference/elb/configure-health-check.html) 命令：

```
aws elb configure-health-check --load-balancer-name {{my-load-balancer}} --health-check Target={{HTTP:80/path}},Interval={{30}},UnhealthyThreshold={{2}},HealthyThreshold={{2}},Timeout={{3}}
```

## 检查实例的运行状况
<a name="check-instance-health"></a>

您可检查已注册实例的运行状况。

**使用控制台检查实例的运行状况**

1. 打开 Amazon EC2 控制台，网址为[https://console.aws.amazon.com/ec2/](https://console.amazonaws.cn/ec2/)。

1. 在导航窗格上的 **Load Balancing**（负载均衡）下，选择 **Load Balancers**（负载均衡器）。

1. 选择负载均衡器的名称以打开其详细信息页面。

1. 在**详细信息**部分中，**状态**将指示使用中的实例数量。

1. 在**目标实例**选项卡的**目标实例**表内，**运行状态**列将指示每个已注册实例的具体状态。

**要使用检查您的实例的运行状况 Amazon CLI**  
使用以下 [describe-instance-health](https://docs.amazonaws.cn/cli/latest/reference/elb/describe-instance-health.html) 命令：

```
aws elb describe-instance-health --load-balancer-name {{my-load-balancer}}
```

## 根据运行状况检查进行故障排除
<a name="troubleshoot-health-checks"></a>

已注册的实例可能因多种原因无法通过负载均衡器运行状况检查。运行状况检查失败的最常见原因是 EC2 实例关闭了与您的负载均衡器的连接，或者 EC2 实例的响应超时。有关失败的运行状况检查问题的可能原因以及您可以采取的解决问题的措施的信息，请参阅 [对经典负载均衡器进行故障排除：运行状况检查](ts-elb-healthcheck.md)。