

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 使用 Application Load Balancer 做為 Network Load Balancer 的目標
<a name="application-load-balancer-target"></a>

您可以建立單一 Application Load Balancer 作為目標建立目標群組，並設定 Network Load Balancer 以將流量轉送至該群組。在此案例，Application Load Balancer 會在流量到達負載平衡決策時接管負載平衡決策。此組態結合了兩個負載平衡器的功能，並提供下列優點：
+ 您可以將 Application Load Balancer的第 7 層要求型路由功能與 Network Load Balancer 支援的功能結合使用，例如端點服務 (AWS PrivateLink) 與靜態 IP 地址。
+ 您可以針對需要單一端點進行多通訊協定的應用程式使用此組態，例如使用 HTTP 進行訊號傳輸的媒體服務，以及使用 RTP 來串流內容的應用程式。

您可以將此功能與內部或面對網際網路的 Application Load Balancer 搭配使用，作為內部或面向網際網路的 Network Load Balancer 目標。

**考量事項**
+ 每個目標群組只能註冊一個 Application Load Balancer。
+ 若要將 Application Load Balancer 關聯為 Network Load Balancer 的目標，負載平衡器必須位於相同帳戶中的相同 VPC 中。
+ 您可以將 Application Load Balancer 關聯為最多兩個 Network Load Balancer 的目標。若要這樣做，請使用每個 Network Application Load Balancer 的個別目標群組註冊 Application Load Balancer。
+ 您向 Network Load Balancer 註冊的每個 Application Load Balancer 會將每個 Network Load Balancer 每個可用區域的目標數量上限減少 50 個。 Load Balancer 您可以在兩個負載平衡器停用跨區域負載平衡，以最大程度減少延遲並避免區域資料傳輸費用。如需詳細資訊，請參閱[Network Load Balancer 的配額](load-balancer-limits.md)。
+ 當目標群組類型為 `alb`時，您無法修改目標群組屬性。這些屬性一律使用其預設值。
+ 在將 Application Load Balancer 登錄為目標之後，除非從所有目標群組取消登錄 Application Load Balancer，否則無法將其刪除。
+ Network Load Balancer 與 Application Load Balancer 之間的通訊一律使用 IPv4。

