

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

# 将应用程序负载均衡器作为网络负载均衡器的目标
<a name="application-load-balancer-target"></a>

您可以使用单个应用程序负载均衡器作为目标来创建目标组，然后配置网络负载均衡器以将流量转发到目标组。在这种情况下，应用程序负载均衡器将在流量到达后立即接管负载均衡决策。此配置结合了两种负载均衡器的功能，并具有以下优点：
+ 您可以将应用程序负载均衡器基于第 7 层请求的路由功能与网络负载均衡器支持的功能结合使用，例如端点服务 (AWS PrivateLink) 和静态 IP 地址。
+ 您可以将此配置用于对于多个协议需要单个端点的应用程序，例如使用 HTTP 进行信号发送的媒体服务和用于流式传输内容的 RTP。

您可以将此功能与内部或面向 Internet 的应用程序负载均衡器搭配使用，作为内部或面向 Internet 的网络负载均衡器的目标。

**注意事项**
+ 每个目标组只能注册一个应用程序负载均衡器。
+ 要将应用程序负载均衡器关联为网络负载均衡器的目标，这些负载均衡器必须位于同一账户内的同一 VPC 中。
+ 您可以将应用程序负载均衡器关联为最多两个网络负载均衡器的目标。为此，使用单独的目标组为每个网络负载均衡器注册应用程序负载均衡器。
+ 您使用网络负载均衡器注册的每个应用程序负载均衡器会将每个网络负载均衡器在每个可用区的最大目标数减少 50 个。您可以在这两个负载均衡器中禁用跨区域负载均衡，以尽量减少延迟并避免区域数据传输费用。有关更多信息，请参阅 [网络负载均衡器的配额](load-balancer-limits.md)。
+ 当目标组类型为 `alb` 时，您无法修改目标组属性。这些属性始终使用其默认值。
+ 注册应用程序负载均衡器作为目标，只有从所有目标组中取消注册此应用程序负载均衡器才能将其删除。
+ Network Load Balancer 和 Application Load Balancer 之间的通信始终使用 IPv4。

