

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

# 网络负载均衡器的目标组
<a name="load-balancer-target-groups"></a>

每个*目标组*均用于将请求路由到一个或多个已注册的目标。创建侦听器时，您为其默认操作指定目标组。流量将转发到在侦听器规则中指定的目标组。您可以为不同类型的请求创建不同的目标组。例如，为一般请求创建一个目标组，为应用程序的微服务请求创建其他目标组。有关更多信息，请参阅 [网络负载均衡器组件](introduction.md#network-load-balancer-components)。

您基于每个目标组定义负载均衡器的运行状况检查设置。每个目标组均使用默认运行状况检查设置，除非您在创建目标组时将其覆盖或稍后对其进行修改。在侦听器规则中指定一个目标组后，负载均衡器将持续监控已注册到该目标组的所有目标 (这些目标位于已为负载均衡器启用的可用区中) 的运行状况。负载均衡器将请求路由到正常运行的已注册目标。有关更多信息，请参阅 [网络负载均衡器目标组的运行状况检查](target-group-health-checks.md)。

**Topics**
+ [路由配置](#target-group-routing-configuration)
+ [Target type](#target-type)
+ [IP 地址类型](#target-group-ip-address-type)
+ [已注册目标](#registered-targets)
+ [目标组属性](#target-group-attributes)
+ [目标组运行状况](#target-group-health)
+ [创建目标组](create-target-group.md)
+ [更新运行状况设置](modify-target-group-health-settings.md)
+ [配置运行状况检查](target-group-health-checks.md)
+ [编辑目标组属性](edit-target-group-attributes.md)
+ [注册目标](target-group-register-targets.md)
+ [使用应用程序负载均衡器作为目标](application-load-balancer-target.md)
+ [标记目标组](target-group-tags.md)
+ [删除目标组](delete-target-group.md)

## 路由配置
<a name="target-group-routing-configuration"></a>

默认情况下，负载均衡器会使用您在创建目标组时指定的协议和端口号将请求路由到其目标。此外，您可以覆盖在将目标注册到目标组时用于将流量路由到目标的端口。

网络负载均衡器的目标组支持以下协议和端口：
+ **协议**：TCP、TLS、UDP TCP\$1UDP、QUIC、TCP\$1QUIC
+ **端口**：1-65535

如果目标组使用 TLS 协议配置，则负载均衡器将使用您在目标上安装的证书与目标建立 TLS 连接。负载均衡器不验证这些证书。因此，您可以使用自签名证书或已过期的证书。由于负载均衡器位于虚拟私有云 (VPC) 中，因此负载均衡器与目标之间的流量将在数据包级别进行身份验证，因此即使目标上的证书无效，也不会面临 man-in-the-middle攻击或欺骗的风险。

下表总结了侦听器协议和目标组设置的组合。


| 侦听器协议 | 目标组协议 | 目标组类型 | 运行状况检查协议 | 
| --- | --- | --- | --- | 
|  TCP  |  TCP \$1 TCP\$1UDP \$1 TCP\$1QUIC   |  实例 \$1 ip   |  HTTP \$1 HTTPS \$1 TCP  | 
|  TCP  |  TCP  |   alb  |  HTTP \$1 HTTPS   | 
|  TLS  |  TCP \$1 TLS  |  实例 \$1 ip   |  HTTP \$1 HTTPS \$1 TCP  | 
|  UDP  |  UDP \$1 TCP\$1UDP  |  实例 \$1 ip   |  HTTP \$1 HTTPS \$1 TCP  | 
|  TCP\$1UDP  |  TCP\$1UDP  |  实例 \$1 ip   |  HTTP \$1 HTTPS \$1 TCP  | 
|  QUIC  |  QUIC \$1 TCP\$1QUIC  |  实例 \$1 ip   |  HTTP \$1 HTTPS \$1 TCP  | 
|  TCP\$1QUIC  |  TCP\$1QUIC  |  实例 \$1 ip   |  HTTP \$1 HTTPS \$1 TCP  | 

## Target type
<a name="target-type"></a>

在创建目标组时，应指定其目标类型，这决定您如何指定其目标。创建目标组后，您无法更改其目标类型。

以下是可能的目标类型：

`instance`  
这些目标通过实例 ID 指定。

`ip`  
这些目标通过 IP 地址指定。

`alb`  
目标是应用程序负载均衡器。

当目标类型为 `ip` 时，您可以指定来自以下 CIDR 块之一的 IP 地址：
+ 目标组的 VPC 的子网
+ 10.0.0.0/8 ([RFC 1918](https://tools.ietf.org/html/rfc1918))
+ 100.64.0.0/10 ([RFC 6598](https://tools.ietf.org/html/rfc6598))
+ 172.16.0.0/12 (RFC 1918)
+ 192.168.0.0/16 (RFC 1918)

**重要**  
不能指定可公开路由的 IP 地址。

您可以使用所有支持的 CIDR 块，向目标组注册以下目标：
+ Amazon 可通过 IP 地址和端口寻址的资源（例如数据库）。
+  Amazon 通过 Amazon Direct Connect 或 Site-to-Site VPN 连接链接到的本地资源。

为您的目标组禁用客户端 IP 保留后，针对网络负载均衡器 IP 地址和唯一目标（IP 地址和端口）的组合，负载均衡器可支持每分钟约 5.5 万个连接。如果连接数超过该值，则会增大出现端口分配错误的几率。如果您收到端口分配错误，请将多个目标添加到目标组。

在共享 VPC 中启动网络负载均衡器时（作为参与者），您只能在已共享的子网中注册目标。

当目标类型为 `alb` 时，您可以将单个应用程序负载均衡器注册为目标。有关更多信息，请参阅 [将应用程序负载均衡器作为网络负载均衡器的目标](application-load-balancer-target.md)。

网络负载均衡器不支持 `lambda` 目标类型。应用程序负载均衡器是支持 `lambda` 目标类型的唯一负载均衡器。有关更多信息，请参阅*应用程序负载均衡器用户指南*中的 [Lambda 函数作为目标](https://docs.amazonaws.cn/elasticloadbalancing/latest/application/lambda-functions.html)。

如果在向网络负载均衡器注册的实例中存在微服务，则不能使用负载均衡器在这些服务之间提供通信，除非该负载均衡器是面向互联网的，或者实例是通过 IP 地址注册的。有关更多信息，请参阅 [从目标到其负载均衡器的请求连接超时](load-balancer-troubleshooting.md#loopback-timeout)。

### 请求路由和 IP 地址
<a name="request-routing-ip-addresses"></a>

如果使用实例 ID 指定目标，则使用实例的主网络接口中指定的主私有 IP 地址将流量路由到实例。负载均衡器在将数据包转发到目标实例之前重写目的地 IP 地址。

如果使用 IP 地址指定目标，则可以使用来自一个或多个网络接口的任何私有 IP 地址将流量路由到实例。这使一个实例上的多个应用程序可以使用同一端口。请注意，每个网络接口都可以有自己的安全组。负载均衡器在将数据包转发到目标之前重写目的地 IP 地址。

有关允许实例的流量的更多信息，请参阅[目标安全组](target-group-register-targets.md#target-security-groups)。

### 将本地资源作为目标
<a name="on-premises-resources"></a>

当目标类型为时，通过 Amazon Direct Connect 或 Site-to-Site VPN 连接链接的本地资源可以用作目标`ip`。

![\[使用 Amazon Direct Connect 或将 Network Load Balancer 与本地服务器连接起来 Amazon Site-to-Site VPN。\]](http://docs.amazonaws.cn/elasticloadbalancing/latest/network/images/nlb-on-prem-resources.png)


使用本地资源时，这些目标的 IP 地址必须仍来自下列 CIDR 块之一：
+ 10.0.0.0/8 ([RFC 1918](https://tools.ietf.org/html/rfc1918))
+ 100.64.0.0/10 ([RFC 6598](https://tools.ietf.org/html/rfc6598))
+ 172.16.0.0/12 (RFC 1918)
+ 192.168.0.0/16 (RFC 1918)

有关的更多信息 Amazon Direct Connect，请参阅[什么是 Amazon Direct Connect？](https://docs.amazonaws.cn/directconnect/latest/UserGuide/)

有关的更多信息 Amazon Site-to-Site VPN，请参阅[什么是 Amazon Site-to-Site VPN？](https://docs.amazonaws.cn/vpn/latest/s2svpn/)

## IP 地址类型
<a name="target-group-ip-address-type"></a>

创建新目标组时，可以选择目标组的 IP 地址类型。此 IP 地址控制用于与目标进行通信并检查其运行状况的 IP 版本。

您网络负载均衡器的目标组支持以下 IP 地址类型：

**`ipv4`**  
负载均衡器使用 IPv4与目标通信。

**`ipv6`**  
负载均衡器使用 IPv6与目标通信。

**注意事项**
+ 负载均衡器根据目标组的 IP 地址类型与目标进行通信。 IPv4 目标组的目标必须接受来自负载均衡器的 IPv4流量， IPv6 目标组的目标必须接受来自负载均衡器的 IPv6 流量。
+ 您不能将 IPv6 目标组与`ipv4`负载均衡器一起使用。
+ 您不能将 IPv4 目标组与`dualstack`负载均衡器的 UDP 侦听器配合使用。
+ 您无法向 IPv6 目标组注册 Application Load Balancer。
+ 您不能将 IPv6 目标群体与 QUIC 或 TCP\$1QUIC 协议一起使用。

## 已注册目标
<a name="registered-targets"></a>

您的负载均衡器充当客户端的单一接触点，并跨其正常运行的已注册目标分发传入流量。每个目标组在为负载均衡器启用的每个可用区中必须至少有一个已注册目标。您可以将每个目标注册到一个或多个目标组中。

如果应用程序需求增加，您可以向一个或多个目标组注册其他目标以便满足该需求。一旦注册过程完成，并且目标通过了第一项初始运行状况检查，负载均衡器就会开始将流量路由到新注册的目标，而不管配置的阈值如何。

如果应用程序需求减少或者您需要为目标提供服务，您可以从目标组取消注册目标。取消注册目标将从目标组中删除目标，但不会影响目标。一旦取消注册，负载均衡器就会停止将流量路由到目标。目标将进入 `draining` 状态，直至进行中请求完成。当您准备好恢复接收流量时，可以再次向目标组注册目标。

如果要通过实例 ID 来注册目标，则可以将负载均衡器与 Auto Scaling 组一同使用。将一个目标组挂接到 Auto Scaling 组后，Auto Scaling 在启动目标时会为您向该目标组注册目标。有关更多信息，请参阅 *Amazon EC2 Auto Scaling 用户指南*中的[将负载均衡器挂接到 Auto Scaling 组](https://docs.amazonaws.cn/autoscaling/ec2/userguide/attach-load-balancer-asg.html)。

**要求和注意事项**
+ 如果实例使用以下实例类型之一，则无法按实例 ID 注册实例：C1、、、、、 CC1 CC2、G1 CG1 CG2、G2 CR1、、、、M1 HI1、M2 HS1、M3 或 T1。
+ 按实例 ID 为 IPv6 目标组注册目标时，必须为目标分配主 IPv6 地址。要了解更多信息，请参阅 *Amazon EC2 用户指南*中的[ IPv6 地址](https://docs.amazonaws.cn/AWSEC2/latest/UserGuide/using-instance-addressing.html#ipv6-addressing)
+ 按实例 ID 注册目标时，实例必须与网络负载均衡器位于同一个 VPC 中。如果实例所在的 VPC 与负载均衡器 VPC 是对等的（位于同一区域或不同区域），则不能按实例 ID 注册实例。可以用 IP 地址注册这些实例。
+ 如果您按 IP 地址注册目标，并且该 IP 地址与负载均衡器位于同一 VPC 中，则负载均衡器会验证其是否来自可以访问的子网。
+ 负载均衡器仅将流量路由到已启用的可用区中的目标。未启用的区域中的目标未使用。
+ 对于 UDP、TCP\$1UDP、QUIC 和 TCP\$1QUIC 目标组，如果实例位于负载均衡器 VPC 之外或使用以下实例类型之一：C1、、、、、、G1、G2、、、、、、M1、M2 CC1 CC2 CG1 CG2 CR1、M3 或 T1，则不要按 IP 地址注册实例。 HI1 HS1如果目标驻留在负载均衡器 VPC 之外或者采用不受支持的实例类型，则目标可能能够接收来自负载均衡器的流量，但随后无法响应。

## 目标组属性
<a name="target-group-attributes"></a>

您可以通过编辑目标组的属性来配置它。有关更多信息，请参阅 [编辑目标组属性](edit-target-group-attributes.md)。

支持以下目标组属性。只有当目标组类型为 `instance` 或 `ip` 时，才能修改这些属性。如果目标组类型为 `alb`，则这些属性将始终使用其默认值。

`deregistration_delay.timeout_seconds`  
Elastic Load Balancing 在将取消注册目标的状态从 `draining` 更改为 `unused` 之前需等待的时间。范围为 0-3600 秒。默认值为 300 秒。对于 QUIC 流量，该值始终为 300 秒。

`deregistration_delay.connection_termination.enabled`  
指示负载均衡器是否在取消注册超时结束时终止连接。该值为 `true` 或 `false`。对于新的 UDP/TCP\$1UDP 目标组，默认值为 `true`。否则，默认值为 `false`。此属性不适用于 QUIC 流量。

`load_balancing.cross_zone.enabled`  
指示是否启用了跨区域负载均衡。该值为 `true`、`false` 或 `use_load_balancer_configuration`。默认为 `use_load_balancer_configuration`。

`preserve_client_ip.enabled`  
指示是否启用客户端 IP 保留。该值为 `true` 或 `false`。如果目标组类型为 IP 地址且目标组协议是 TCP 或 TLS，则默认处于禁用状态。否则，默认处于启用状态。无法为 UDP、TCP\$1UDP、QUIC 和 TCP\$1QUIC 目标组禁用客户端 IP 保留。

`proxy_protocol_v2.enabled`  
指示是否已启用代理协议版本 2。默认情况下，禁用代理协议。

`stickiness.enabled`  
指示是否启用粘性会话。该值为 `true` 或 `false`。默认为 `false`。此属性不适用于 QUIC 流量。

`stickiness.type`  
粘性的类型。可能的值为 `source_ip`。

`target_group_health.dns_failover.minimum_healthy_targets.count`  
必须运行状况良好的目标数量下限。如果运行状况良好的目标数量低于此值，请在 DNS 中将该区域标记为运行状况不佳，以便流量仅路由到运行状况良好的区域。可能的值是 `off` 或者 1 到目标数量上限之间的整数。当 `off` 时，DNS 故障转移被禁用，这意味着即使目标组中的所有目标都运行状况不佳，也不会从 DNS 中移除该区域。默认 为 1。

`target_group_health.dns_failover.minimum_healthy_targets.percentage`  
必须运行状况良好的目标最低百分比。如果运行状况良好的目标百分比低于此值，请在 DNS 中将该区域标记为运行状况不佳，以便流量仅路由到运行状况良好的区域。可能的值为 `off` 或者 1 到 100 之间的整数。当 `off` 时，DNS 故障转移被禁用，这意味着即使目标组中的所有目标都运行状况不佳，也不会从 DNS 中移除该区域。默认值为 `off`。

`target_group_health.unhealthy_state_routing.minimum_healthy_targets.count`  
必须运行状况良好的目标数量下限。如果运行状况良好的目标数量低于此值，则将流量发送到所有目标（包括运行状况不佳的目标）。可能的值介于 1 到目标数量上限。默认 为 1。

`target_group_health.unhealthy_state_routing.minimum_healthy_targets.percentage`  
必须运行状况良好的目标最低百分比。如果运行状况良好的目标百分比低于此值，则将流量发送到所有目标（包括运行状况不佳的目标）。可能的值为 `off` 或者 1 到 100 之间的整数。默认值为 `off`。

`target_health_state.unhealthy.connection_termination.enabled`  
指示负载均衡器是否终止与运行状况不佳的目标的连接。该值为 `true` 或 `false`。默认为 `true`。

`target_health_state.unhealthy.draining_interval_seconds`  
弹性负载均衡在将运行状况不佳目标的状态从 `unhealthy.draining` 更改为 `unhealthy` 之前需等待的时间。范围为 0-360000 秒。默认值为 0 秒。  
**注意：**只有在 `target_health_state.unhealthy.connection_termination.enabled` 为 `false` 时才能配置此属性。

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

默认情况下，只要目标组至少有一个运行状况良好的目标，就会被视为运行状况良好。如果您的实例集很大，则仅有一个运行状况良好的目标为流量提供服务是不够的。相反，您可以指定必须运行状况良好的目标数量下限或最低百分比，以及当运行状况良好的目标低于指定阈值时负载均衡器将采取哪些操作。这有助于提高您应用程序的可用性。

**Topics**
+ [运行状况不佳状态的操作](#unhealthy-state-actions)
+ [要求和注意事项](#target-group-health-considerations)
+ [示例](#target-group-health-examples)
+ [为负载均衡器使用 Route 53 DNS 故障转移](#r53-dns-failover)

### 运行状况不佳状态的操作
<a name="unhealthy-state-actions"></a>

您可以为以下操作配置运行状况良好阈值：
+ **DNS 故障转移** — 当某区域中运行状况良好的目标低于阈值时，我们会在 DNS 中将该区域的负载均衡器节点的 IP 地址标记为运行状况不佳。因此，当客户端解析负载均衡器 DNS 名称时，流量将会仅路由到运行状况良好的区域。
+ **路由故障转移** - 当某区域中运行状况良好的目标低于阈值时，负载均衡器会将流量发送到负载均衡器节点可用的所有目标（包括运行状况不佳的目标）。这增加了客户端连接成功的机会，尤其是在目标暂时未能通过运行状况检查时，并降低了运行状况良好的目标过载的风险。

### 要求和注意事项
<a name="target-group-health-considerations"></a>
+ 如果为某项操作指定了两种类型的阈值（计数和百分比），则负载均衡器会在违反任一阈值时执行该操作。
+ 如果为这两项操作都指定了阈值，则 DNS 故障转移的阈值必须大于或等于路由故障转移的阈值，以便 DNS 故障转移会在路由故障转移时或之前发生。
+ 如果您将阈值指定为百分比，我们将根据在目标组中注册的目标总数动态计算该值。
+ 目标总数取决于关闭还是打开跨区域负载均衡。如果跨区域负载均衡处于关闭状态，则每个节点仅向自己区域中的目标发送流量，这意味着阈值将分别应用于每个已启用区域中的目标数量。如果跨区域负载均衡处于打开状态，则每个节点将流量发送到所有已启用区域中的所有目标，这意味着指定的阈值将应用于所有已启用区域中的目标总数。有关更多信息，请参阅 [跨可用区负载均衡](edit-target-group-attributes.md#target-group-cross-zone)。
+ 当发生 DNS 故障转移时，会影响与负载均衡器关联的所有目标组。请确保剩余区域中有足够的容量来处理这些额外流量，尤其是在跨区域负载均衡关闭的情况下。
+ 通过 DNS 故障转移，我们会从负载均衡器的 DNS 主机名中删除运行状况不佳区域的 IP 地址。但是，在 DNS 记录中的 time-to-live (TTL) 到期（60 秒）之前，本地客户端 DNS 缓存可能包含这些 IP 地址。
+ 使用 DNS 故障转移时，如果有多个目标组连接到网络负载均衡器，并且一个目标组在某个区域中运行状况不佳，则会发生 DNS 故障转移，即使该区域中的另一个目标组运行状况良好。
+ 使用 DNS 故障转移时，如果所有负载均衡器区域都被视为运行状况不佳，则负载均衡器会将流量发送到所有区域（包括运行状况不佳的区域）。
+ 除了是否有足够运行状况良好的目标可能会导致 DNS 故障转移之外，还有其他因素，例如区域的运行状况。

### 示例
<a name="target-group-health-examples"></a>

以下示例演示了如何应用目标组运行状况设置。

**场景**
+ 支持 A 和 B 两个可用区的负载均衡器
+ 每个可用区中包含 10 个注册目标
+ 目标组具有以下目标组运行状况设置：
  + DNS 故障转移 - 50%
  + 路由故障转移 - 50%
+ 可用区 B 中有六个目标失败

![\[为两个区域启用的负载均衡器。AZ A 有 10 个运行状况良好的目标，AZ B 有 4 个运行状况良好的目标和 6 个运行状况不佳的目标。\]](http://docs.amazonaws.cn/elasticloadbalancing/latest/network/images/tg-health-example.png)


**如果跨区域负载均衡关闭**
+ 每个可用区中的负载均衡器节点只能将流量发送到其可用区内的 10 个目标。
+ 可用区 A 中有 10 个运行状况良好的目标，符合所需的运行状况良好的目标百分比。负载均衡器继续在 10 个运行状况良好的目标之间分配流量。
+ 可用区 B 中只有 4 个运行状况良好的目标，占可用区 B 中负载均衡器节点目标的 40%。由于这低于所需的运行状况良好的目标百分比，负载均衡器会执行以下操作：
  + DNS 故障转移 - 可用区 B 在 DNS 中被标记为运行状况不佳。由于客户端无法将负载均衡器名称解析为可用区 B 中的负载均衡器节点，并且可用区 A 运行状况良好，因此客户端会向可用区 A 发送新连接。
  + 路由故障转移 - 当新连接明确发送到可用区 B 时，负载均衡器会将流量分配到可用区 B 中的所有目标（包括运行状况不佳的目标）。这样可以防止剩余运行状况良好的目标发生中断。

**如果跨区域负载均衡打开**
+ 每个负载均衡器节点可以向两个可用区中的所有 20 个注册目标发送流量。
+ 可用区 A 中有 10 个运行状况良好的目标，可用区 B 中有 4 个运行状况良好的目标，总共有 14 个运行状况良好的目标。这是两个可用区中负载均衡器节点目标的 70%，符合所需的运行状况良好的目标百分比。
+ 负载均衡器将在两个可用区内 14 个运行状况良好的目标之间分配流量。

### 为负载均衡器使用 Route 53 DNS 故障转移
<a name="r53-dns-failover"></a>

如果使用 Route 53 将 DNS 查询路由到您的负载均衡器，您也可以使用 Route 53 为您的负载均衡器配置 DNS 故障转移。在失效转移配置中，Route 53 将检查负载均衡器的目标组目标的运行状况以确定目标是否可用。如果没有已注册到负载均衡器的运行状况正常的目标，或如果负载均衡器本身运行状况不佳，则 Route 53 会将流量路由到其他可用资源，例如 Amazon S3 中运行状况正常的负载均衡器或静态网站。

例如，假设您有一个用于 `www.example.com` 的 Web 应用程序，并且您希望使用在不同区域内的两个负载均衡器之后运行的冗余实例。您希望流量主要路由到一个区域中的负载均衡器，并且您希望在发生故障期间将另一个区域中的负载均衡器用作备份。如果配置 DNS 故障转移，则可以指定您的主和辅助 (备份) 负载均衡器。如果主负载均衡器可用，则 Route 53 会将流量定向到主负载均衡器，否则会将流量定向到辅助负载均衡器。

**如何评估目标的运行状况**
+ 如果网络负载均衡器别名记录上的“评估目标运行状况”设置为 `Yes`，则 Route 53 将评估 `alias target` 值指定的资源的运行状况。Route 53 使用目标组运行状况检查。
+ 如果连接到网络负载均衡器的所有目标组均运行正常，则 Route 53 会将别名记录标记为“运行正常”。如果您为目标组配置了阈值且该目标组满足其阈值要求，则视为“通过运行状况检查”。否则，只要目标组包含至少一个运行正常的目标，即视为“通过运行状况检查”。如果“通过运行状况检查”，则 Route 53 会根据您的路由策略返回记录。如果使用失效转移路由策略，则 Route 53 会返回主记录。
+ 如果连接到网络负载均衡器的所有目标组运行状况不佳，则别名记录无法通过 Route 53 运行状况检查（失效时开放）。如果使用“评估目标的运行状况”，这将导致失效转移路由策略将流量重定向至辅助资源。
+ 如果网络负载均衡器中的所有目标组均为空（无目标），则 Route 53 会认为此记录运行状况不佳（失效时开放）。如果使用“评估目标的运行状况”，这将导致失效转移路由策略将流量重定向至辅助资源。

有关更多信息，请参阅 Amazon 博客中的[使用负载均衡器目标组运行状况阈值来提高可用性](https://www.amazonaws.cn/blogs/networking-and-content-delivery/using-load-balancer-target-group-health-thresholds-to-improve-availability/)和 *Amazon Route 53 开发人员指南*中的[配置 DNS 故障转移](https://docs.amazonaws.cn/Route53/latest/DeveloperGuide/dns-failover-configuring.html)。