**Topics**
+ [先決條件](#application-load-balancer-target-prerequisite)
+ [步驟 1：建立 類型的目標群組 alb](#register-application-load-balancer-target)
+ [步驟 2：建立 Network Load Balancer 並設定路由](#configure-application-load-balancer-target)
+ [步驟 3：（選用） 建立 VPC 端點服務](#enable-privatelink)

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

如果您還沒有要用作目標的 Application Load Balancer，請建立負載平衡器、其接聽程式及其目標群組。如需詳細資訊，請參閱《[Application Load Balancer 使用者指南](https://docs.aws.amazon.com/elasticloadbalancing/latest/application/create-application-load-balancer.html)*》中的建立 Application Load Balancer*。

## 步驟 1：建立 類型的目標群組 alb
<a name="register-application-load-balancer-target"></a>

建立類型為 的目標群組`alb`。您可以在建立目標群組或更新版本時，將 Application Load Balancer 註冊為目標。

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

**建立 Application Load Balancer 的目標群組做為目標**

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. 在**基本組態**窗格中，針對**選擇目標類型**，選擇 **Application Load Balancer**。

1. 針對 **Target group name** (目標群組名稱)，輸入目標群組的名稱。

1. 對於 **通訊協定**，只允許 TCP。選取目標群組的 **連接埠** 。此目標群組的連接埠必須符合 Application Load Balancer 的接聽程式連接埠。如果您為此目標群組選擇不同的連接埠，您可以更新 Application Load Balancer 上的接聽程式連接埠，使其相符。

1. 針對 **VPC**，選取目標群組的虛擬私有雲端 (VPC)。這必須與 Application Load Balancer 使用的 VPC 相同。

1. 對於**運作狀態檢查**，請選擇 HTTP 或 HTTPS 做為**運作狀態檢查通訊協定**。運作狀態檢查會傳送至 Application Load Balancer，並使用指定的連接埠、通訊協定與 ping 路徑轉送至其目標。確保您的 Application Load Balancer 具有與運作狀態檢查的連接埠與通訊協定相符的接聽程式，以接收這些運作狀態檢查。

1. （選用） 展開**標籤**。針對每個標籤，選擇**新增標籤**，然後輸入標籤索引鍵和標籤值。

1. 選擇**下一步**。

1. 如果您準備好註冊 Application Load Balancer，請選擇**立即註冊**，視需要覆寫預設連接埠，然後選取 Application Load Balancer。Application Load Balancer 必須在與目標群組相同的連接埠上具有接聽程式。您可以在此負載平衡器上新增或編輯接聽程式，以符合目標群組連接埠，或返回上一個步驟並變更目標群組的連接埠。

   如果您尚未準備好將 Application Load Balancer 註冊為目標，請選擇**稍後註冊**並稍後註冊目標。如需詳細資訊，請參閱[登記目標](target-group-register-targets.md#register-targets)。

1. 選擇 **Create target group (建立目標群組)**。

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

**建立 類型的目標群組 alb**  
使用 [create-target-group](https://docs.aws.amazon.com/cli/latest/reference/elbv2/create-target-group.html) 命令。通訊協定必須是 TCP，且連接埠必須符合 Application Load Balancer 的接聽程式連接埠。

```
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，且連接埠必須符合 Application Load Balancer 的接聽程式連接埠。

```
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：建立 Network Load Balancer 並設定路由
<a name="configure-application-load-balancer-target"></a>

建立 Network Load Balancer 時，您可以設定預設動作，將流量轉送至 Application Load Balancer。

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

**建立 Network Load Balancer**

1. 前往 [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/) 開啟 Amazon EC2 主控台。

1. 在導覽窗格的 **Load Balancing (負載平衡器)**，選擇 **Load Balancer (負載平衡器)**。

1. 選擇 **Create load balancer** (建立負載平衡器)。

1. 在 **Network Load Balancer** 下，選擇**建立**。

1. **基本組態**

   1. 在**負載平衡器名稱**中，輸入 Network Load Balancer 的名稱。

   1. 針對 **Scheme** (機制)，選擇 **Internet-facing** (面對網際網路) 或 **internal** (內部)。面向網際網路的 Network Load Balancer 會透過網際網路將請求從用戶端路由到目標。內部 Network Load Balancer 會使用私有 IP 地址將請求路由至目標。

   1. 針對**負載平衡器 IP 地址類型**，**IPv4**如果您的用戶端使用 IPv4 地址與 Network Load Balancer 通訊，請選擇 IPv4；如果您的用戶端同時使用 IPv4 和 IPv6 地址與 Network Load Balancer 通訊，請選擇 **Dualstack**。

1. **網路映射**

   1. 針對 **VPC**，選取您用於 Application Load Balancer 的相同 VPC。透過面向網際網路的負載平衡器，只有具有網際網路閘道VPCs 可供選取。

   1. 對於**可用區域和子網路**，請選取至少一個可用區域，然後為每個區域選取一個子網路。建議您選取為 Application Load Balancer 啟用的相同可用區域。這可最佳化可用性、擴展和效能。

      (選用) 若要使用靜態 IP 地址，請在每個可用區域的 **Ipv4 設定**選擇**使用 Elastic IP 地址**。使用靜態 IP 地址，您可以將特定 IP 地址加入防火牆的允許清單，或者您可以使用用戶端硬式編碼 IP 地址。

1. **安全群組**

   我們會預先選取負載平衡器 VPC 的預設安全群組。您可以視需要選取其他安全群組。如果您沒有符合您需求的安全群組，請選擇**建立新的安全群組**以立即建立。如需詳細資訊，請參閱《*Amazon VPC 使用者指南*》的[建立安全群組](https://docs.aws.amazon.com/vpc/latest/userguide/creating-security-groups.html)。
**警告**  
如果您現在未將任何安全群組與 Network Load Balancer 建立關聯，則無法稍後建立關聯。
**警告**  
若要使用 QUIC 或 TCP\_QUIC 接聽程式，您的 Network Load Balancer 必須沒有安全群組。

1. **接聽程式和路由**

   1. 預設值是接受連接埠 80 以上 TCP 流量的接聽程式。只有 TCP 接聽程式可以將流量轉送至 Application Load Balancer 目標群組。您必須將 **通訊協定** 作為 **TCP**，但您可以視需要修改 **連接埠** 。

      透過此組態，您可以使用 Application Load Balancer 的 HTTPS 接聽程式來終止 TLS 流量。

   1. 針對**預設動作**，選取您在上一個步驟中建立的目標群組。

   1. （選用） 選擇**新增接聽程式標籤**，然後輸入標籤索引鍵和標籤值。

1. **負載平衡器標籤**

   （選用） 展開**負載平衡器標籤**。選擇**新增標籤**，然後輸入標籤索引鍵和標籤值。如需詳細資訊，請參閱[標籤](load-balancer-tags.md)。

1. **總結**

   檢閱您的組態，然後選擇**建立負載平衡器**。

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

**建立 Network Load Balancer**  
使用 [create-load-balancer](https://docs.aws.amazon.com/cli/latest/reference/elbv2/create-load-balancer.html) 命令。我們建議您使用為 Application Load Balancer 啟用的相同可用區域。

```
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 接聽程式可以將流量轉送至 Application Load Balancer。對於預設動作，請使用您在上一個步驟中建立的目標群組。

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

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

**建立 Network Load Balancer**  
定義 [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 接聽程式可以將流量轉送至 Application Load Balancer。對於預設動作，請使用您在上一個步驟中建立的目標群組。

```
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>

若要使用您在上一個步驟中設定的 Network Load Balancer 做為私有連線的端點，您可以啟用 AWS PrivateLink。這會建立與負載平衡器做為端點服務的私有連線。

**使用 Network Load Balancer 建立 VPC 端點服務**

1. 在導覽窗格上選擇 **Load Balancers (負載平衡器)**。

1. 選取您 Network Load Balancer 的名稱來開啟其詳細資訊頁面。

1. 在 **整合** 索引標籤，擴展 **VPC 端點服務 (AWS PrivateLink)**。

1. 選擇 **Create Endpoint(建立端點)** 來開啟 **Create Endpoint (建立端點)** 頁面。如需其餘步驟，請參閱 *AWS PrivateLink 指南*的 [建立端點服務](https://docs.aws.amazon.com/vpc/latest/privatelink/create-endpoint-service.html#create-endpoint-service-nlb) 。