

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

# 設定 Network Load Balancer
<a name="environments-cfg-nlb"></a>

當您[啟用負載平衡](using-features-managing-env-types.md#using-features.managing.changetype)時，您的 AWS Elastic Beanstalk 環境會配備 Elastic Load Balancing 負載平衡器，以在環境中的執行個體之間分配流量。Elastic Load Balancing 支援多種類型的負載平衡器。若要了解這些資訊，請參閱 [Elastic Load Balancing 使用者指南](https://docs.aws.amazon.com/elasticloadbalancing/latest/userguide/)。Elastic Beanstalk 可以為您建立負載平衡器，或讓您指定已建立的共享負載平衡器。

本主題說明 Elastic Beanstalk 建立並專用於您環境的 [Network Load Balancer](https://docs.aws.amazon.com/elasticloadbalancing/latest/network/) 的組態。如需設定 Elastic Beanstalk 支援之所有負載平衡器類型的詳細資訊，請參閱[您的 Elastic Beanstalk 環境的負載平衡器](using-features.managing.elb.md)。

**注意**  
您可以選擇您的環境只會在環境建立時使用的負載平衡器類型。您可以變更設定，以管理執行之環境的負載平衡器行為。

## 簡介
<a name="environments-cfg-nlb-intro"></a>

透過 Network Load Balancer，預設接聽程式會接受連接埠 80 上的 TCP 請求，並將這些請求分配到您環境中的執行個體。您可以設定運作狀態檢查行為、設定接聽程式連接埠，或在另一個連接埠上新增接聽程式。

**注意**  
有別於 Classic Load Balancer 或 Application Load Balancer，Network Load Balancer 無法擁有應用程式層 (第 7 層) HTTP 或 HTTPS 接聽程式。它僅支援傳輸層 (第 4 層) TCP 接聽程式。HTTP 和 HTTPS 流量可透過 TCP 路由到您的環境。若要在 Web 用戶端與您的環境之間建立安全的 HTTPS 連線，請在環境中的執行個體上安裝[自我簽署的憑證](configuring-https-ssl.md)，並設定執行個體監聽適當的連接埠 (通常是 443) 及終止的 HTTPS 連線。每個組態視平台而有所不同。如需說明，請參閱 [在執行個體設定 HTTPS 終止](https-singleinstance.md)。然後，設定 Network Load Balancer 以新增接聽程式，對應到監聽適當連接埠的程序。

Network Load Balancer 支援主動運作狀態檢查。這些檢查是根據至根 (`/`) 路徑的訊息。此外，Network Load Balancer 還支援被動運作狀態檢查。能夠自動偵測故障的後端執行個體，並僅將流量路由至運作狀態良好的執行個體。

## 使用 Elastic Beanstalk 主控台設定 Network Load Balancer
<a name="environments-cfg-nlb-console"></a>

在環境建立期間或之後在環境執行時，您可以使用 Elastic Beanstalk 主控台設定 Network Load Balancer 的接聽程式和程序。

**若要在環境建立期間於 Elastic Beanstalk 主控台設定 Network Load Balancer**

1. 開啟 [Elastic Beanstalk 主控台](https://console.aws.amazon.com/elasticbeanstalk)，然後在**區域**清單中選取您的 AWS 區域。

1. 在導覽窗格中，選擇 **Environments (環境)**。

1. 選擇 [Create a new environment (建立新環境)](environments-create-wizard.md) 以開始建立您的環境。

1. 在精靈的主頁上，在選擇 **Create environment (建立環境)** 之前，選擇 **Configure more options (設定更多選項)**。

1. 選擇 **High availability (高可用性)** 組態預設。

   或者，在 **Capacity (容量)** 組態類別中，設定**Load balanced (負載平衡器)** 環境類型。如需詳細資訊，請參閱[Capacity](environments-create-wizard.md#environments-create-wizard-capacity)。

1. 在 **Load balancer (負載平衡器)** 組態類別中，選擇 **Edit (編輯)**。

1. 選取 **Network Load Balancer** 選項 (如果尚未選取)。  
![\[Elastic Load Balancing 組態頁面 - 選擇負載平衡器類型\]](http://docs.aws.amazon.com/zh_tw/elasticbeanstalk/latest/dg/images/aeb-config-nlb-type-chooser.png)

1. 根據環境所需，變更任何 Network Load Balancer 組態。

1. 選擇 **Save (儲存)**，然後針對您環境所需對其他組態做變更。

1. 選擇 **Create environment** (建立環境)。

**若要在 Elastic Beanstalk 主控台設定執行中環境的 Network Load Balancer**

1. 開啟 [Elastic Beanstalk 主控台](https://console.aws.amazon.com/elasticbeanstalk)，然後在**區域**清單中選取您的 AWS 區域。

1. 在導覽窗格中，選擇**環境**，然後在清單中選擇您環境的名稱。

1. 在導覽窗格中，選擇**組態**。

1. 在 **Load balancer (負載平衡器)** 組態類別中，選擇 **Edit (編輯)**。
**注意**  
如果 **Load balancer (負載平衡器)** 組態類別沒有 **Edit (編輯)** 按鈕，您的環境便沒有負載平衡器。若要了解如何設定一個負載平衡器，請參閱 [變更環境類型](using-features-managing-env-types.md#using-features.managing.changetype)。

1. 根據環境所需，變更 Network Load Balancer 組態。

1. 若要儲存變更，請選擇頁面底部的**儲存變更**。

**Topics**
+ [接聽程式](#environments-cfg-nlb-console-listeners)
+ [Processes](#environments-cfg-nlb-console-processes)

### 接聽程式
<a name="environments-cfg-nlb-console-listeners"></a>

使用此名單為您的負載平衡器指定接聽程式。每個接聽程式會將傳入用戶端流量路由傳送到您執行個體上的程序。一開始，清單顯示預設的接聽程式，它會將連接埠 80 上傳入的流量路由至接聽自接埠 80 且名為 **default (預設)** 的程序。

![\[Network Load Balancer 組態 - 接聽程式清單\]](http://docs.aws.amazon.com/zh_tw/elasticbeanstalk/latest/dg/images/aeb-config-nlb-listeners.png)


**要設定現有的接聽程式**

1. 選取其表項目旁邊的核取方塊，然後選擇 **Actions (動作)**，**Edit (編輯)**。

1. 使用 **Network Load Balancer listener (Network Load Balancer 接聽程式)** 對話方塊編輯設定，然後選擇 **Save (儲存)**。

**加入接聽程式**

1. 選擇 **Add listener (新增接聽程式)**。

1. 在 **Network Load Balancer listener (Network Load Balancer 接聽程式)** 對話方塊中，設定所需的設定，然後選擇 **Add (新增)**。

使用 **Network Load Balancer listener (Network Load Balancer 接聽程式)** 對話方塊，設定接聽程式監聽流量的連接埠，然後選擇您要將流量路由至哪個程序 (以接聽程式監聽的連接埠指定)。

![\[Network Load Balancer 接聽程式對話方塊\]](http://docs.aws.amazon.com/zh_tw/elasticbeanstalk/latest/dg/images/aeb-config-nlb-listener-dialog.png)


### Processes
<a name="environments-cfg-nlb-console-processes"></a>

使用此名單為您的負載平衡器指定程序。程序為接聽程式路由流量的目標。每個接聽程式會將傳入用戶端流量路由傳送到您執行個體上的程序。一開始，清單顯示接聽於連接埠 80 上傳入的流量的預設程序。

![\[Network Load Balancer 組態 - 程序清單\]](http://docs.aws.amazon.com/zh_tw/elasticbeanstalk/latest/dg/images/aeb-config-nlb-processes.png)


您可以編輯現有程序的設定，或增加新的程序。若要開始編輯清單中的一個程序或新增一個程序，使用列於[接聽程式清單](environments-cfg-alb.md#environments-cfg-alb-console-listeners)的相同步驟。**Environment process (環境程序)** 對話方塊開啟。

**Topics**
+ [定義](#environments-cfg-nlb-console-process-definition)
+ [運作狀態檢查](#environments-cfg-nlb-console-process-healthchecks)

#### 定義
<a name="environments-cfg-nlb-console-process-definition"></a>

使用這些設定來定義程序：它的 **Name (名稱)** 和其接聽請求的 **Process Port (程序連接埠)**。

![\[Network Load Balancer 名稱、接聽程式連接埠和程序連接埠的程序對話方塊設定\]](http://docs.aws.amazon.com/zh_tw/elasticbeanstalk/latest/dg/images/aeb-config-nlb-process-definition.png)


#### 運作狀態檢查
<a name="environments-cfg-nlb-console-process-healthchecks"></a>

使用以下設定以設定程序運作狀態檢查：
+ **Interval (間隔)** - 個別執行個體的每個運作狀態檢查之間的時間，以秒為單位。
+ **Healthy threshold (運作良好閾值)** - 在 Elastic Load Balancing 變更執行個體狀態之前，必須通過的運作狀態檢查數。(就 Network Load Balancer 而言，**Unhealthy threshold (狀態不良閾值)** 是唯讀設定，一律等於運作良好閾值)。
+ **Deregistration delay (取消註冊延遲)** - 在取消註冊執行個體前，等待作用中請求完成的時間，以秒為單位。

![\[Network Load Balancer 運作狀態檢查的程序對話方塊設定\]](http://docs.aws.amazon.com/zh_tw/elasticbeanstalk/latest/dg/images/aeb-config-nlb-process-healthcheck.png)


**注意**  
Elastic Load Balancing 運作狀態檢查不會影響環境 Auto Scaling 群組的運作狀態檢查行為。Amazon EC2 Auto Scaling 將不會自動取代未通過 Elastic Load Balancing 運作狀態檢查的執行個體，除非您手動設定 Amazon EC2 Auto Scaling 執行此項動作。如需詳細資訊，請參閱 [Elastic Beanstalk 環境的 Auto Scaling 運作狀態檢查設定](environmentconfig-autoscaling-healthchecktype.md)。

如需關於運作狀態檢查，以及這些檢查如何影響您環境整體健全狀態的詳細資訊，請參閱[基礎型運作狀態報告](using-features.healthstatus.md)。

## 範例：Network Load Balancer 用於具有端對端加密的環境
<a name="environments-cfg-nlb-console-example"></a>

在此範例中，您的應用程式需要端對端流量加密。若要設定您環境的 Network Load Balancer 以符合這些要求，您必須將預設程序設定為監聽連接埠 443，新增接聽程式至連接埠 443 來將流量路由傳送到預設程序，然後停用預設接聽程式。

**要設定負載平衡器在這個範例**

1. *設定預設程序。*選取預設程序，然後在 **Actions (動作)** 中選擇 **Edit (編輯)**。在 **Process Port (程序連接埠)** 欄位中輸入 `443`。  
![\[Network Load Balancer 組態範例 - 設定預設程序以使用程序連接埠 443\]](http://docs.aws.amazon.com/zh_tw/elasticbeanstalk/latest/dg/images/aeb-config-nlb-example-process-443.png)

1. *新增連接埠 443 接聽程式。*新增一個新的接聽程式。在 **Listener port (接聽程式連接埠)** 中輸入 `443`。確定已在 **Process port (程序連接埠)** 中選取 `443`。  
![\[Network Load Balancer 組態範例 - 新增連接埠 443 接聽程式\]](http://docs.aws.amazon.com/zh_tw/elasticbeanstalk/latest/dg/images/aeb-config-nlb-example-listener-443.png)

   您現在可以查看您清單上的額外接聽程式。  
![\[Network Load Balancer 組態範例 - 有兩個接聽程式的接聽程式清單\]](http://docs.aws.amazon.com/zh_tw/elasticbeanstalk/latest/dg/images/aeb-config-nlb-example-listeners.png)

1. *停用預設的連接埠 80 接聽程式。*針對預設的接聽程式，關閉 **Enabled (已啟用)** 選項。  
![\[Network Load Balancer 組態範例 - 停用預設接聽程式\]](http://docs.aws.amazon.com/zh_tw/elasticbeanstalk/latest/dg/images/aeb-config-nlb-example-listeners-disabled.png)

## 使用 EB CLI 設定 Network Load Balancer
<a name="environments-cfg-nlb-ebcli"></a>

在您執行 [**eb create**](eb3-create.md) 時，EB CLI 會提示您選擇負載平衡器類型。

```
$ eb create
Enter Environment Name
(default is my-app): test-env
Enter DNS CNAME prefix
(default is my-app): test-env-DLW24ED23SF

Select a load balancer type
1) classic
2) application
3) network
(default is 1): 3
```

您亦可透過 `--elb-type` 選項，指定負載平衡器類型。

```
$ eb create test-env --elb-type network
```

## Network Load Balancer 命名空間
<a name="environments-cfg-nlb-namespaces"></a>

您可以在下列命名空間中找到與 Network Load Balancer 相關的設定：
+ `aws:elasticbeanstalk:environment` - 選擇環境的負載平衡器類型。Network Load Balancer 的值為 `network`。
+ `aws:elbv2:listener` - 在 Network Load Balancer 上設定接聽程式。這些設定對應至 Classic Load Balancer 之 `aws:elb:listener` 中的設定。
+ `aws:elasticbeanstalk:environment:process` - 設定運作狀態檢查，並針對執行於環境執行個體的程序，指定連接埠和通訊協定。此連接埠和通訊協定設定，對應至 Classic Load Balancer 接聽程式之 `aws:elb:listener` 中的執行個體連接埠和執行個體通訊協定設定。運作狀態檢查設定則對應至 `aws:elb:healthcheck` 和 `aws:elasticbeanstalk:application` 命名空間內的設定。

**Example .ebextensions/network-load-balancer.config**  
若要開始使用 Network Load Balancer，請使用[組態檔案](ebextensions.md)，將負載平衡器類型設定為 `network`。  

```
option_settings:
  aws:elasticbeanstalk:environment:
    LoadBalancerType: network
```

**注意**  
您只能在建立環境時設定負載平衡器的類型。

**Example .ebextensions/nlb-default-process.config**  
下列組態檔案會修改預設程序的運作狀態檢查設定。  

```
option_settings:
  aws:elasticbeanstalk:environment:process:default:
    DeregistrationDelay: '20'
    HealthCheckInterval: '10'
    HealthyThresholdCount: '5'
    UnhealthyThresholdCount: '5'
    Port: '80'
    Protocol: TCP
```

**Example .ebextensions/nlb-secure-listener.config**  
下列組態檔案會針對連接埠 443 上的安全流量新增接聽程式，以及新增接聽連接埠 443 的相符目標程序。  

```
option_settings:
  aws:elbv2:listener:443:
    DefaultProcess: https
    ListenerEnabled: 'true'
  aws:elasticbeanstalk:environment:process:https:
    Port: '443'
```
`DefaultProcess` 選項以此方式命名，原因是 Application Load Balancer 能夠在相同連接埠上針對送往特定路徑的流量擁有非預設接聽程式 (詳細資訊請參閱[Application Load Balancer](environments-cfg-alb.md))。以 Network Load Balancer 而言，此選項會指定此接聽程式的唯一目標程序。  
在此範例中，我們將程序命名為 `https`，因為它會接聽安全 (HTTPS) 流量。由於 Network Load Balancer 僅能與 TCP 搭配運作，因此接聽程式會使用 TCP 通訊協定，將流量傳送至指定連接埠上的程序。此作法沒問題，因為 HTTP 和 HTTPS 的網路流量實作於 TCP 之上。