**Topics**
+ [先决条件](#application-load-balancer-target-prerequisite)
+ [步骤 1：创建 alb 类型的目标组](#register-application-load-balancer-target)
+ [步骤 2：创建网络负载均衡器并配置路由](#configure-application-load-balancer-target)
+ [步骤 3：（可选）创建 VPC 终端节点服务](#enable-privatelink)

## 先决条件
<a name="application-load-balancer-target-prerequisite"></a>

如果您还没有可用作目标的应用程序负载均衡器，请创建负载均衡器、其侦听器以及其目标组。有关更多信息，请参阅《应用程序负载均衡器用户指南》**中的[创建应用程序负载均衡器](https://docs.aws.amazon.com/elasticloadbalancing/latest/application/create-application-load-balancer.html)。

## 步骤 1：创建 alb 类型的目标组
<a name="register-application-load-balancer-target"></a>

创建 `alb` 类型的目标组。您可以在创建目标组时或创建之后，将您的应用程序负载均衡器注册为目标。

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

**要为作为目标的应用程序负载均衡器创建目标组**

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

1. 在导航窗格上的 **Load Balancing** (负载均衡) 下，选择 **Target Groups** (目标组)。

1. 选择 **Create target group (创建目标组)**。

1. 在**基本配置**窗格中，对于**选择目标类型**，请选择**应用程序负载均衡器**。

1. 对于**目标组名称**，输入目标组的名称。

1. 对于 **Protocol (协议)**，只允许 TCP。为您的目标组选择 **Port (端口)**。此目标组的端口必须与应用程序负载均衡器的侦听器端口匹配。如果您为该目标组选择了其他端口，则可以更新应用程序负载均衡器上的侦听器端口，以使其匹配。

1. 对于 **VPC**，请为目标组选择虚拟私有云（VPC）。这必须与应用程序负载均衡器所使用的 VPC 相同。

1. 对于**运行状况检查**，选择 HTTP 或 HTTPS 作为**运行状况检查协议**。运行状况检查将发送到应用程序负载均衡器并使用指定的端口、协议和 ping 路径转发到其目标。确保应用程序负载均衡器可以通过侦听器来接收这些运行状况检查结果，该侦听器的端口和协议与运行状况检查端口和协议匹配。

1. （可选）展开**标签**。对于每个标签，请选择**添加新标签**，然后输入标签键和标签值。

1. 选择**下一步**。

1. 如果您已经准备号注册应用程序负载均衡器，请选择**立即注册**，根据需要覆盖默认端口，然后选择应用程序负载均衡器。应用程序负载均衡器必须在与目标组相同的端口上配置侦听器。您可以在此负载均衡器上添加或编辑侦听器以匹配目标组的端口，或返回上一步并更改目标组的端口。

   如果您尚未准备好将应用程序负载均衡器注册为目标，请选择**稍后注册**，以便稍后再进行目标注册。有关更多信息，请参阅 [注册目标](target-group-register-targets.md#register-targets)。

1. 选择**创建目标组**。

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

**创建 alb 类型的目标组**  
使用 [create-target-group](https://docs.aws.amazon.com/cli/latest/reference/elbv2/create-target-group.html) 命令。协议必须为 TCP，并且端口必须与应用程序负载均衡器的侦听器端口匹配。

```
aws elbv2 create-target-group \
    --name {{my-target-group}} \
    --protocol TCP \
    --port 80 \
    --target-type alb \
    --vpc-id {{vpc-1234567890abcdef0}} \
    --tags Key={{department}},Value={{123}}
```

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

**要创建 alb 类型的目标组**  
定义类型为的资源[AWS::ElasticLoadBalancingV2::TargetGroup](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-elasticloadbalancingv2-targetgroup.html)。协议必须为 TCP，并且端口必须与应用程序负载均衡器的侦听器端口匹配。

```
Resources:
  myTargetGroup:
    Type: 'AWS::ElasticLoadBalancingV2::TargetGroup'
    Properties:
      Name: {{my-target-group}}
      Protocol: TCP
      Port: 80
      TargetType: alb
      VpcId: !Ref myVPC
      Tags: 
        - Key: '{{department}}'
          Value: '{{123}}'
      Targets:
        - Id: !Ref myApplicationLoadBalancer
          Port: 80
```

------

## 步骤 2：创建网络负载均衡器并配置路由
<a name="configure-application-load-balancer-target"></a>

创建网络负载均衡器时，您可以将默认操作配置为将流量转发到应用程序负载均衡器。

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

**要创建网络负载均衡器**

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

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

1. 选择**创建负载均衡器**。

1. 在**网络负载均衡器**下，选择**创建**。

1. **基本配置**

   1. 对于**负载均衡器名称**，输入网络负载均衡器的名称。

   1. 对于 **Scheme** (方案)，选择互联网**-facing** (面向互联网) 或 **Internal** (内部)。面向互联网的网络负载均衡器将来自客户端的请求通过互联网路由到目标。内部网络负载均衡器使用私有 IP 地址将请求路由到目标。

   1. 对于**负载均衡器 IP 地址类型**，请选择**IPv4**您的客户端是使用 IPv4 地址与网络负载均衡器通信，如果您的客户端同时使用 IPv4 和 IPv6 地址与网络负载均衡器通信，则选择**双栈**通信。

1. **网络映射**

   1. 对于 **VPC**，请选择您用于应用程序负载均衡器的相同 VPC。对于面向互联网的负载均衡器，只能选择 VPCs 带有互联网网关的负载均衡器。

   1. 对于**可用区和子网**，请至少选择一个可用区，然后为每个区域选择一个子网。我们建议您选择与应用程序负载均衡器所启用的可用区相同的可用区。这有助于优化可用性、扩展性和性能。

      （可选）要使用静态 IP 地址，**请在每个可用区的**IPv4设置**中选择使用弹性 IP 地址**。使用静态 IP 地址，您可以将某些 IP 地址添加到防火墙允许列表中，也可以对客户端进行 IP 地址硬编码。

1. **安全组**

   我们会为负载均衡器 VPC 预选默认安全组。您可以根据需要选择其他安全组。如果您没有可满足您需求的安全组，请选择**创建新的安全组**，以立即创建一个。有关更多信息，请参阅《Amazon VPC 用户指南》**中的[创建安全组](https://docs.aws.amazon.com/vpc/latest/userguide/creating-security-groups.html)。
**警告**  
如果您现在没有将任何安全组与网络负载均衡器关联，则无法以后再将其关联。
**警告**  
要使用 QUIC 或 TCP\_QUIC 侦听器，您的网络负载均衡器必须没有安全组。

1. **侦听器和路由**

   1. 默认值是负责接收端口 80 上的 TCP 流量的侦听器。只有 TCP 侦听器才能将流量转发到应用程序负载均衡器目标组。您必须将**协议**保留为 **TCP**，但可以根据需要修改**端口**。

      通过此配置，您可以在应用程序负载均衡器上使用 HTTPS 侦听器终止 TLS 流量。

   1. 对于**默认操作**，请选择您在之前步骤中创建的目标组。

   1. （可选）选择**添加侦听器标签**，然后输入标签键和标签值。

1. **负载均衡器标签**

   （可选）展开**负载均衡器标签**。（可选）选择**添加新的标签**，然后输入标签键和标签值。有关更多信息，请参阅[标签](load-balancer-tags.md)。

1. **摘要**

   查看您的配置，然后选择**创建负载均衡器**。

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

**要创建网络负载均衡器**  
使用 [create-load-balancer](https://docs.aws.amazon.com/cli/latest/reference/elbv2/create-load-balancer.html) 命令。我们建议您使用与应用程序负载均衡器所启用的可用区相同的可用区。

```
aws elbv2 create-load-balancer \
    --name my-load-balancer \
    --type network \
    --scheme {{internal}} \
    --subnets {{subnet-1234567890abcdef0}} {{subnet-0abcdef1234567890}} \
    --security-groups {{sg-1111222233334444}}
```

**要添加 TCP 侦听器**  
使用 [create-listener](https://docs.aws.amazon.com/cli/latest/reference/elbv2/create-load-balancer.html) 命令来添加 TCP 侦听器。只有 TCP 侦听器才能将流量转发到应用程序负载均衡器。对于默认操作，请使用您在之前步骤中创建的目标组。

```
aws elbv2 create-listener \
    --load-balancer-arn {{load-balancer-arn}} \
    --protocol TCP \
    --port {{80}} \
    --default-actions Type=forward,TargetGroupArn={{target-group-arn}}
```

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

**要创建网络负载均衡器**  
定义类型为的资源[AWS::ElasticLoadBalancingV2::LoadBalancer](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-elasticloadbalancingv2-loadbalancer.html)和类型的资源[AWS::ElasticLoadBalancingV2::Listener](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-elasticloadbalancingv2-listener.html)。只有 TCP 侦听器才能将流量转发到应用程序负载均衡器。对于默认操作，请使用您在之前步骤中创建的目标组。

```
Resources:
  myLoadBalancer:
    Type: 'AWS::ElasticLoadBalancingV2::LoadBalancer'
    Properties:
      Name: {{my-load-balancer}}
      Type: network
      Scheme: {{internal}}
      Subnets: 
        - !Ref subnet-AZ1
        - !Ref subnet-AZ2
      SecurityGroups: 
        - !Ref mySecurityGroup

  myTCPListener:
    Type: 'AWS::ElasticLoadBalancingV2::Listener'
    Properties:
      LoadBalancerArn: !Ref myLoadBalancer
      Protocol: TCP
      Port: {{80}}
      DefaultActions:
        - Type: forward
          TargetGroupArn: !Ref myTargetGroup
```

------

## 步骤 3：（可选）创建 VPC 终端节点服务
<a name="enable-privatelink"></a>

要使用您在上一步中设置的网络负载均衡器作为私有连接的端点，您可以启用 AWS PrivateLink。这将建立与负载均衡器作为终端节点服务的私有连接。

**要使用您的网络负载均衡器创建 VPC 端点服务**

1. 在导航窗格中，选择**负载均衡器**。

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

1. 在**集成**选项卡上，展开 **VPC 端点服务（AWS PrivateLink）**。

1. 选择**创建端点服务**以打开**端点服务**页面。有关其余步骤，请参阅《AWS PrivateLink 指南》**中的[创建端点服务](https://docs.aws.amazon.com/vpc/latest/privatelink/create-endpoint-service.html#create-endpoint-service-nlb)。