

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

# 您的 Elastic Beanstalk 環境的負載平衡器
<a name="using-features.managing.elb"></a>

負載平衡器會在您的環境執行個體之間分配流量。當您[啟用負載平衡時](using-features-managing-env-types.md#using-features.managing.changetype)， 會 AWS Elastic Beanstalk 建立您環境專用的 [Elastic Load Balancing](https://docs.aws.amazon.com/elasticloadbalancing/latest/userguide/) 負載平衡器。Elastic Beanstalk 會完全管理此負載平衡器，處理安全設定，並在終止環境時終止負載平衡器。

或者，您可以選擇在多個 Elastic Beanstalk 環境中共享負載平衡器。透過共享負載平衡器，您可以避免每個環境的專用負載平衡器來節省營運成本。您也會承擔更多環境所使用之共享負載平衡器的管理責任。

Elastic Load Balancing 有下列負載平衡器類型：
+ [Classic Load Balancer](https://docs.aws.amazon.com/elasticloadbalancing/latest/classic/) - 上一代負載平衡器。路由傳送 HTTP、HTTPS 或 TCP 請求流量到不同的連接埠環境執行個體。
+ [Application Load Balancer](https://docs.aws.amazon.com/elasticloadbalancing/latest/application/) - 應用程式層負載平衡器。路由傳送 HTTP 或 HTTPS 根據請求路徑來請求流量到不同的連接埠環境執行個體。
+ [Network Load Balancer](https://docs.aws.amazon.com/elasticloadbalancing/latest/network/) - 網路層負載平衡器。路由傳送 TCP 請求流量到不同的連接埠環境執行個體。支援使用中和被動式的運作狀態檢查。

Elastic Beanstalk 支援所有三種負載平衡器類型。下表顯示您可以搭配兩種使用模式使用的類型：


| 負載平衡器類型 | 專用型 | 共同 | 
| --- | --- | --- | 
|  Classic Load Balancer  |   ![\[Yes\]](http://docs.aws.amazon.com/zh_tw/elasticbeanstalk/latest/dg/images/icon-yes.png) 是  |   ![\[No\]](http://docs.aws.amazon.com/zh_tw/elasticbeanstalk/latest/dg/images/icon-no.png) 否  | 
|  Application Load Balancer  |   ![\[Yes\]](http://docs.aws.amazon.com/zh_tw/elasticbeanstalk/latest/dg/images/icon-yes.png) 是  |   ![\[Yes\]](http://docs.aws.amazon.com/zh_tw/elasticbeanstalk/latest/dg/images/icon-yes.png) 是  | 
|  Network Load Balancer  |   ![\[Yes\]](http://docs.aws.amazon.com/zh_tw/elasticbeanstalk/latest/dg/images/icon-yes.png) 是  |   ![\[No\]](http://docs.aws.amazon.com/zh_tw/elasticbeanstalk/latest/dg/images/icon-no.png) 否  | 

**注意**  
**建立環境**主控台精靈上的 Classic Load Balancer (CLB) 選項已停用。如果您已使用 Classic Load Balancer 設定現有環境，則可以使用 Elastic Beanstalk 主控台或 [EB CLI](using-features.managing.clone.md#using-features.managing.clone.CLI) 來 [複製現有環境](using-features.managing.clone.md)以建立新的環境。您也可以選擇使用 EB CLI 或 [AWS CLI](environments-create-awscli.md)來建立使用 Classic Load Balancer 設定的新環境。這些命令列工具會建立具有 CLB 的新環境，即使您的帳戶中沒有環境存在亦然。

在預設情況下，當您使用 Elastic Beanstalk 主控台或 EB CLI 啟用負載平衡時，Elastic Beanstalk 會為您的環境建立 Application Load Balancer。您的負載平衡器會設定為監聽 80 埠上的 HTTP 傳輸資料，並將此流量轉傳給位於同一個通訊埠上的執行個體。您可以選擇您的環境只會在環境建立時使用的負載平衡器類型。之後您可以變更設定，以管理執行之環境的負載平衡器行為。

**注意**  
您環境所在的 VPC 必須至少在兩個可用區域擁有子網路，如此才能建立 Application Load Balancer。所有新 AWS 帳戶都包含符合此要求的預設 VPCs。

請參閱下列主題以了解 Elastic Beanstalk 支援的每個負載平衡器類型及其功能，如何在 Elastic Beanstalk 環境中進行設定和管理，以及如何設定負載平衡器以將[存取日誌上傳](environments-cfg-loadbalancer-accesslogs.md)到 Amazon S3。

**Topics**
+ [設定 Classic Load Balancer](environments-cfg-clb.md)
+ [設定 Application Load Balancer](environments-cfg-alb.md)
+ [設定共享 Application Load Balancer](environments-cfg-alb-shared.md)
+ [設定 Network Load Balancer](environments-cfg-nlb.md)
+ [設定雙堆疊 Elastic Beanstalk 負載平衡器](environments-cfg-elbv2-ipv6-dualstack.md)
+ [設定存取日誌](environments-cfg-loadbalancer-accesslogs.md)

# 設定 Classic Load Balancer
<a name="environments-cfg-clb"></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 建立並專用於您環境的[Classic Load Balancer](https://docs.aws.amazon.com/elasticloadbalancing/latest/classic/) 的組態。如需設定 Elastic Beanstalk 支援之所有負載平衡器類型的詳細資訊，請參閱[您的 Elastic Beanstalk 環境的負載平衡器](using-features.managing.elb.md)。

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

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

[Classic Load Balancer](https://docs.aws.amazon.com/elasticloadbalancing/latest/classic/) 是 Elastic Load Balancing 上一代的負載平衡器。其支援路由傳送 HTTP、HTTPS 或 TCP 請求流量到不同的連接埠環境執行個體。

當環境使用 Classic Load Balancer 時，Elastic Beanstalk 會預設將它設定為[監聽](https://docs.aws.amazon.com/elasticloadbalancing/latest/classic/elb-listener-config.html)連接埠 80 上的 HTTP 流量，轉送給同一連接埠上的執行個體。雖然您無法刪除連接埠 80 預設接聽程式，但您可以停用它，透過封鎖流量來實現相同的功能。請注意，您可以新增或刪除其他接聽程式。若要支援安全連線，您可以設定負載平衡器使用 443 埠上的接聽程式和 TLS 憑證。

負載平衡器使用[運作狀態檢查](https://docs.aws.amazon.com/elasticloadbalancing/latest/classic/elb-healthchecks.html)功能，判斷執行您應用程式的 Amazon EC2 執行個體狀態是否良好。運作狀態檢查以設定的間隔發出請求至指定的 URL。如果 URL 傳回錯誤訊息，或是無法在指定的逾時期間內回傳，運作狀態檢查就會失敗。

如果您的應用程式在處理從單一伺服器上同一個用戶端傳來的多個請求時，表現較為理想，則您可以設定負載平衡器使用[黏性工作階段](https://docs.aws.amazon.com/elasticloadbalancing/latest/classic/elb-sticky-sessions.html)。使用黏性工作階段時，負載平衡器會在 HTTP 回應中加入 cookie，此 cookie 可用來識別處理請求的 Amazon EC2 執行個體。從同一個用戶端收到後續的請求時，負載平衡器會使用 cookie，來將請求傳送給同一個執行個體。

若使用[跨區域負載平衡](https://docs.aws.amazon.com/elasticloadbalancing/latest/classic/enable-disable-crosszone-lb.html)，Classic Load Balancer 的每個負載平衡器節點會將請求平均分配到所有已啟用可用區域中已註冊的執行個體。若顯示跨區域負載平衡，每個負載平衡器節點會平均地將請求僅分配到其可用區域中已註冊的執行個體。

如果執行個體因為變得運作狀態不佳或環境規模縮減，而從負載平衡器移除，則在結束該執行個體與負載平衡器間的連線之前，[連接耗盡](https://docs.aws.amazon.com/elasticloadbalancing/latest/classic/config-conn-drain.html)功能會給執行個體時間來完成請求。您可以變更留給執行個體來傳送回應的時間長短，或完全停用連接耗盡功能。

**注意**  
當您使用 Elastic Beanstalk 主控台或 EB CLI 建立環境時，連接耗盡功能會預設為啟用。如果使用其他用戶端，您可以透過[組態選項](#environments-cfg-clb-namespace)來啟用此功能。

您可以使用進階的負載平衡器設定，在任意通訊埠上設定接聽程式、修改其他的黏性工作階段設定，和設定負載平衡器安全地連線到 EC2 執行個體。透過[組態選項](#environments-cfg-clb-namespace)即可使用這些設定，這些選項可以在原始程式碼中使用組態檔案來設定，或是使用 Elastic Beanstalk API 直接在環境上設定。這些設定大多也能在 Elastic Beanstalk 主控台使用。此外，您可以設定負載平衡器將[存取日誌上傳](environments-cfg-loadbalancer-accesslogs.md)到 Amazon S3。

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

在環境建立期間或之後在環境執行時，您可以使用 Elastic Beanstalk 主控台設定 Classic Load Balancer 的連接埠、HTTPS 憑證和其他設定。

**注意**  
**建立環境**主控台精靈上的 Classic Load Balancer (CLB) 選項已停用。如果您已使用 Classic Load Balancer 設定現有環境，則可以使用 Elastic Beanstalk 主控台或 [EB CLI](using-features.managing.clone.md#using-features.managing.clone.CLI) 來 [複製現有環境](using-features.managing.clone.md)以建立新的環境。您也可以選擇使用 EB CLI 或 [AWS CLI](environments-create-awscli.md)來建立使用 Classic Load Balancer 設定的新環境。這些命令列工具會建立具有 CLB 的新環境，即使您的帳戶中沒有環境存在亦然。

**若要在 Elastic Beanstalk 主控台設定執行中環境的 Classic 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. 根據環境所需，變更 Classic Load Balancer 組態。

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

**Topics**
+ [接聽程式](#using-features.managing.elb.listeners)
+ [工作階段](#using-features.managing.elb.sessions)
+ [跨區域負載平衡](#using-features.managing.elb.cross-zone)
+ [連接耗盡](#using-features.managing.elb.draining)
+ [運作狀態檢查](#using-features.managing.elb.healthchecks)

### 接聽程式
<a name="using-features.managing.elb.listeners"></a>

使用此名單為您的負載平衡器指定接聽程式。每個接聽程式會使用指定的通訊協定，在指定的連接埠將傳入用戶端流量路由傳送到您的執行個體。最初清單會顯示預設接聽程式，其會將連接埠 80 的 HTTP 傳入流量轉送到您接聽到連接埠 80 上 HTTP 流量的環境執行個體伺服器。

**注意**  
雖然您無法刪除連接埠 80 預設接聽程式，但您可以停用它，透過封鎖流量來實現相同的功能。

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


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

1. 選取表格項目旁的核取方塊，選擇 **Actions (動作)**，然後選擇您要的動作。

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

例如，如果您希望負載平衡器依原狀轉傳請求，您可以編輯預設的接聽程式，並將 **Protocol (通訊協定)** 從 **HTTP** 變更為 **TCP**。這可防止負載平衡器重新撰寫標頭 (包括 `X-Forwarded-For`)。此技術不適用黏性工作階段。

![\[Classic Load Balancer 組態 - 變更預設接聽程式的通訊協定為 TCP\]](http://docs.aws.amazon.com/zh_tw/elasticbeanstalk/latest/dg/images/aeb-config-clb-listeners-tcp.png)


**加入接聽程式**

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

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

新增安全的接聽程式是常用案例。下圖中的範例在連接埠 443 新增 HTTPS 流量的接聽程式。此接聽程式將傳入流量路由傳送到環境執行個體伺服器，其接聽連接埠 443 上的 HTTPS 流量。

在設定接聽程式之前，請確定您擁有有效的 SSL 憑證。執行以下任意一項：
+ 如果您的[AWS 區域有提供](https://docs.aws.amazon.com/general/latest/gr/acm.html) AWS Certificate Manager (ACM)，請使用 ACM 建立或匯入憑證。如需請求 ACM 憑證的詳細資訊，請參閱《*AWS Certificate Manager 使用者指南*》中的[請求憑證](https://docs.aws.amazon.com/acm/latest/userguide/gs-acm-request.html)。如需有關將第三方憑證匯入 ACM 的詳細資訊，請參閱《*AWS Certificate Manager 使用者指南*》中的[匯入憑證](https://docs.aws.amazon.com/acm/latest/userguide/import-certificate.html)。
+ 如果您的[AWS 區域無法使用](https://docs.aws.amazon.com/general/latest/gr/acm.html) ACM，請將現有的憑證和金鑰上傳至 IAM。如需建立和上傳憑證至 IAM 的詳細資訊，請參閱《*IAM 使用者指南*》中的[使用伺服器憑證](https://docs.aws.amazon.com/IAM/latest/UserGuide/ManagingServerCerts.html)。

如需設定 HTTPS 和在 Elastic Beanstalk 中使用憑證的詳細資訊，請參閱[為您的 Elastic Beanstalk 環境設定 HTTPS](configuring-https.md)。

針對 **SSL certificate (SSL 憑證)**，選擇您 SSL 憑證的 ARN。例如 `arn:aws:iam::123456789012:server-certificate/abc/certs/build` 或 `arn:aws:acm:us-east-2:123456789012:certificate/12345678-12ab-34cd-56ef-12345678`。

![\[Classic Load Balancer 組態 - 新增安全接聽程式\]](http://docs.aws.amazon.com/zh_tw/elasticbeanstalk/latest/dg/images/aeb-config-clb-listeners-https.png)


如需關於設定 HTTPS 和在 Elastic Beanstalk 中使用憑證的詳細資訊，請參閱[為您的 Elastic Beanstalk 環境設定 HTTPS](configuring-https.md)。

### 工作階段
<a name="using-features.managing.elb.sessions"></a>

選取或清除 **Session stickiness enabled (工作階段黏著已啟用)** 方塊，以啟用或停用黏性工作階段。使用 **Cookie duration (Cookie 持續時間)** 設定黏性工作階段的持續時間，最長 **1000000** 秒。在 **Load balancer ports (負載平衡器連接埠)** 清單上，選取預設政策 (`AWSEB-ELB-StickinessPolicy`) 適用的接聽程式連接埠。

![\[Classic Load Balancer 的工作階段粘性和持續時間的設定\]](http://docs.aws.amazon.com/zh_tw/elasticbeanstalk/latest/dg/images/aeb-config-elb-sessions.png)


### 跨區域負載平衡
<a name="using-features.managing.elb.cross-zone"></a>

選取或清除 **Load balancing across multiple Availability Zones enabled (橫跨多個可用區域啟用負載平衡)** 方塊，以啟用或停用跨區域負載平衡。

![\[Classic Load Balancer 的跨區域負載平衡設定\]](http://docs.aws.amazon.com/zh_tw/elasticbeanstalk/latest/dg/images/aeb-config-elb-cross-zone.png)


### 連接耗盡
<a name="using-features.managing.elb.draining"></a>

選取或清除 **Connection draining enabled (啟用連接耗盡)** 方塊，以啟用或停用連接耗盡。設定 **Draining timeout (耗盡逾時)**，最長 **3600** 秒。

![\[Classic Load Balancer 的連接耗盡和耗盡逾時設定\]](http://docs.aws.amazon.com/zh_tw/elasticbeanstalk/latest/dg/images/aeb-config-elb-draining.png)


### 運作狀態檢查
<a name="using-features.managing.elb.healthchecks"></a>

使用以下設定負載平衡器運作狀態檢查：
+ **Health check path (運作狀態檢查路徑)** - 負載平衡器傳送運作狀態檢查的路徑。如果未設定路徑，負載平衡器就會嘗試在連接埠 80 上進行 TCP 連線，以驗證執行狀況。
+ **Timeout (逾時)** - 等待運作狀態檢查回應的時間，以秒為單位。
+ **Interval (間隔)** - 個別執行個體的每個運作狀態檢查之間的時間，以秒為單位。間隔必須大於逾時期間。
+ **Unhealthy threshold (狀態不良閾值)**、**Healthy threshold (運作良好閾值)** - 在 Elastic Load Balancing 變更執行個體狀態之前，分別必須失敗或通過的運作狀態檢查數。

![\[Classic Load Balancer 的運作狀態檢查設定\]](http://docs.aws.amazon.com/zh_tw/elasticbeanstalk/latest/dg/images/aeb-config-elb-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)。

## 使用 EB CLI 設定 Classic Load Balancer
<a name="environments-cfg-clb-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):
```

按 ** Enter ** 選擇 `classic`。

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

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

## Classic Load Balancer 組態命名空間
<a name="environments-cfg-clb-namespace"></a>

您可以在下列命名空間中找到與 Classic Load Balancer 相關的設定：
+ [`aws:elb:healthcheck`](command-options-general.md#command-options-general-elbhealthcheck) - 設定負載平衡器運作狀態檢查的閾值、檢查間隔和逾時時間。
+ [`aws:elasticbeanstalk:application`](command-options-general.md#command-options-general-elasticbeanstalkapplication) - 設定運作狀態檢查 URL。
+ [`aws:elb:loadbalancer`](command-options-general.md#command-options-general-elbloadbalancer) - 啟用跨區域負載平衡。指派安全群組給負載平衡器，並覆寫掉 Elastic Beanstalk 所建立的預設安全群組。此命名空間也包含已作廢的選項，這些選項是用來設定標準和安全接聽程式，已經被 `aws:elb:listener` 命名空間中的選項所取代。
+ [`aws:elb:listener`](command-options-general.md#command-options-general-elblistener) - 設定連接埠 80 上的預設接聽程式、連接埠 443 上的安全接聽程式，或是任意埠上針對任何通訊協定的其他接聽程式。如果您指定 `aws:elb:listener` 做為命名空間，則設定會套用到 80 埠上的預設接聽程式。如果您指定了通訊埠 (例如，`aws:elb:listener:443`)，也會設定該通訊埠上的接聽程式。
+ [`aws:elb:policies`](command-options-general.md#command-options-general-elbpolicies) - 針對您的負載平衡器進行額外的設定。使用此命名空間中的選項，在任意連接埠上設定接聽程式、修改其他黏性工作階段設定，和設定負載平衡器以安全地連線到 Amazon EC2 執行個體。

EB CLI 和 Elastic Beanstalk 主控台會為前述選項套用建議的數值。若您想要使用組態檔進行相同的設定，您必須移除這些設定。如需詳細資訊，請參閱「[建議值](command-options.md#configuration-options-recommendedvalues)」。

**Example .ebextensions/loadbalancer-terminatehttps.config**  
下列的範例組態檔案在 443 埠上建立了 HTTPS 接聽程式、指派負載平衡器用來終止安全連線的憑證，並停用 80 埠上的預設接聽程式。負載平衡器會將解密的請求，轉傳到您環境中位於 HTTP:80 的 EC2 執行個體。  

```
option_settings:
  aws:elb:listener:443:
    ListenerProtocol: HTTPS
    SSLCertificateId: arn:aws:acm:us-east-2:123456789012:certificate/12345678-12ab-34cd-56ef-12345678
    InstancePort: 80
    InstanceProtocol: HTTP
  aws:elb:listener:
    ListenerEnabled: false
```

# 設定 Application Load Balancer
<a name="environments-cfg-alb"></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 建立並專用於您環境的 [Application Load Balancer](https://docs.aws.amazon.com/elasticloadbalancing/latest/application/) 的組態。另請參閱[設定共享 Application Load Balancer](environments-cfg-alb-shared.md)。如需設定 Elastic Beanstalk 支援之所有負載平衡器類型的詳細資訊，請參閱[您的 Elastic Beanstalk 環境的負載平衡器](using-features.managing.elb.md)。

**注意**  
您可以選擇您的環境只會在環境建立時使用的負載平衡器類型。您可以變更設定，以管理執行之環境的負載平衡器行為。您也無法從專用的負載平衡器切換到共享負載平衡器，反之亦然。

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

Application Load Balancer 會檢查應用程式網路通訊協定層的流量來識別請求的路徑，以便將送往不同路徑的請求導向不同目的地。

您的環境若使用 Application Load Balancer，Elastic Beanstalk 會預設將其設定為執行與 Classic Load Balancer 相同的功能。預設的接聽程式會接受 80 埠上的 HTTP 請求，並將這些請求分送到您環境中的執行個體。您可以在連接埠 443 上新增安全接聽程式 (此程式具有解密 HTTPS 傳輸資料的憑證)、設定運作狀態檢查的動作，以及將負載平衡器傳來的存取日誌推送到 Amazon Simple Storage Service (Amazon S3) 儲存貯體。

**注意**  
有別於 Classic Load Balancer 或 Network Load Balancer，Application Load Balancer 無法擁有傳輸層 (第 4 層) TCP 或 SSL/TLS 接聽程式。它僅支援 HTTP 和 HTTPS 接聽程式。此外，它無法使用後端身分驗證以驗證於負載平衡器之間與後端執行個體之間的 HTTPS 連線。

在 Elastic Beanstalk 環境中，您可以使用 Application Load Balancer，將送往某些路徑的流量導向 Web 伺服器執行個體上的不同程序。使用 Classic Load Balancer 時，傳送到接聽程式的所有流量，都會路由傳送至後端執行個體上的單一程序。使用 Application Load Balancer 時，您可以在接聽程式上設定多項「規則」**，來將目的地為某些路徑的請求，路由傳送到不同的後端程序。您可以使用程序接聽的連接埠來設定每個程序。

例如，您可以執行和主要應用程式分開的登入程序。當於您環境執行個體上主要的應用程式接受大部分的請求和接聽連接埠 80 時，您的登入程序則會接聽連接埠 5000 並接受傳至 `/login` 路徑的請求。所有自用戶端內送的要求皆於連接埠 80 進來。使用 Application Load Balancer 時，您可以在連接埠 80 上設定用於傳入流量的單一接聽程式，透過兩個規則將流量根據請求中的路徑分別路由傳送到兩個個別程序。您可以新增自訂規則，將流量路由傳送至 `/login` 之後再送到登入處理序接聽連接埠 5000。預設的規則為路由所有其他流量至在連接埠 80 上的主要應用程式接聽。

Application Load Balancer 規則會將請求對應至「目標群組」**。在 Elastic Beanstalk 中，目標群組由「程序」**表示。您可以使用協定、連接埠以及運作狀態檢查設定來設定程序。此程序代表您環境中的執行個體上執行的程序。預設程序是反向代理 (nginx 或 Apache) 80 埠上的接聽程式，此反向代理會在您應用程式的前景執行。

**注意**  
在 Elastic Beanstalk 外，目標群組對應至一組執行個體。接聽程式可使用規則和目標群組，根據路徑將流量路由到不同的執行個體。在 Elastic Beanstalk 內，您環境中的所有執行個體都是相同的，因此差別在於監聽不同連接埠的程序。

Classic Load Balancer 針對整個環境使用單一運作狀態檢查路徑。使用 Application Load Balancer 時，每個程序都有個別的運作狀態檢查路徑，該路徑由負載平衡器和 Elastic Beanstalk 增強型運作狀態監控進行監控。

若要使用 Application Load Balancer，您的環境必須在預設或自訂 VPC 中，而且必須擁有具備一組標準許可的服務角色。如果您有較舊的服務角色，可能會需要[更新其權限](iam-instanceprofile.md#iam-instanceprofile-addperms)，來納入 `elasticloadbalancing:DescribeTargetHealth` 和 `elasticloadbalancing:DescribeLoadBalancers`。如需 Application Load Balancer 的詳細資訊，請參閱[什麼是 Application Load Balancer？](https://docs.aws.amazon.com/elasticloadbalancing/latest/application/)。

**注意**  
Application Load Balancer 運作狀態檢查不使用 Elastic Beanstalk 運作狀態檢查路徑。反之，它為每個程序各別使用特定的路徑設定。

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

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

**若要在環境建立期間於 Elastic Beanstalk 主控台設定 Application 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. 選取 **Application Load Balancer** 和 **Dedicated (專用)** 選項 (如果尚未選取)。  
![\[Elastic Load Balancing 組態頁面 - 選擇負載平衡器類型\]](http://docs.aws.amazon.com/zh_tw/elasticbeanstalk/latest/dg/images/aeb-config-alb-type-chooser.png)

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

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

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

**若要在 Elastic Beanstalk 主控台設定執行中環境的 Application 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. 根據環境所需，變更 Application Load Balancer 組態。

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

**Topics**
+ [接聽程式](#environments-cfg-alb-console-listeners)
+ [Processes](#environments-cfg-alb-console-processes)
+ [Rules](#environments-cfg-alb-console-rules)
+ [存取日誌擷取](#environments-cfg-alb-console-logs)

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

使用此名單為您的負載平衡器指定接聽程式。每個接聽程式會藉由特定的通訊協定至您執行個體上的一個或多個程序，將傳入用戶端流量路由至指定的連接埠上。一開始，清單會顯示將連接埠 80 上傳入的 HTTP 流量路由傳送至名為**預設**的接聽程式。

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


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

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

1. 使用 **Application Load Balancer listener (應用程式負載平衡器接聽程式)** 對話方塊編輯設定，然後選擇 **Save (儲存)**。

**加入接聽程式**

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

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

使用 **Application Load Balancer 接聽程式**對話方塊設定來選擇接聽程式接聽流量的連接埠和協定。如果您選擇 HTTPS 通訊協定，請設定 SSL 設定。

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


在設定接聽程式之前，請確定您擁有有效的 SSL 憑證。執行以下任意一項：
+ 如果您的[AWS 區域有提供](https://docs.aws.amazon.com/general/latest/gr/acm.html) AWS Certificate Manager (ACM)，請使用 ACM 建立或匯入憑證。如需請求 ACM 憑證的詳細資訊，請參閱《*AWS Certificate Manager 使用者指南*》中的[請求憑證](https://docs.aws.amazon.com/acm/latest/userguide/gs-acm-request.html)。如需有關將第三方憑證匯入 ACM 的詳細資訊，請參閱《*AWS Certificate Manager 使用者指南*》中的[匯入憑證](https://docs.aws.amazon.com/acm/latest/userguide/import-certificate.html)。
+ 如果您的[AWS 區域無法使用](https://docs.aws.amazon.com/general/latest/gr/acm.html) ACM，請將現有的憑證和金鑰上傳至 IAM。如需建立和上傳憑證至 IAM 的詳細資訊，請參閱《*IAM 使用者指南*》中的[使用伺服器憑證](https://docs.aws.amazon.com/IAM/latest/UserGuide/ManagingServerCerts.html)。

如需設定 HTTPS 和在 Elastic Beanstalk 中使用憑證的詳細資訊，請參閱[為您的 Elastic Beanstalk 環境設定 HTTPS](configuring-https.md)。

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

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

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


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

**Topics**
+ [定義](#environments-cfg-alb-console-process-definition)
+ [運作狀態檢查](#environments-cfg-alb-console-process-healthchecks)
+ [工作階段](#environments-cfg-alb-console-process-sessions)

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

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

![\[Application Load Balancer 名稱、連接埠和通訊協定的程序設定\]](http://docs.aws.amazon.com/zh_tw/elasticbeanstalk/latest/dg/images/aeb-config-alb-process-definition.png)


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

使用以下設定以設定程序運作狀態檢查：
+ **HTTP code (HTTP 代碼)** - 指定運作狀態良好程序的 HTTP 狀態碼。
+ **Path (路徑)** - 程序的運作狀態檢查請求路徑。
+ **Timeout (逾時)** - 等待運作狀態檢查回應的時間，以秒為單位。
+ **Interval (間隔)** - 個別執行個體的每個運作狀態檢查之間的時間，以秒為單位。間隔必須大於逾時期間。
+ **Unhealthy threshold (狀態不良閾值)**、**Healthy threshold (運作良好閾值)** - 在 Elastic Load Balancing 變更執行個體狀態之前，分別必須失敗或通過的運作狀態檢查數。
+ **Deregistration delay (取消註冊延遲)** - 在取消註冊執行個體前，等待作用中請求完成的時間，以秒為單位。

![\[Application Load Balancer 運作狀態檢查的程序設定\]](http://docs.aws.amazon.com/zh_tw/elasticbeanstalk/latest/dg/images/aeb-config-alb-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)。

#### 工作階段
<a name="environments-cfg-alb-console-process-sessions"></a>

選取或清除 **Stickiness policy enabled (啟用黏性政策)** 方塊，以啟用或停用黏性工作階段。使用 **Cookie duration (Cookie 持續時間)** 設定黏性工作階段的持續時間，最長 **604800** 秒。

![\[Application Load Balancer 工作階段粘性的程序設定\]](http://docs.aws.amazon.com/zh_tw/elasticbeanstalk/latest/dg/images/aeb-config-alb-process-sessions.png)


### Rules
<a name="environments-cfg-alb-console-rules"></a>

使用此名單為您的負載平衡器指定自訂接聽程式規則。規則映射在特定路徑模式接聽程式接收到的要求於目標程序中。每個接聽程式可以有多個規則，在您的執行個體上於不同的路徑路由請求到不同的程序。

規則有數字優先順序，判斷套用到傳入要求的優先順序。對於您新增的每個新接聽程式，Elastic Beanstalk 會新增一個將所有接聽程式的流量都路由傳送到預設程序的預設規則。預設規則的優先順序是最低的，如果相同的接聽程式沒有其它規則符合傳入的請求，則套用。一開始，如果您尚未新增自訂規則，清單會是空的。不會顯示所有接聽程式的預設規則。

![\[Application Load Balancer 組態 - 規則清單\]](http://docs.aws.amazon.com/zh_tw/elasticbeanstalk/latest/dg/images/aeb-config-alb-rules.png)


您可以編輯現有規則的設定，或增加新的規則。若要開始編輯清單中的一個規則或新增一個規則，使用列於[接聽程式清單](#environments-cfg-alb-console-listeners)的相同步驟。**Listener rule (接聽程式規則)** 對話方塊開啟，依以下設定：
+ **Name (名稱)** - 規則的名稱。
+ **Listener port (接聽程式連接埠)** - 套用規則的接聽程式連接埠。
+ **Priority (優先順序)** - 規則的優先順序。較低的號碼有較高的優先順序。接聽程式規則的優先順序必須是唯一的。
+ **Match conditions (比對條件)** - 要套用規則的請求 URL 條件清單。條件有兩種類型： **HostHeader** (URL 的網域部分) 以及 **PathPattern** (URL 的路徑部分)。您最多可以新增五個條件。每個條件值最多可包含 128 個字元，且可包含萬用字元。
+ **Process (程序)** - 負載平衡器路由傳送符合規則之請求的目標程序。

當編輯任何現有的規則，您無法更改其 **Name (名稱)** 和 **Listener port (接聽程式連接埠)**。

![\[Application Load Balancer 組態 - 規則清單\]](http://docs.aws.amazon.com/zh_tw/elasticbeanstalk/latest/dg/images/aeb-config-alb-rule-dialog.png)


### 存取日誌擷取
<a name="environments-cfg-alb-console-logs"></a>

使用這些設定可設定 Elastic Load Balancing 以擷取日誌，其中包含傳送至 Application Load Balancer 之請求的詳細資訊。存取日誌擷取預設為停用。啟用 **Store logs (存放日誌)** 時，Elastic Load Balancing 會將日誌存放在您設定的 **S3 bucket (S3 儲存貯體)**。**Prefix (字首)** 設定會指定儲存貯體中存放日誌的最上層資料夾。Elastic Load Balancing 會將日誌放在此字首之下名為 `AWSLogs` 的資料夾。如果不指定字首，Elastic Load Balancing 會將該資料夾放在儲存貯體的根層級。

**注意**  
如果您為存取日誌擷取設定的 Amazon S3 儲存貯體不是 Elastic Beanstalk 為您的帳戶建立的儲存貯體，請務必將具有適當許可的使用者政策新增至您的 AWS Identity and Access Management (IAM) 使用者。Elastic Beanstalk 僅提供 Elastic Beanstalk 受管資源的許可的[受管使用者政策](AWSHowTo.iam.managed-policies.md)。

如需有關存取日誌的詳細資訊，包括許可和其他要求，請參閱 [Application Load Balancer 的存取日誌](https://docs.aws.amazon.com/elasticloadbalancing/latest/application/load-balancer-access-logs.html)。

![\[Application Load Balancer 組態 - 存取日誌\]](http://docs.aws.amazon.com/zh_tw/elasticbeanstalk/latest/dg/images/aeb-config-alb-logs.png)


## 範例：具有安全接聽程式和兩個程序的 Application Load Balancer
<a name="environments-cfg-alb-console-example"></a>

在這個範例中，您的應用程式需要端對端流量加密和單獨的程序以處理管理請求。

若要設定您環境的 Application Load Balancer 以滿足這些請求，請移除預設接聽程式，新增 HTTPS 接聽程式，指出預設程序會監聽 HTTPS 上的連接埠 443，然後新增程序和接聽程式規則以用於不同路徑的管理流量。

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

1. *新增一個安全接聽程式。*對於**連接埠**，請輸入 **443**。對於**通訊協定**，請選取 **HTTPS**。對於 **SSL 憑證**，請選擇您 SSL 憑證的 ARN。例如 **arn:aws:iam::123456789012:server-certificate/abc/certs/build** 或 **arn:aws:acm:us-east-2:123456789012:certificate/12345678-12ab-34cd-56ef-12345678**。

   對於**預設程序**，請保持選取 **default**。  
![\[Application Load Balancer 組態 - 新增安全接聽程式\]](http://docs.aws.amazon.com/zh_tw/elasticbeanstalk/latest/dg/images/aeb-config-alb-listeners-https.png)

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

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

1. *設定預設程序至 HTTPS。*選取預設程序，然後在 **Actions (動作)** 中選擇 **Edit (編輯)**。對於**連接埠**，請輸入 **443**。對於**通訊協定**，請選取 **HTTPS**。  
![\[Application Load Balancer 組態範例 - 將預設程序設定為 HTTPS\]](http://docs.aws.amazon.com/zh_tw/elasticbeanstalk/latest/dg/images/aeb-config-alb-process-definition-https.png)

1. *新增管理程序。*在 **Name (名稱)** 輸入 **admin**。對於**連接埠**，請輸入 **443**。對於**通訊協定**，請選取 **HTTPS**。對於**運作狀態檢查**下方的**路徑**，請輸入 **/admin**。  
![\[Application Load Balancer 組態範例 - 新增管理程序\]](http://docs.aws.amazon.com/zh_tw/elasticbeanstalk/latest/dg/images/aeb-config-alb-process-definition-https-admin.png)

1. *為管理流量新增一個規則。*在 **Name (名稱)** 輸入 **admin**。在 **Listener port (接聽程式連接埠)** 中輸入 **443**。對於**比對條件**，新增一個帶有**/admin/\$1**值的 **PathPattern**。對於**程序**，請選取 **admin**。  
![\[Application Load Balancer 組態範例 - 新增管理規則\]](http://docs.aws.amazon.com/zh_tw/elasticbeanstalk/latest/dg/images/aeb-config-alb-rule-https-admin.png)

## 使用 EB CLI 設定 Application Load Balancer
<a name="environments-cfg-alb-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 2):
```

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

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

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

您可以在下列命名空間找到與 Application Load Balancer 相關的設定：
+ `aws:elasticbeanstalk:environment` - 選擇環境的負載平衡器類型。Application Load Balancer 的值為 `application`。

  您無法在組態檔案 ([.Ebextensions](ebextensions.md)) 中設定此選項。
+ `aws:elbv2:loadbalancer` - 將套用至 Application Load Balancer 的存取日誌和其他設定進行整體設定。
+ `aws:elbv2:listener` - 設定 Application Load Balancer 上的接聽程式。這些設定對應至 Classic Load Balancer 之 `aws:elb:listener` 中的設定。
+ `aws:elbv2:listenerrule` - 設定規則，根據請求的路徑，將流量路由傳送至不同程序。規則對 Application Load Balancer 是唯一的。
+ `aws:elasticbeanstalk:environment:process` - 設定運作狀態檢查，並針對執行於環境執行個體的程序，指定連接埠和通訊協定。此連接埠和通訊協定設定，對應至 Classic Load Balancer 接聽程式之 `aws:elb:listener` 中的執行個體連接埠和執行個體通訊協定設定。運作狀態檢查設定則對應至 `aws:elb:healthcheck` 和 `aws:elasticbeanstalk:application` 命名空間內的設定。

**Example .ebextensions/alb-access-logs.config**  
下列組態檔案可讓您使用 Application Load Balancer 上傳環境的存取日誌。  

```
option_settings:
  aws:elbv2:loadbalancer:
    AccessLogsS3Bucket: amzn-s3-demo-bucket
    AccessLogsS3Enabled: 'true'
    AccessLogsS3Prefix: beanstalk-alb
```

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

```
option_settings:
  aws:elasticbeanstalk:environment:process:default:
    DeregistrationDelay: '20'
    HealthCheckInterval: '15'
    HealthCheckPath: /
    HealthCheckTimeout: '5'
    HealthyThresholdCount: '3'
    UnhealthyThresholdCount: '5'
    Port: '80'
    Protocol: HTTP
    StickinessEnabled: 'true'
    StickinessLBCookieDuration: '43200'
```

**Example .ebextensions/alb-secure-listener.config**  
下列的組態檔案在連接埠 443 上新增了安全接聽程式和對應的程序。  

```
option_settings:
  aws:elbv2:listener:443:
    DefaultProcess: https
    ListenerEnabled: 'true'
    Protocol: HTTPS
    SSLCertificateArns: arn:aws:acm:us-east-2:123456789012:certificate/21324896-0fa4-412b-bf6f-f362d6eb6dd7
  aws:elasticbeanstalk:environment:process:https:
    Port: '443'
    Protocol: HTTPS
```

**Example .ebextensions/alb-admin-rule.config**  
下列的組態檔案新增了具備使用 `/admin` 請求路徑路由流量至在連接埠 4443 上接聽名為 `admin` 程序的規則。  

```
option_settings:
  aws:elbv2:listener:443:
    DefaultProcess: https
    ListenerEnabled: 'true'
    Protocol: HTTPS
    Rules: admin
    SSLCertificateArns: arn:aws:acm:us-east-2:123456789012:certificate/21324896-0fa4-412b-bf6f-f362d6eb6dd7
  aws:elasticbeanstalk:environment:process:https:
    Port: '443'
    Protocol: HTTPS
  aws:elasticbeanstalk:environment:process:admin:
    HealthCheckPath: /admin
    Port: '4443'
    Protocol: HTTPS
  aws:elbv2:listenerrule:admin:
    PathPatterns: /admin/*
    Priority: 1
    Process: admin
```

# 設定共享 Application Load Balancer
<a name="environments-cfg-alb-shared"></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 可以為您建立負載平衡器，或讓您能夠指定已建立的共享負載平衡器。

本主題說明您建立並與環境產生關聯的共享 [Application Load Balancer](https://docs.aws.amazon.com/elasticloadbalancing/latest/application/) 組態。另請參閱[設定 Application Load Balancer](environments-cfg-alb.md)。如需設定 Elastic Beanstalk 支援之所有負載平衡器類型的詳細資訊，請參閱[您的 Elastic Beanstalk 環境的負載平衡器](using-features.managing.elb.md)。

**注意**  
您可以選擇您的環境只會在環境建立時使用的負載平衡器類型。您可以變更設定，以管理執行之環境的負載平衡器行為。您也無法從專用的負載平衡器切換到共享負載平衡器，反之亦然。

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

「共享負載平衡器」**是您用 Amazon Elastic Compute Cloud (Amazon EC2) 服務建立和自我管理的一種負載平衡器，之後可在多個 Elastic Beanstalk 環境中使用。

當您建立負載平衡、具擴展性的環境並選擇使用 Application Load Balancer 時，Elastic Beanstalk 預設會建立專用於您環境的負載平衡器。若要了解 Application Load Balancer 是什麼，以及它在 Elastic Beanstalk 環境中的運作方式，請參閱[簡介](environments-cfg-alb.md#environments-cfg-alb-intro)來為 Elastic Beanstalk 設定 Application Load Balancer。

在某些情況下，您可能想要節省擁有多個專用負載平衡器的成本。當您有多個環境時，例如，如果您的應用程式是微型服務套件，而不是整合式服務，這將會十分實用。在這種情況下，您可以選擇使用共享負載平衡器。

若要使用共享負載平衡器，請先在 Amazon EC2 中建立它，然後新增一個或多個接聽程式。接著在建立 Elastic Beanstalk 環境期間，您提供負載平衡器並選擇接聽程式連接埠。Elastic Beanstalk 會將接聽程式與您環境中的預設程序產生關聯。您可以新增自訂接聽程式規則，將流量從特定主機標頭和路徑路由傳送至其他環境處理程序。

Elastic Beanstalk 會將標籤新增至共享負載平衡器。標籤名稱為 `elasticbeanstalk:shared-elb-environment-count`，其值為共享此負載平衡器的環境數目。

使用共享負載平衡器與使用專用負載平衡器的方式不同。


| Regarding | 專用 Application Load Balancer | 共享 Application Load Balancer | 
| --- | --- | --- | 
|  管理  |  Elastic Beanstalk 會建立和管理負載平衡器、接聽程式、接聽程式規則和程序 (目標群組)。Elastic Beanstalk 也會在您終止環境時移除它們。Elastic Beanstalk 可以設定負載平衡器存取日誌擷取 (如果您選擇該選項)。  |  您可以在 Elastic Beanstalk 之外建立和管理負載平衡器和接聽程式。Elastic Beanstalk 會建立和管理預設規則和預設程序，而您可以新增規則和程序。Elastic Beanstalk 會移除環境建立期間新增的接聽程式規則和程序。  | 
|  接聽程式規則  |  Elastic Beanstalk 為每個接聽程式建立一個預設規則，以將所有流量路由傳送到接聽程式的預設程序。  |  Elastic Beanstalk 只會將預設規則與連接埠 80 接聽程式 (如果存在) 產生關聯。如果您選擇不同的預設接聽程式連接埠，則必須將預設規則與其產生關聯 (Elastic Beanstalk 主控台和 EB CLI 會為您執行此操作)。 為了解決共享負載平衡器環境間的接聽程式規則條件衝突，Elastic Beanstalk 會將環境的 CNAME 做為主機標頭條件新增至接聽程式規則。 Elastic Beanstalk 將規則優先順序設定視為共享負載平衡器環境間的相對優先順序，並在建立期間將其對應至絕對優先順序。  | 
|  Security groups (安全群組)  |  Elastic Beanstalk 會建立預設安全群組，並將其連接至負載平衡器。  |  您可以設定一或多個安全群組以用於負載平衡器。如果不這樣做，Elastic Beanstalk 會檢查 Elastic Beanstalk 所管理的現有安全群組是否已連接至負載平衡器。如果沒有，Elastic Beanstalk 會建立安全群組，並將其連接至負載平衡器。當共享負載平衡器的最後一個環境終止時，Elastic Beanstalk 會刪除此安全群組。  | 
|  更新  |  您可以在建立環境後更新您的 Application Load Balancer。您可以編輯接聽程式、接聽程式規則和處理程序。您可以設定負載平衡器存取日誌擷取。  |  您無法使用 Elastic Beanstalk 在您的 Application Load Balancer 中設定存取日誌擷取，並且在建立環境後無法更新接聽程式和接聽程式規則。您只能更新處理程序 (目標群組)。若要設定存取日誌擷取，以及更新接聽程式和接聽程式規則，請使用 Amazon EC2。  | 

## 使用 Elastic Beanstalk 主控台設定共享 Application Load Balancer
<a name="environments-cfg-alb-shared-console"></a>

在建立環境期間，您可以使用 Elastic Beanstalk 主控台設定共享 Application Load Balancer。您可以選取其中一個帳戶的可共享負載平衡器以用於環境、選取預設接聽程式連接埠，以及設定其他處理程序和接聽程式規則。

建立環境之後，您無法在 Application Load Balancer 主控台中編輯共享 Application Load Balancer 組態。若要設定接聽程式、接聽程式規則、程序 (目標群組) 和存取日誌擷取，請使用 Amazon EC2。

**若要在環境建立期間於 Elastic Beanstalk 主控台設定 Application 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. 選取 **Application Load Balancer** 選項 (如果尚未選取)，然後選取 **Shared (共享)** 選項。  
![\[Elastic Load Balancing 組態頁面 - 選擇負載平衡器類型\]](http://docs.aws.amazon.com/zh_tw/elasticbeanstalk/latest/dg/images/aeb-config-alb-shared-type-chooser.png)

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

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

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

**Topics**
+ [共享 Application Load Balancer](#environments-cfg-alb-shared-console-alb)
+ [Processes](#environments-cfg-alb-shared-console-processes)
+ [Rules](#environments-cfg-alb-shared-console-rules)

### 共享 Application Load Balancer
<a name="environments-cfg-alb-shared-console-alb"></a>

使用此區段可為您的環境選擇共享 Application Load Balancer，並設定預設流量路由。

在您可以在此設定共享 Application Load Balancer 之前，請先使用 Amazon EC2 在您的帳戶中至少定義一個用於共享的 Application Load Balancer，內含至少一個接聽程式。如果您尚未這麼做，可以選擇 **Manage load balancers (管理負載平衡器)**。Elastic Beanstalk 會在新的瀏覽器標籤中開啟 Amazon EC2 主控台。

當您在 Elastic Beanstalk 外完成設定共享負載平衡器時，請在此主控台區段中設定下列設定：
+ **Load balancer ARN (負載平衡器 ARN)** - 在此環境中使用的共享負載平衡器。從負載平衡器清單中選取，或輸入負載平衡器 Amazon Resource Name (ARN)。
+ **Default listener port (預設接聽程式連接埠)** - 共享負載平衡器監聽的接聽程式連接埠。從現有的接聽程式連接埠清單中選取。來自此接聽程式的流量 (含有主機標頭中環境的 CNAME)，會路由傳送至此環境中的預設程序。

![\[Application Load Balancer 組態 - 選擇共享負載平衡器\]](http://docs.aws.amazon.com/zh_tw/elasticbeanstalk/latest/dg/images/aeb-config-alb-shared-alb.png)


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

使用此名單為您的負載平衡器指定處理程序。程序為接聽程式路由流量的目標。一開始，此清單會顯示預設程序，該程序會從預設接聽程式接收流量。

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


**設定現有處理程序**

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

1. 使用**環境處理程序**對話方塊編輯設定，然後選擇**儲存**。

**若要新增處理程序**

1. 選擇**新增處理程序**。

1. 在**環境處理程序**對話方塊中，設定您想要的設定，然後選擇**新增**。

**Topics**
+ [定義](#environments-cfg-alb-console-process-definition)
+ [運作狀態檢查](#environments-cfg-alb-shared-console-process-healthchecks)
+ [工作階段](#environments-cfg-alb-shared-console-process-sessions)

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

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

![\[Application Load Balancer 名稱、連接埠和通訊協定的程序設定\]](http://docs.aws.amazon.com/zh_tw/elasticbeanstalk/latest/dg/images/aeb-config-alb-process-definition.png)


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

使用以下設定以設定程序運作狀態檢查：
+ **HTTP code (HTTP 代碼)** - 指定運作狀態良好程序的 HTTP 狀態碼。
+ **Path (路徑)** - 程序的運作狀態檢查請求路徑。
+ **Timeout (逾時)** - 等待運作狀態檢查回應的時間，以秒為單位。
+ **Interval (間隔)** - 個別執行個體的每個運作狀態檢查之間的時間，以秒為單位。間隔必須大於逾時期間。
+ **Unhealthy threshold (狀態不良閾值)**、**Healthy threshold (運作良好閾值)** - 在 Elastic Load Balancing 變更執行個體狀態之前，分別必須失敗或通過的運作狀態檢查數。
+ **Deregistration delay (取消註冊延遲)** - 在取消註冊執行個體前，等待作用中請求完成的時間，以秒為單位。

![\[Application Load Balancer 運作狀態檢查的程序設定\]](http://docs.aws.amazon.com/zh_tw/elasticbeanstalk/latest/dg/images/aeb-config-alb-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)。

#### 工作階段
<a name="environments-cfg-alb-shared-console-process-sessions"></a>

選取或清除 **Stickiness policy enabled (啟用黏性政策)** 方塊，以啟用或停用黏性工作階段。使用 **Cookie duration (Cookie 持續時間)** 設定黏性工作階段的持續時間，最長 **604800** 秒。

![\[Application Load Balancer 工作階段粘性的程序設定\]](http://docs.aws.amazon.com/zh_tw/elasticbeanstalk/latest/dg/images/aeb-config-alb-process-sessions.png)


### Rules
<a name="environments-cfg-alb-shared-console-rules"></a>

使用此清單為您的共享負載平衡器指定自訂接聽程式規則。規則映射在特定路徑模式接聽程式接收到的要求於目標程序中。每個接聽程式都可以有多個規則，將不同路徑上的請求路由傳送到共享接聽程式的不同環境執行個體上的不同處理程序。

規則有數字優先順序，判斷套用到傳入要求的優先順序。Elastic Beanstalk 會新增一個將所有預設接聽程式的流量都路由傳送至新環境預設程序的預設規則。預設規則的優先順序是最低的，如果相同的接聽程式沒有其它規則符合傳入的請求，則套用。一開始，如果您尚未新增自訂規則，清單會是空的。預設規則不會顯示。

![\[Application Load Balancer 組態 - 規則清單\]](http://docs.aws.amazon.com/zh_tw/elasticbeanstalk/latest/dg/images/aeb-config-alb-shared-rules.png)


您可以編輯現有規則的設定，或增加新的規則。若要開始編輯清單中的一個規則或新增一個規則，使用列於[處理程序清單](#environments-cfg-alb-shared-console-processes)的相同步驟。**Listener rule (接聽程式規則)** 對話方塊開啟，依以下設定：
+ **Name (名稱)** - 規則的名稱。
+ **Listener port (接聽程式連接埠)** - 套用規則的接聽程式連接埠。
+ **Priority (優先順序)** - 規則的優先順序。較低的號碼有較高的優先順序。接聽程式規則的優先順序必須是唯一的。Elastic Beanstalk 將規則優先順序視為共享環境間的相對優先順序，並在建立期間將其對應至絕對優先順序。
+ **Match conditions (比對條件)** - 要套用規則的請求 URL 條件清單。條件有兩種類型： **HostHeader** (URL 的網域部分) 以及 **PathPattern** (URL 的路徑部分)。一個條件會保留給環境子網域，而且您最多可以加入四個條件。每個條件值的長度最多為 128 個字元，且可以包含萬用字元。
+ **Process (程序)** - 負載平衡器路由傳送符合規則之請求的目標程序。

![\[Application Load Balancer 組態 - 規則清單\]](http://docs.aws.amazon.com/zh_tw/elasticbeanstalk/latest/dg/images/aeb-config-alb-rule-dialog.png)


## 範例：針對安全的微型服務應用程式使用共享 Application Load Balancer
<a name="environments-cfg-alb-shared-console-example"></a>

在此範例中，您的應用程式包含數個微型服務，每個服務都會以 Elastic Beanstalk 環境進行實作。此外，您還需要端對端流量加密。我們將示範其中一個微型服務環境，其中包含使用者請求的主要程序，以及處理系統管理請求的個別程序。

若要符合這些需求，請使用 Amazon EC2 建立您將在微型服務間共享的 Application Load Balancer。在連接埠 443 和 HTTPS 通訊協定上新增安全接聽程式。然後將多個 SSL 憑證新增到接聽程式中，每個微型服務網域各新增一個。如需建立 Application Load Balancer 和安全接聽程式的詳細資訊，請參閱《*Application Load Balancer 使用者指南*》中的[建立 Application Load Balancer](https://docs.aws.amazon.com/elasticloadbalancing/latest/application/create-application-load-balancer.html)和[建立適用於您 Application Load Balancer 的 HTTPS 接聽程式](https://docs.aws.amazon.com/elasticloadbalancing/latest/application/create-https-listener.html)。

在 Elastic Beanstalk 中，將每個微型服務環境設定為使用共享 Application Load Balancer，並將預設接聽程式連接埠設定為 443。在此示範的特定環境中，指出預設程序在 HTTPS 上會接聽連接埠 443，並為不同路徑上的管理流量新增處理程序和接聽程式規則。

**設定此範例的負載平衡器**

1. 在 **Shared Application Load Balancer (共享 Application Load Balancer)** 區段中，選取您的負載平衡器，然後在 **Default listener port (預設接聽程式連接埠)** 中選取 **443**。如果接聽程式連接埠是負載平衡器唯一擁有的接聽程式，則系統應該已經選取該接聽連接埠。  
![\[Application Load Balancer 組態 - 新增安全接聽程式\]](http://docs.aws.amazon.com/zh_tw/elasticbeanstalk/latest/dg/images/aeb-config-alb-shared-example-alb.png)

1. *設定預設程序至 HTTPS。*選取預設程序，然後在 **Actions (動作)** 中選擇 **Edit (編輯)**。針對**連接埠**，輸入 **443**。對於**通訊協定**，請選取 **HTTPS**。  
![\[Application Load Balancer 組態範例 - 將預設程序設定為 HTTPS\]](http://docs.aws.amazon.com/zh_tw/elasticbeanstalk/latest/dg/images/aeb-config-alb-process-definition-https.png)

1. *新增管理程序。*對於**名稱**，輸入 **admin**。針對**連接埠**，輸入 **443**。對於**通訊協定**，請選取 **HTTPS**。對於**運作狀態檢查**下方的**路徑**，輸入 **/admin**。  
![\[Application Load Balancer 組態範例 - 新增管理程序\]](http://docs.aws.amazon.com/zh_tw/elasticbeanstalk/latest/dg/images/aeb-config-alb-process-definition-https-admin.png)

1. *為管理流量新增一個規則。*對於**名稱**，輸入 **admin**。對於**接聽程式連接埠**，輸入 **443**。對於**比對條件**，新增一個帶有**/admin/\$1**值的 **PathPattern**。對於**程序**，請選取 **admin**。  
![\[Application Load Balancer 組態範例 - 新增管理規則\]](http://docs.aws.amazon.com/zh_tw/elasticbeanstalk/latest/dg/images/aeb-config-alb-rule-https-admin.png)

## 使用 EB CLI 設定共享 Application Load Balancer
<a name="environments-cfg-alb-shared-ebcli"></a>

在您執行 [**eb create**](eb3-create.md) 時，EB CLI 會提示您選擇負載平衡器類型。如果您選擇 `application` (預設值)，且您的帳戶至少有一個可共享的 Application Load Balancer，EB CLI 也會詢問您是否要使用共享 Application Load Balancer。如果您回答 **y**，系統也會提示您選取負載平衡器和預設連接埠。

```
$ 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 2): 

Your account has one or more sharable load balancers. Would you like your new environment to use a shared load balancer?(y/N) y

Select a shared load balancer
1)MySharedALB1 - arn:aws:elasticloadbalancing:us-east-2:123456789012:loadbalancer/app/MySharedALB1/6d69caa75b15d46e
2)MySharedALB2 - arn:aws:elasticloadbalancing:us-east-2:123456789012:loadbalancer/app/MySharedALB2/e574ea4c37ad2ec8
(default is 1): 2

Select a listener port for your shared load balancer
1) 80
2) 100
3) 443
(default is 1): 3
```

您也可以使用命令選項指定共享負載平衡器。

```
$ eb create test-env --elb-type application --shared-lb MySharedALB2 --shared-lb-port 443
```

## 共享 Application Load Balancer 命名空間
<a name="environments-cfg-alb-shared-namespaces"></a>

您可以在下列命名空間中找到與共享 Application Load Balancer 相關的設定：
+ `aws:elasticbeanstalk:environment` - 選擇環境的負載平衡器類型，並告知 Elastic Beanstalk 您將使用共享負載平衡器。

  您無法在組態檔案 ([.Ebextensions](ebextensions.md)) 中設定這兩個選項。
+ `aws:elbv2:loadbalancer` - 設定共享 Application Load Balancer ARN 和安全群組。
+ `aws:elbv2:listener` - 藉由列出接聽程式規則，將共享 Application Load Balancer 的接聽程式與環境程序產生關聯。
+ `aws:elbv2:listenerrule` - 設定接聽程式規則，根據請求的路徑，將流量路由傳送至不同程序。專用和共享的規則對 Application Load Balancer 都是唯一的規則。
+ `aws:elasticbeanstalk:environment:process` - 設定運作狀態檢查，並針對執行於環境執行個體的程序，指定連接埠和通訊協定。

**Example .ebextensions/application-load-balancer-shared.config**  
若要開始使用共享 Application Load Balancer，請使用 Elastic Beanstalk 主控台、EB CLI 或 API，將負載平衡器類型設定為 `application` 並選擇使用共享負載平衡器。使用[組態檔案](ebextensions.md)來設定共享負載平衡器。  

```
option_settings:
  aws:elbv2:loadbalancer:
    SharedLoadBalancer: arn:aws:elasticloadbalancing:us-east-2:123456789012:loadbalancer/app/MySharedALB2/e574ea4c37ad2ec8
```

**注意**  
您只能在建立環境時設定此選項。

**Example .ebextensions/alb-shared-secure-listener.config**  
下列組態檔案會為共享負載平衡器選取連接埠 443 上的預設安全接聽程式，並將預設程序設定為接聽連接埠 443。  

```
option_settings:
  aws:elbv2:loadbalancer:
    SharedLoadBalancer: arn:aws:elasticloadbalancing:us-east-2:123456789012:loadbalancer/app/MySharedALB2/e574ea4c37ad2ec8
  aws:elbv2:listener:443:
    rules: default
  aws:elasticbeanstalk:environment:process:default:
    Port: '443'
    Protocol: HTTPS
```

**Example .ebextensions/alb-shared-admin-rule.config**  
下列組態檔案會以上一個範例為基礎並新增規則，該規則會將流量以 `/admin` 的請求路徑路由傳送至在連接埠 4443 上接聽名為 `admin` 的處理程序。  

```
option_settings:
  aws:elbv2:loadbalancer:
    SharedLoadBalancer: arn:aws:elasticloadbalancing:us-east-2:123456789012:loadbalancer/app/MySharedALB2/e574ea4c37ad2ec8
  aws:elbv2:listener:443:
    rules: default,admin
  aws:elasticbeanstalk:environment:process:default:
    Port: '443'
    Protocol: HTTPS
  aws:elasticbeanstalk:environment:process:admin:
    HealthCheckPath: /admin
    Port: '4443'
    Protocol: HTTPS
  aws:elbv2:listenerrule:admin:
    PathPatterns: /admin/*
    Priority: 1
    Process: admin
```

# 設定 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 之上。

# 設定雙堆疊 Elastic Beanstalk 負載平衡器
<a name="environments-cfg-elbv2-ipv6-dualstack"></a>

您可以啟用 Elastic Beanstalk 環境，以雙堆疊設定的負載平衡器同時提供 IPv4 和 IPv6 通訊協定。當您建立負載平衡環境時，基礎設施預設為 IPv4。您可以選擇使用雙堆疊組態建立新的環境，或將現有的IPv4-only環境更新為雙堆疊。

若要讓環境的負載平衡器同時提供 IPv6 和 IPv4 網路流量，請將[aws:elbv2:loadbalancer](command-options-general.md#command-options-general-elbv2)命名空間中的 `IpAddressType`選項設定為*雙堆疊*。

**注意**  
Elastic Beanstalk 僅支援 Application Load Balancer 和 Network Load Balancer 的雙堆疊通訊協定。它不支援使用 Classic Load Balancer 或單一執行個體環境的環境的雙堆疊。

## Amazon VPC 先決條件
<a name="environments-cfg-elbv2-ipv6-dualstack.prereqs"></a>

在 Elastic Beanstalk 環境中設定負載平衡器之前，您必須先使用 Amazon VPC 完成一些組態步驟：

1. 將 IPv6 CIDR 區塊與環境的 VPC 建立關聯。

1. 將 IPv6 CIDR 區塊與所有 VPC 子網路建立關聯。

1. （選用） 如果您的環境與 VPC 外部的元件交換網路流量，其具有指定 VPC 可與哪些網路通訊的路由表。在此情況下，您必須更新 VPC 路由表以啟用 IPv6 流量。

您可以使用 Amazon VPC 主控台或 AWS CLI 命令來完成這些先決條件組態。以下主題將引導您，並引導您參閱 *Amazon VPC 使用者指南*和*AWS CLI 命令參考*，以取得更多詳細資訊。

**注意**  
完成 VPC 組態後，請等待幾分鐘讓變更傳播，然後再為負載平衡器設定雙堆疊。如果您在雙堆疊設定期間遇到 VPC 或子網路組態錯誤，請等待幾分鐘讓 VPC 組態傳播，然後再次嘗試雙堆疊組態。

### 使用主控台完成 VPC 先決條件
<a name="environments-cfg-elbv2-ipv6-dualstack.prereqs.console"></a>

*Amazon VPC 使用者指南*提供完成這些先決條件任務的詳細步驟。

1. 請參閱《*Amazon VPC* [使用者指南》中的步驟 1：將 IPv6 CIDR 區塊與 VPC 和子網路建立關聯](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-migrate-ipv6-add.html#vpc-migrate-ipv6-cidr)。

   此步驟提供您必須完成的兩個程序：
   + 建立 IPv6 CIDR 區塊與 VPC 的關聯。
   + 將 IPv6 CIDR 區塊與您的 VPC 子網路建立關聯。

1. （選用） 如果您的環境與 VPC 外部的元件交換網路流量，其具有指定 VPC 可與哪些網路通訊的路由表。在此情況下，您必須更新 VPC 路由表以啟用 IPv6 流量。若要完成此組態，請參閱《*Amazon VPC 使用者指南*》中的[步驟 2：更新您的路由表](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-migrate-ipv6-add.html#vpc-migrate-ipv6-routes)。

### 使用 完成 VPC 先決條件 AWS CLI
<a name="environments-cfg-elbv2-ipv6-dualstack.prereqs.cli"></a>

您可以使用 AWS CLI 來完成和驗證先決條件組態。

1. 將 IPv6 CIDR 區塊與環境的 VPC 建立關聯。

   1. 使用 [associate-vpc-cidr-block](https://docs.aws.amazon.com/cli/latest/reference/ec2/associate-vpc-cidr-block.html) 命令，將 CIDR 區塊與您的 VPC 建立關聯。

   1. 使用 [describe-vpcs](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-vpcs.html) 命令來驗證 VPC 組態。

   

     
**Example commands**  

   ```
   # Associate an Amazon-provided IPv6 CIDR block with your VPC
   aws ec2 associate-vpc-cidr-block \
       --vpc-id vpc-12345678 \
       --region us-east-1  \
       --amazon-provided-ipv6-cidr-block
   
   # Verify the IPv6 CIDR block association
   aws ec2 describe-vpcs \
       --vpc-ids vpc-12345678 \
       --region us-east-1  \
       --query 'Vpcs[0].Ipv6CidrBlockAssociationSet'
   ```

1. 將 IPv6 CIDR 區塊與所有 VPC 子網路建立關聯。

   1. 使用 [associate-subnet-cidr-block](https://docs.aws.amazon.com/cli/latest/reference/ec2/associate-subnet-cidr-block.html) 命令，將 CIDR 區塊與您的子網路建立關聯。

   1. 使用 [describe-subnets](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-subnets.html) 命令來驗證子網路組態。

   

     
**Example commands**  

   ```
   # List all subnets in your VPC
   aws ec2 describe-subnets \
       --region us-east-1  \
       --filters "Name=vpc-id,Values=vpc-12345678" \
       --query 'Subnets[].{SubnetId:SubnetId,AvailabilityZone:AvailabilityZone}'
   
   # Associate IPv6 CIDR block with each subnet
   aws ec2 associate-subnet-cidr-block \
       --subnet-id subnet-12345678 \
       --region us-east-1  \
       --ipv6-cidr-block 2001:db8::/64
   
   # Verify IPv6 CIDR block association for all subnets
   aws ec2 describe-subnets \
       --region us-east-1  \
       --filters "Name=vpc-id,Values=vpc-12345678" \
       --query 'Subnets[].{SubnetId:SubnetId,Ipv6CidrBlock:Ipv6CidrBlockAssociationSet[0].Ipv6CidrBlock}'
   ```

1.  （選用） 如果您的環境與 VPC 外部的元件交換網路流量，其具有指定 VPC 可與哪些網路通訊的路由表。在此情況下，您必須更新 VPC 路由表以啟用 IPv6 流量。

   1. 使用 [create-route](https://docs.aws.amazon.com/cli/latest/reference/ec2/create-route.html) 命令在 VPC 內的路由表中新增路由。

   1. 使用 [describe-route-tables](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-route-tables.html) 命令來驗證您的路由表。

   

     
**Example commands**  

   ```
   # Add IPv6 route to Internet Gateway for public subnets
   aws ec2 create-route \
       --route-table-id rtb-12345678 \
       --destination-ipv6-cidr-block ::/0 \
       --gateway-id igw-12345678  \
       --region us-east-1
   
   # Add IPv6 route to NAT Gateway for private subnets (if applicable)
   aws ec2 create-route \
       --route-table-id rtb-87654321 \
       --destination-ipv6-cidr-block ::/0 \
       --nat-gateway-id nat-12345678 \
       --region us-east-1
   
   # Verify routes
   aws ec2 describe-route-tables \
       --route-table-ids rtb-12345678 \
       --region us-east-1 \
       --query 'RouteTables[0].Routes'
   ```

## 為您的 Elastic Beanstalk 負載平衡器設定雙堆疊
<a name="environments-cfg-elbv2-ipv6-dualstack.enable"></a>

為您的環境設定 VPC 先決條件組態之後，您可以使用雙堆疊選項設定負載平衡器，以便同時提供 IPv4 和 IPv6 通訊協定。您可以使用 Elastic Beanstalk 主控台、 AWS CLI、 中的組態檔案`.ebextensions`，以及 AWS SDK 來設定負載平衡器來提供雙堆疊流量。

### 使用主控台
<a name="environments-cfg-elbv2-ipv6-dualstack.enable.console"></a>

您可以使用 Elastic Beanstalk 主控台來設定環境負載平衡器的雙堆疊。

**注意**  
此組態取決於數個點的資料傳播時間。當您設定負載平衡器並測試變更時，請考慮下列時間要求。  
*VPC 組態時間。*完成中所述的 VPC 組態後[Amazon VPC 先決條件](#environments-cfg-elbv2-ipv6-dualstack.prereqs)，請等待幾分鐘讓變更傳播，然後再遵循這些程序。如果您在雙堆疊設定期間遇到 VPC 或子網路組態錯誤，請等待幾分鐘，然後重試組態步驟。  
*DNS 傳播時間。*將 `IpAddressType`選項設定為 *dualstack* 之後，請等待幾分鐘讓變更傳播，再進行測試。Route 53 DNS 傳播可能需要 1-2 分鐘才能完成。在此期間，如果您使用 IPv6 通訊協定啟動請求，則測試從用戶端到應用程式的通訊時可能會遇到問題。

**建立新環境：設定負載平衡器以獲得雙堆疊支援**

1. 啟動 Elastic Beanstalk 主控台，並開始建立新環境的步驟。在**設定****服務存取頁面中設定必要欄位服務角色**和 **EC2 執行個體描述**檔後，請繼續此程序中的步驟，將負載平衡器設定為雙堆疊組態。如需開始使用的詳細資訊，請參閱 [建立 Elastic Beanstalk 環境](using-features.environments.md)。

1. 從**設定服務存取**中選取**下一步**。

1. **設定聯網、資料庫和標籤**頁面隨即顯示。

   如果您已完成上一節[Amazon VPC 先決條件](#environments-cfg-elbv2-ipv6-dualstack.prereqs)所述的 ，則表示您已設定所需的 VPC 和子網路。在此情況下，請略過此步驟及其子步驟，以繼續選取 VPC。

   1. 若要設定 VPC 和子網路，您可以選擇**建立 VPC** 以導覽至 VPC 主控台。請遵循 [使用主控台完成 VPC 先決條件](#environments-cfg-elbv2-ipv6-dualstack.prereqs.console) 中的步驟。

   1.  等待幾分鐘讓 VPC 更新傳播，然後返回 Elastic Beanstalk 主控台並選取重新整理以繼續下一個步驟。

       如果您在其餘步驟中遇到 VPC 或子網路組態錯誤，請等待幾分鐘，讓 VPC 組態有時間傳播，然後再試一次這些步驟。

1. 在**設定聯網、資料庫和標籤**頁面上，從具有相關聯 IPv6 CIDR 區塊的 **VPC** 下拉式清單中選取值。

   選取 VPC 之後，**執行個體子網路**會填入 VPC 子網路。

1. 選取一或多個**執行個體子網路**，然後選取**下一步**。

1. **設定執行個體流量和擴展**頁面隨即顯示。

   在**負載平衡器網路設定**中，選取**啟用****雙堆疊 (IPv4 和 IPv6)。**

1. 選取**負載平衡器類型**。**應用程式負載平衡器**或**網路負載平衡器**都支援*雙堆疊*。

1. 您可以在目前的主控台頁面上繼續設定其他負載平衡器選項。如需負載平衡器選項和組態的詳細資訊，請參閱本章的其他主題。

1. 繼續執行完成環境組態和建立的步驟。如需詳細資訊，請參閱[建立 Elastic Beanstalk 環境](using-features.environments.md)。



**現有環境：為雙堆疊支援設定負載平衡器**

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

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

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

1. 在**網路和資料庫**組態類別中，選擇**編輯**。

1. 如果您已完成上一節[Amazon VPC 先決條件](#environments-cfg-elbv2-ipv6-dualstack.prereqs)所述的 ，則表示您已設定所需的 VPC 和子網路。在此情況下，請略過此步驟及其子步驟，以繼續選取 VPC。

   1. 若要設定 VPC 和子網路，您可以選擇**建立 VPC** 以導覽至 VPC 主控台。請遵循 [使用主控台完成 VPC 先決條件](#environments-cfg-elbv2-ipv6-dualstack.prereqs.console) 中的步驟。

   1.  等待幾分鐘讓 VPC 更新傳播，然後返回 Elastic Beanstalk 主控台並選取重新整理以繼續下一個步驟。

       如果您在其餘步驟中遇到 VPC 或子網路組態錯誤，請等待幾分鐘，讓 VPC 組態有時間傳播，然後再試一次這些步驟。

1. 在**網路和資料庫**頁面中，從具有相關聯 IPv6 CIDR 區塊的 **VPC** 下拉式清單中選取值。

   選取 VPC 之後，**執行個體子網路**會填入 VPC 子網路。

1. 選取一或多個**執行個體子網路**。

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

1. 在 **Instance traffic and scaling** (執行個體流量和擴展) 組態類別中，選擇 **Edit** (編輯)。

1. 在**負載平衡器網路設定**中，選取**啟用****雙堆疊 (IPv4 和 IPv6)。**

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

### 使用 AWS CLI
<a name="environments-cfg-elbv2-ipv6-dualstack.enable.cli"></a>

您可以使用 AWS 命令列界面 (AWS CLI) 來設定您環境的負載平衡器，以同時提供 IPv6 和 IPv4 網路流量。本節提供具有 [aws:elbv2:loadbalancer](command-options-general.md#command-options-general-elbv2) 命名空間的 [create-environment](https://docs.aws.amazon.com/cli/latest/reference/elasticbeanstalk/create-environment.html) 和 [update-environment](https://docs.aws.amazon.com/cli/latest/reference/elasticbeanstalk/update-environment.html) 命令範例。

**注意**  
此組態取決於數個點的資料傳播時間。當您設定負載平衡器並測試變更時，請考慮下列時間要求。  
*VPC 組態時間。*完成中所述的 VPC 組態後[Amazon VPC 先決條件](#environments-cfg-elbv2-ipv6-dualstack.prereqs)，請等待幾分鐘讓變更傳播，然後再執行這些命令來設定雙堆疊的負載平衡器。如果您在雙堆疊設定期間遇到 VPC 或子網路組態錯誤，請等待幾分鐘，然後再試一次命令。  
*DNS 傳播時間。*將 `IpAddressType`選項設定為 *dualstack* 之後，請等待幾分鐘讓變更傳播，再進行測試。Route 53 DNS 傳播可能需要 1-2 分鐘才能完成。在此期間，如果您使用 IPv6 通訊協定啟動請求，則測試從用戶端到應用程式的通訊時可能會遇到問題。

 

**Example 具有雙堆疊組態的 create-environment （命名空間選項內嵌）**  

```
aws elasticbeanstalk create-environment \
--region us-east-1 \
--application-name my-app \
--environment-name my-env \
--solution-stack-name "64bit Amazon Linux 2 v3.4.0 running Python 3.8" \
--option-settings \
Namespace=aws:autoscaling:launchconfiguration,OptionName=IamInstanceProfile,Value=aws-elasticbeanstalk-ec2-role \
Namespace=aws:elbv2:loadbalancer,OptionName=IpAddressType,Value=dualstack
```



或者，您也可以使用 `options.json` 檔案來指定命名空間選項，而非透過內嵌方式一併包含於其中。下列範例命令示範 [update-environment](https://docs.aws.amazon.com/cli/latest/reference/elasticbeanstalk/update-environment.html) 命令。

**Example 具有雙堆疊組態的 update-environment (`options.json`檔案中的命名空間選項）**  

```
aws elasticbeanstalk update-environment \
--region us-east-1 \
--application-name my-app \
--environment-name my-env \
--solution-stack-name "64bit Amazon Linux 2 v3.4.0 running Python 3.8" \
--option-settings \ file://options.json
```

**Example**  

```
### example options.json ###
[
  {
    "Namespace": "aws:elbv2:loadbalancer",
    "OptionName": "IpAddressType",
    "Value": "dualstack"
  }
]
```



下列範例會更新現有環境，將 `IpAddressType`選項設定為 *IPv4*。

**注意**  
如果您需要將環境組態從雙堆疊復原至 IPv4，此範例`update-environment`命令會很有用。

**Example 將 IpAddressType 設定為 IPv4 的 update-environment**  

```
aws elasticbeanstalk update-environment \
--region us-east-1 \
--application-name my-app \
--environment-name my-env \
--solution-stack-name "64bit Amazon Linux 2 v3.4.0 running Python 3.8" \
--option-settings \
Namespace=aws:elbv2:loadbalancer,OptionName=IpAddressType,Value=ipv4
```

### 使用 .ebextensions 組態檔案
<a name="environments-cfg-elbv2-ipv6-dualstack.enable.ebx"></a>

您可以使用 Elastic Beanstalk [組態檔案](ebextensions.md)，讓環境的負載平衡器同時提供 IPv6 和 IPv4 網路流量。將[aws:elbv2:loadbalancer](command-options-general.md#command-options-general-elbv2)命名空間中的 `IpAddressType`選項設定為 *dualstack*。

**注意**  
此組態取決於數個點的資料傳播時間。當您設定負載平衡器並測試變更時，請考慮下列時間要求。  
*VPC 組態時間。*完成 中所述的 VPC 組態後[Amazon VPC 先決條件](#environments-cfg-elbv2-ipv6-dualstack.prereqs)，請等待幾分鐘讓 VPC 變更傳播，再套用`.ebextensions`組態。如果您在此組態設定期間遇到 VPC 或子網路組態錯誤，請等待幾分鐘，然後再試一次。  
*DNS 傳播時間。*將 `IpAddressType`選項設定為 *dualstack* 之後，請等待幾分鐘讓變更傳播，再進行測試。Route 53 DNS 傳播可能需要 1-2 分鐘才能完成。在此期間，如果您使用 IPv6 通訊協定啟動請求，則測試從用戶端到應用程式的通訊時可能會遇到問題。

**Example 負載平衡器雙堆疊組態的 .ebextensions/options.config [（速記語法](ebextensions-optionsettings.md#ebextensions-optionsettings.title))**  

```
option_settings:
  aws:elbv2:loadbalancer:
    IpAddressType: dualstack
```

**Example 負載平衡器雙堆疊組態的 .ebextensions/options.config [（標準語法](ebextensions-optionsettings.md#ebextensions-optionsettings.title))**  

```
option_settings:
  - namespace: aws:elbv2:loadbalancer
    option_name: IpAddressType
    value: dualstack
```

### 使用 AWS SDK
<a name="environments-cfg-elbv2-ipv6-dualstack.enable.sdk"></a>

您可以使用 SDK 設定雙堆疊[AWS SDKs](https://docs.aws.amazon.com//code-library/)。與上一節提到的 `update-environment`和 `create-environment` AWS CLI 命令類似，您可以使用 [CreateEnvironment](https://docs.aws.amazon.com//elasticbeanstalk/latest/api/API_CreateEnvironment.html) 和 [UpdateEnvironment](https://docs.aws.amazon.com//elasticbeanstalk/latest/api/API_UpdateEnvironment.html) API 動作。使用 `OptionSettings`請求參數來指定[aws:elbv2:loadbalancer](command-options-general.md#command-options-general-elbv2)命名空間的選項。

**注意**  
此組態取決於數個點的資料傳播時間。當您設定負載平衡器並測試變更時，請考慮下列時間要求。  
*VPC 組態時間。*完成中所述的 VPC 組態後[Amazon VPC 先決條件](#environments-cfg-elbv2-ipv6-dualstack.prereqs)，請等待幾分鐘讓變更傳播，再執行程式來設定雙堆疊的負載平衡器。如果您在雙堆疊設定期間遇到 VPC 或子網路組態錯誤，請等待幾分鐘，然後再次嘗試執行雙堆疊組態的程式。  
*DNS 傳播時間。*將 `IpAddressType`選項設定為 *dualstack* 之後，請等待幾分鐘讓變更傳播，再進行測試。Route 53 DNS 傳播可能需要 1-2 分鐘才能完成。在此期間，如果您使用 IPv6 通訊協定啟動請求，則測試從用戶端到應用程式的通訊時可能會遇到問題。

## 疑難排解
<a name="environments-cfg-elbv2-ipv6-dualstack.troubleshooting"></a>

**試用 Amazon Q Developer CLI 進行 AI 輔助故障診斷**  
 Amazon Q Developer CLI 可協助您快速疑難排解環境問題。Q CLI 透過檢查環境狀態、檢閱事件、分析日誌和詢問釐清問題來提供解決方案。如需詳細資訊和詳細的逐步解說，請參閱 AWS 部落格中的[使用 Amazon Q Developer CLI 疑難排解 Elastic Beanstalk 環境](https://aws.amazon.com/blogs/devops/troubleshooting-elastic-beanstalk-environments-with-amazon-q-developer-cli/)。

本節提供針對負載平衡器雙堆疊組態問題進行疑難排解的指引。

**事件：***VPC *vpc\$1id* 未設定 IPv6 CIDR 區塊。dualstack 負載平衡器需要 IPv6 CIDR 區塊。在使用雙堆疊模式之前，請將 IPv6 CIDR 區塊與您的 VPC 建立關聯。*

您的 VPC 和所有子網路必須具有與其相關聯的 IPv6 CIDR 區塊。這是在設定負載平衡器進行雙堆疊支援之前，您必須完成的其中一個 VPC 先決條件。如需完成此任務的詳細資訊，請參閱本主題稍[Amazon VPC 先決條件](#environments-cfg-elbv2-ipv6-dualstack.prereqs)早的 。

 **事件：***一或多個 VPC *vpc\$1id* 子網路未設定 IPv6 CIDR 區塊。與雙堆疊負載平衡器搭配使用的子網路需要 IPv6 CIDR 區塊。在使用雙堆疊模式之前，請將 IPv6 CIDR 區塊與所有必要子網路建立關聯。*

VPC 的所有子網路都必須具有與其相關聯的 IPv6 CIDR 區塊。這是在設定負載平衡器進行雙堆疊支援之前，您必須完成的其中一個 VPC 先決條件。如需完成此任務的詳細資訊，請參閱本主題稍[Amazon VPC 先決條件](#environments-cfg-elbv2-ipv6-dualstack.prereqs)早的 。

 **錯誤：** *`IpAddressType`選項僅適用於使用 Application Load Balancer 或 Network Load Balancer 設定的 Elastic Beanstalk 環境。*

此訊息表示您的 Elastic Beanstalk 環境可能是單一執行個體環境，也可能是使用 Classic Load Balancer。只有使用 Application Load Balancer 或 Network Load Balancer 設定的環境才能設定 `IpAddressType`。

# 設定存取日誌
<a name="environments-cfg-loadbalancer-accesslogs"></a>

您可以使用[組態檔案](ebextensions.md)設定您環境的負載平衡器，將存取日誌上傳到 Amazon S3 儲存貯體。如需相關說明，請參閱 GitHub 上的下列範例組態檔案：
+ `[loadbalancer-accesslogs-existingbucket.config](https://github.com/awslabs/elastic-beanstalk-samples/blob/master/configuration-files/aws-provided/resource-configuration/loadbalancer-accesslogs-existingbucket.config)` - 設定負載平衡器將存取日誌上傳到現有的 Amazon S3 儲存貯體。
+ `[loadbalancer-accesslogs-newbucket.config](https://github.com/awslabs/elastic-beanstalk-samples/blob/master/configuration-files/aws-provided/resource-configuration/loadbalancer-accesslogs-newbucket.config)` - 設定負載平衡器將存取日誌上傳到新的儲存貯體。