

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

# 为网络负载均衡器注册目标
<a name="target-group-register-targets"></a>

当您的目标准备好处理请求时，您将其注册到一个或多个目标组。目标组的目标类型将确定如何注册目标。例如，您可以注册实例 IDs、IP 地址或 Application Load Balancer。只要注册过程完成且目标通过初始运行状况检查，网络负载均衡器就会开始将请求路由至目标。完成注册过程和开始运行状况检查可能需要几分钟时间。有关更多信息，请参阅 [网络负载均衡器目标组的运行状况检查](target-group-health-checks.md)。

如果当前已注册目标的需求增加，您可以注册其他目标以便满足该需求。如果对已注册目标的需求减少，您可以从目标组中取消注册目标。完成取消注册过程和负载均衡器停止将请求路由到目标可能需要几分钟时间。如果需求随后增加，您可以再次向目标组注册已取消注册的目标。如果您需要为目标提供服务，您可以取消注册，然后在服务完成后重新注册。

在取消注册目标时，Elastic Load Balancing 会一直等待，直到进行中的请求完成。这称作*连接耗尽*。在连接耗尽期间，目标的状态为 `draining`。在取消注册完成后，目标的状态将更改为 `unused`。有关更多信息，请参阅 [取消注册延迟](edit-target-group-attributes.md#deregistration-delay)。

如果要通过实例 ID 来注册目标，则可以将负载均衡器与 Auto Scaling 组一同使用。将目标组挂接到 Auto Scaling 组并且该组扩展后，由 Auto Scaling 组启动的实例将自动在目标组中注册。如果您将负载均衡器与 Auto Scaling 组分离，则实例会自动从目标组中取消注册。有关更多信息，请参阅《Amazon EC2 Auto Scaling 用户指南》**中的[将负载均衡器挂接到自动扩缩组](https://docs.aws.amazon.com/autoscaling/ec2/userguide/attach-load-balancer-asg.html)。

**Topics**
+ [目标安全组](#target-security-groups)
+ [网络 ACLs](#network-acls)
+ [共享子网](#register-targets-shared-subnets)
+ [注册目标](#register-targets)
+ [取消注册目标](#deregister-targets)

## 目标安全组
<a name="target-security-groups"></a>

在将目标添加到目标组之前，请将与目标关联的安全组配置为接受来自网络负载均衡器的流量。

**对目标安全组的建议（如果负载均衡器有与之关联的安全组）**
+ **允许客户端流量**：添加规则，其引用与负载均衡器关联的安全组
+ **允许 PrivateLink 流量**：如果您将负载均衡器配置为评估通过流量的入站规则 AWS PrivateLink，请添加一条规则，在流量端口上接受来自负载均衡器安全组的流量。否则，添加规则，其在流量端口上接受来自负载均衡器私有 IP 地址的流量。
+ **接受负载均衡器运行状况检查**：添加规则，其在运行状况检查端口上接受来自负载均衡器安全组的运行状况检查流量。

**对目标安全组的建议（如果负载均衡器没有与安全组关联）**
+ **允许客户端流量**：如果负载均衡器保留客户端 IP 地址，则添加规则，其在流量端口上接受来自已批准客户端 IP 地址的流量。否则，添加规则，其在流量端口上接受来自负载均衡器私有 IP 地址的流量。
+ **允许 PrivateLink 流量**：添加一条规则，在流量端口上接受来自负载均衡器私有 IP 地址的流量。
+ **接受负载均衡器运行状况检查**：添加规则，其在运行状况检查端口上接受来自负载均衡器私有 IP 地址的运行状况检查流量。

**客户端 IP 保留的工作原理**  
除非将 `preserve_client_ip.enabled` 属性设置为 `true`，否则网络负载均衡器不会保留客户端 IP 地址。此外，使用双栈网络负载均衡器，在将地址转换为地址或 IPv6 转换为地址时 IPv6，客户端 IP IPv4 地址保留不起作用。 IPv4 只有当客户端 IP 地址和目标 IP 地址同时存在 IPv4 或两者兼而有时，客户端 IP 地址保留才有效 IPv6。

**使用控制台查找负载均衡器私有 IP 地址**

1. 打开位于 [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/) 的 Amazon EC2 控制台。

1. 在导航窗格中，选择 **Network Interfaces**。

1. 在搜索字段中，输入网络负载均衡器的名称。每个负载均衡器的子网有一个网络接口。

1. 在每个网络接口的**详细信息**选项卡上，从**私有地址复制 IPv4 地址**。

有关更多信息，请参阅 [更新网络负载均衡器的安全组](load-balancer-security-groups.md)。

## 网络 ACLs
<a name="network-acls"></a>

将 EC2 实例注册为目标时，必须确保您的实例子网的网络 ACLs允许侦听器端口和运行状况检查端口上的流量。VPC 的默认网络访问控制列表 (ACL) 允许所有入站和出站流量。如果您创建自定义网络 ACLs，请确认它们允许适当的流量。

与您的实例子网 ACLs 关联的网络必须允许面向 Internet 的负载均衡器的以下流量。


**实例子网的推荐规则**  

| 
| 
| **Inbound** | 
| --- |
|  源  |  协议  |  端口范围  |  评论  | 
| Client IP addresses | listener | target port | 允许客户端流量（IP 保留：ON） | 
| VPC CIDR | listener | target port | 允许客户端流量（IP 保留：OFF） | 
| VPC CIDR | health check | health check | 允许运行状况检查流量 | 
| **Outbound** | 
| --- |
|  目标位置  |  协议  |  端口范围  |  评论  | 
| Client IP addresses | listener | 1024-65535 | 允许向客户端返回流量（IP 保留:ON） | 
| VPC CIDR | listener | 1024-65535 | 允许向客户端返回流量（IP 保留:OFF） | 
| VPC CIDR | health check | 1024-65535 | 允许运行状况检查流量 | 

与您的负载均衡器子网 ACLs 关联的网络必须允许面向 Internet 的负载均衡器传输以下流量。


**负载均衡器子网的推荐规则**  

| 
| 
| **Inbound** | 
| --- |
|  源  |  协议  |  端口范围  |  评论  | 
| Client IP addresses | listener | listener | 允许客户端流量 | 
| VPC CIDR | listener | 1024-65535 | 允许来自目标的响应 | 
| VPC CIDR | health check | 1024-65535 | 允许运行状况检查流量 | 
| **Outbound** | 
| --- |
|  目标位置  |  协议  |  端口范围  |  评论  | 
| Client IP addresses | listener | 1024-65535 | 允许回复客户端 | 
| VPC CIDR | listener | target port | 允许向目标发出请求 | 
| VPC CIDR | health check | health check | 允许对目标进行运行状况检查 | 

对于内部负载均衡器，您的实例和负载均衡器节点的子网网络 ACLs 必须允许通过侦听器端口和临时端口进出VPC CIDR的入站和出站流量。

## 共享子网
<a name="register-targets-shared-subnets"></a>

参与者可以在共享 VPC 中创建网络负载均衡器。参与者无法注册在未与其共享的子网中运行的目标。

所有 AWS 区域都支持网络负载均衡器的共享子网，但不包括：
+ 亚太地区（大阪）`ap-northeast-3`
+ 亚太地区（香港）`ap-east-1`
+ 中东（巴林）`me-south-1`
+ AWS 中国（北京）`cn-north-1`
+ AWS 中国（宁夏）`cn-northwest-1`

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

每个目标组在为负载均衡器启用的每个可用区中必须至少有一个已注册目标。

目标组的目标类型决定了您可以注册的目标类型。有关更多信息，请参阅 [Target type](load-balancer-target-groups.md#target-type)。使用以下信息将目标注册到类型为 `instance` 或 `ip` 的目标组中。如果目标类型为 `alb`，请参阅 [使用应用程序负载均衡器作为目标](application-load-balancer-target.md)。

**要求和注意事项**
+ 当您注册实例时，实例必须处于 `running` 状态。
+ 如果实例使用以下实例类型之一，则无法按实例 ID 注册实例：C1、、、、、 CC1 CC2、G1 CG1 CG2、G2 CR1、、、、M1 HI1、M2 HS1、M3 或 T1。
+ 按实例 ID 注册目标时，实例必须与网络负载均衡器位于同一个 VPC 中。如果实例所在的 VPC 与负载均衡器 VPC 是对等的（位于同一区域或不同区域），则不能按实例 ID 注册实例。可以用 IP 地址注册这些实例。
+ 按实例 ID 为 IPv6 目标组注册目标时，必须为目标分配主 IPv6 地址。要了解更多信息，请参阅 *Amazon EC2 用户指南*中的[ IPv6 地址](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-instance-addressing.html#ipv6-addressing)
+ 按 IP 地址为 IPv4 目标组注册目标时，您注册的 IP 地址必须来自以下 CIDR 块之一：
  + 目标组的 VPC 的子网
  + 10.0.0.0/8 (RFC 1918)
  + 100.64.0.0/10 (RFC 6598)
  + 172.16.0.0/12 (RFC 1918)
  + 192.168.0.0/16 (RFC 1918)
+ 按照 IP 地址为 IPv6 目标组注册目标时，您注册的 IP 地址必须位于 VPC IPv6 CIDR 块内或对等 VPC 的 IPv6 CIDR 块内。
+ 如果您按 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 之外或者采用不受支持的实例类型，则目标可能能够接收来自负载均衡器的流量，但随后无法响应。

**QUIC 特定要求和注意事项**
+ 注册到 QUIC 或 TCP\$1QUIC 目标组的所有目标都必须指定服务器 ID。
+ 对于存在于 Network Load Balancer 侦听器中的所有目标，服务器 IDs 必须是唯一的。
+ QUIC 服务器始终 IDs 为 8 个字节。在注册目标时，服务器 ID 必须采用 `0x` 后接 16 位十六进制字符的格式。
+ 使用服务器 ID 注册目标后，该 ID 将不可更改。要更改目标的服务器 ID，必须先将其取消注册，然后再使用新的服务器 ID 进行注册。
+ 目标标识符和端口组合必须具有一个服务器 ID。在同一 VPC 内，不支持为相同的 IP 或实例 ID 与端口组合使用不同的服务器 ID。
+ 避免在 6 小时内为不同的目标重复使用相同的服务器 ID。

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

**要注册目标**

1. 打开位于 [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/) 的 Amazon EC2 控制台。

1. 在导航窗格上的**负载均衡**下，选择**目标组**。

1. 选择目标组的名称以打开其详细信息页面。

1. 选择**目标**选项卡。

1. 选择**注册目标**。

1. 如果目标组的目标类型是 `instance`，则选择可用的实例，根据需要覆盖默认端口，然后选择**在下面以待注册的形式添加**。

1. 若目标组的目标类型为 `ip`，则需为每个 IP 地址选择网络，输入 IP 地址及端口，并选择**在下面以待注册的形式添加**。

1. 如果目标组的目标类型为 `alb`，则根据需要覆盖默认端口，然后选择应用程序负载均衡器。有关更多信息，请参阅 [使用应用程序负载均衡器作为目标](application-load-balancer-target.md)。

1. 如果目标组的协议为 QUIC 或 TCP\$1QUIC，请确保服务器 ID 已指定。

1. 选择**注册待处理目标**。

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

**要注册目标**  
使用 [register-targets](https://docs.aws.amazon.com/cli/latest/reference/elbv2/register-targets.html) 命令。以下示例通过实例 ID 注册目标。由于未指定端口，负载均衡器将使用目标组端口。

```
aws elbv2 register-targets \
    --target-group-arn target-group-arn \
    --targets Id=i-1234567890abcdef0 Id=i-0abcdef1234567890
```

以下示例通过 IP 地址注册目标。由于未指定端口，负载均衡器将使用目标组端口。

```
aws elbv2 register-targets \
    --target-group-arn target-group-arn \
    --targets Id=10.0.50.10 Id=10.0.50.20
```

以下示例将应用程序负载均衡器注册为目标。

```
aws elbv2 register-targets \
    --target-group-arn target-group-arn \
    --targets Id=application-load-balancer-arn
```

以下示例将目标注册到 QUIC 或 TCP\$1QUIC 目标组中。

```
aws elbv2 register-targets \
    --target-group-arn target-group-arn \
    --targets Id=10.0.50.10,QuicServerId=0xa1b2c3d4e5f65890 Id=10.0.50.20,QuicServerId=0xa1b2c3d4e5f65999
```

------
#### [ CloudFormation ]

**要注册目标**  
更新[AWS::ElasticLoadBalancingV2::TargetGroup](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-elasticloadbalancingv2-targetgroup.html)资源以包含新目标。以下示例通过实例 ID 注册两个目标。

```
Resources:
  myTargetGroup:
    Type: 'AWS::ElasticLoadBalancingV2::TargetGroup'
    Properties:
      Name: my-target-group
      Protocol: HTTP
      Port: 80
      TargetType: instance
      VpcId: !Ref myVPC
      Targets:
        - Id: !GetAtt Instance1.InstanceId
          Port: 80
        - Id: !GetAtt Instance2.InstanceId
          Port: 80
```

以下示例通过实例 ID 将两个目标注册到 QUIC 或 TCP\$1QUIC 协议目标组中。

```
Resources:
  myTargetGroup:
    Type: 'AWS::ElasticLoadBalancingV2::TargetGroup'
    Properties:
      Name: my-target-group
      Protocol: HTTP
      Port: 80
      TargetType: instance
      VpcId: !Ref myVPC
      Targets:
        - Id: !GetAtt Instance1.InstanceId
          Port: 80
          QuicServerId: 0xa1b2c3d4e5f65999
        - Id: !GetAtt Instance2.InstanceId
          Port: 80
          QuicServerId: 0xa1b2c3d4e5f65000
```

------

## 取消注册目标
<a name="deregister-targets"></a>

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

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

**要取消注册目标**

1. 打开位于 [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/) 的 Amazon EC2 控制台。

1. 在导航窗格上的**负载均衡**下，选择**目标组**。

1. 选择目标组的名称以打开其详细信息页面。

1. 在**目标**选项卡中，选择要删除的目标。

1. 选择**注销**。

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

**要取消注册目标**  
使用 [deregister-targets](https://docs.aws.amazon.com/cli/latest/reference/elbv2/deregister-targets.html) 命令。以下示例取消注册两个通过实例 ID 注册的目标。

```
aws elbv2 deregister-targets \
    --target-group-arn target-group-arn \
    --targets Id=i-1234567890abcdef0 Id=i-0abcdef1234567890
```

------