

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

# 网络负载均衡器目标组的运行状况检查
<a name="target-group-health-checks"></a>

您可以将目标注册到一个或多个目标组中。只要注册过程完成且新注册的目标通过初始运行状况检查，负载均衡器就会开始将请求路由至此目标。完成注册过程和开始运行状况检查可能需要几分钟时间。

网络负载均衡器使用主动和被动的运行状况检查，以确定目标是否可用于处理请求。默认情况下，每个负载均衡器节点仅将请求路由到其可用区中运行状况良好的目标。如果您启用跨区域负载均衡，则每个负载均衡器节点都会将请求路由到所有已启用的可用区中运行状况良好的目标。有关更多信息，请参阅 [跨可用区负载均衡](network-load-balancers.md#cross-zone-load-balancing)。

借助被动的运行状况检查，负载均衡器观察目标如何响应连接。借助被动的运行状况检查，负载均衡器能够在主动的运行状况检查报告目标运行状况不佳之前，检测出此运行状况不佳的目标。您无法禁用、配置或监视被动运行状况检查。UDP 流量和已开启粘性的目标组不支持被动运行状况检查。有关更多信息，请参阅[粘性会话](edit-target-group-attributes.md#sticky-sessions)。

如果目标运行不正常，除非运行不正常的目标触发了负载均衡器故障断开，否则负载均衡器会为关联到目标的客户端连接上收到的数据包发送 TCP RST。

如果目标组在已启用的可用区中没有运行状况良好的目标，我们会从 DNS 中删除相应子网的 IP 地址，以便请求无法路由到该可用区中的目标。如果在所有已启用的可用区中，所有目标同时未通过运行状况检查，则负载均衡器将在失败时开放。当目标组为空时，网络负载均衡器也将无法打开。失败时开放的效果是允许传输到所有已启用的可用区中的所有目标的流量，而不考虑这些目标的运行状况。

如果目标组配置了 HTTPS 运行状况检查，则如果其注册目标仅支持 TLS 1.3，则无法通过运行状况检查。这些目标必须支持 TLS 的早期版本，例如 TLS 1.2。

对于 HTTP 或 HTTPS 运行状况检查请求，主机标头包含负载均衡器节点和侦听器端口的 IP 地址，但不包含目标和运行状况检查端口的 IP 地址。

如果您将 TLS 侦听器添加到网络负载均衡器，我们将执行侦听器连接性测试。由于 TLS 终止也会终止 TCP 连接，因此在负载均衡器和目标之间建立新的 TCP 连接。因此，您可能会看到此测试的 TCP 连接从负载均衡器发送到向 TLS 侦听器注册的目标。您可以识别这些 TCP 连接，因为它们具有网络负载均衡器的源 IP 地址，并且连接不包含数据包。

对于 UDP 和 QUIC 服务，可以对目标组执行非 UDP 运行状况检查来测试目标可用性。您可以通过任何可用的运行状况检查（TCP、HTTP 或 HTTPS）和目标上的任何端口来验证您服务的可用性。如果接收运行状况检查的服务失败，则目标会视为不可用。要提高针对您的服务进行运行状况检查的准确性，如果服务不可用，请配置侦听运行状况检查端口的服务，以跟踪您的 UDP 或 QUIC 服务的状态，并停止运行状况检查。

有关更多信息，请参阅 [目标组运行状况](load-balancer-target-groups.md#target-group-health)。

**Topics**
+ [运行状况检查设置](#health-check-settings)
+ [目标运行状况](#target-health-states)
+ [运行状况检查原因代码](#target-health-reason-codes)
+ [检查目标运行状况](check-target-health.md)
+ [更新运行状况检查设置](modify-health-check-settings.md)

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

可以使用以下设置为目标组中的目标配置主动的运行状况检查。如果运行状况检查超过**UnhealthyThresholdCount**连续失败次数，则负载均衡器会使目标停止服务。当运行状况检查超过**HealthyThresholdCount**连续成功率时，负载均衡器会将目标重新投入使用。


| 设置 | 说明 | 默认 | 
| --- | --- | --- | 
| **HealthCheckProtocol** | 对目标执行运行状况检查时负载均衡器使用的协议。可能的协议有 HTTP、HTTPS 和 TCP。默认值为 TCP 协议。如果目标类型为 `alb`，支持的运行状况检查协议为 HTTP 和 HTTPS。 | TCP | 
| **HealthCheckPort** | 对目标执行运行状况检查时负载均衡器使用的端口。默认设置是使用每个目标用来从负载均衡器接收流量的端口。 | 每个目标用来从负载均衡器接收流量的端口。 | 
| **HealthCheckPath** | [HTTP/HTTPS 运行状况检查] 进行运行状况检查的目标上的目的地的运行状况检查路径。默认值为 /。 |  / | 
| **HealthCheckTimeoutSeconds** | 以秒为单位的时间长度，在此期间内，没有来自目标的响应意味着无法通过运行状况检查。范围为 2–120 秒。HTTP 运行状况检查时间的默认值为 6 秒，TCP 和 HTTPS 运行状况检查时间的默认值为 10 秒。 | HTTP 运行状况检查需要 6 秒，TCP 和 HTTPS 运行状况检查需要 10 秒。 | 
| **HealthCheckIntervalSeconds** | 各个目标的运行状况检查之间的大约时间量 (以秒为单位)。范围为 5–300 秒。默认值为 30 秒。<br />网络负载均衡器的运行状况检查是分布式的，使用共识机制来确定目标运行状况。因此，目标可以接收超过所配置数量的运行状况检查。要在使用 HTTP 运行状况检查时减少对目标的影响，请在目标上使用更简单的目标（例如，静态 HTML 文件）或切换到 TCP 运行状况检查。 | 30 秒 | 
| **HealthyThresholdCount** | 将不正常目标视为正常运行之前所需的连续运行状况检查成功次数。范围为 2–10。默认值为 5。 | 5 | 
| **UnhealthyThresholdCount** | 将目标视为不正常之前所需的连续运行状况检查失败次数。范围为 2–10。默认值为 2。 | 2 | 
| **Matcher** | [HTTP/HTTPS 运行状况检查] 检查来自目标的成功响应时使用的 HTTP 代码。范围为 200 至 599。默认值为 200-399。 | 200-399 | 

## 目标运行状况
<a name="target-health-states"></a>

在负载均衡器向目标发送运行状况检查请求之前，您必须将目标注册到目标组，在侦听器规则中指定其目标组，并确保已为负载均衡器启用目标的可用区。

下表描述已注册目标的正常状态的可能值。


| 值 | 说明 | 
| --- | --- | 
| `initial` | 负载均衡器正处于注册目标或对目标执行初始运行状况检查的过程中。<br />相关原因代码：`Elb.RegistrationInProgress` \| `Elb.InitialHealthChecking` | 
| `healthy` | 目标正常。<br />相关原因代码：无 | 
| `unhealthy` | 目标未响应运行状况检查，未通过运行状况检查，或目标处于停止状态。<br />相关原因代码：`Target.FailedHealthChecks` | 
| `draining` | 目标正在取消注册，连接即将耗尽。<br />相关原因代码：`Target.DeregistrationInProgress` | 
| `unhealthy.draining` | 目标未响应运行状况检查或未通过运行状况检查并进入宽限期。目标支持现有连接，且在此宽限期内不接受任何新连接。<br />相关原因代码：`Target.FailedHealthChecks` | 
| `unavailable` | 目标运行状况不可用。<br />相关原因代码：`Elb.InternalError` | 
| `unused` | 目标未注册到目标组，侦听器规则中未使用目标组，或者目标在未启用的可用区中。<br />相关原因代码：`Target.NotRegistered` \|`Target.NotInUse` \|`Target.InvalidState` \|`Target.IpUnusable`  | 

## 运行状况检查原因代码
<a name="target-health-reason-codes"></a>

如果目标的状态是 `Healthy` 以外的任何值，API 将返回问题的原因代码和描述，并且控制台将在工具提示中显示相同的描述。请注意，以 `Elb` 开头的原因代码源自负载均衡器端，以 `Target` 开头的原因代码源自目标端。


| 原因代码 | 说明 | 
| --- | --- | 
| `Elb.InitialHealthChecking` | 正在进行初始运行状况检查 | 
| `Elb.InternalError` | 由于内部错误，运行状况检查失败 | 
| `Elb.RegistrationInProgress` | 目标注册正在进行中 | 
| `Target.DeregistrationInProgress` | 目标取消注册正在进行中 | 
| `Target.FailedHealthChecks` | 运行状况检查失败 | 
| `Target.InvalidState` | 目标处于停止状态<br />目标处于终止状态<br />目标处于终止或停止状态<br />目标处于无效状态 | 
| `Target.IpUnusable` | 该 IP 地址正被负载均衡器使用，因此无法用作目标 | 
| `Target.NotInUse` | 目标组没有被配置为接收来自负载均衡器的流量<br />目标处于没有为负载均衡器启用的可用区 | 
| `Target.NotRegistered` | 目标未注册到目标组 | 