

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

# 使用適用於 Visual Studio AWS 的工具組設定 Elastic Load Balancing
<a name="create_deploy_NET-linux.managing.elb"></a>

Elastic Load Balancing 是 Amazon Web 服務，可協助您提升應用程式的可用性和可擴展性。本服務可讓您輕鬆將應用程式負載分配至兩個或多個 Amazon EC2 執行個體。Elastic Load Balancing 可透過備援改善可用性，亦可支援應用程式的流量成長。

 透過 Elastic Load Balancing，您可以在所有執行中執行個體之間自動分配和平衡傳入的應用程式流量。您也可以在需要增加應用程式容量時輕鬆新增執行個體。

 部署應用程式時，Elastic Beanstalk 會自動佈建 Elastic Load Balancing。您可以在 AWS Toolkit for Visual Studio 的應用程式環境索引標籤內，使用 **Load Balancer** 索引標籤編輯 Elastic Beanstalk 環境的 Amazon EC2 執行個體組態。

![Visual Studio Toolkit for Elastic Beanstalk 中負載平衡器組態面板的螢幕擷取畫面](http://docs.aws.amazon.com/zh_tw/elasticbeanstalk/latest/dg/images/aeb-vs-linux-loadbalancer.png)


 下列章節說明您可設定的 Elastic Load Balancing 參數供應用程式使用。

## 連接埠
<a name="create_deploy_NET-linux.managing.elb.ports"></a>

為了為您的 Elastic Beanstalk 應用程式處理請求所佈建的負載平衡器，會將請求傳送至執行您應用程式的 Amazon EC2 執行個體。佈建的負載平衡器可以接聽 HTTP 和 HTTPS 連接埠上的請求，並將請求路由到 AWS Elastic Beanstalk 應用程式中的 Amazon EC2 執行個體。負載平衡器預設會處理 HTTP 連接埠上的請求。對於此工作，您必須開啟至少一個 HTTP 或 HTTPS 連接埠。

![Elastic Beanstalk Elastic Load Balancing 組態 - 連接埠](http://docs.aws.amazon.com/zh_tw/elasticbeanstalk/latest/dg/images/aeb-vs-loadbalancer-ports.png)


**重要**  
請確認您指定的連接埠並未鎖定；否則，您將無法連接至您的 Elastic Beanstalk 應用程式。

### 控制 HTTP 連接埠
<a name="create_deploy_NET-linux.managing.elb.ports.http"></a>

欲關閉 HTTP 連接埠，請於 **HTTP Listener Port (HTTP 接聽程式連接埠)** 選取 **OFF (關閉)**。欲開啟 HTTP 連接埠，請於清單選取 HTTP 連接埠 (如 **80 (80)**)。

**注意**  
若要使用預設連接埠 80 以外 (例如連接埠 8080) 的連接埠存取您的環境，請將接聽程式新增至現有的負載平衡器，然後設定該新的接聽程式在該連接埠上接聽。  
例如，使用[適用於 Classic Load Balancer 的AWS CLI](https://docs.aws.amazon.com/cli/latest/reference/elb/create-load-balancer-listeners.html)，輸入如下命令，將 {{LOAD\_BALANCER\_NAME}} 取代為您 Elastic Beanstalk 負載平衡器的名稱。  

```
aws elb create-load-balancer-listeners --load-balancer-name {{LOAD_BALANCER_NAME}} --listeners "Protocol=HTTP, LoadBalancerPort=8080, InstanceProtocol=HTTP, InstancePort=80"
```
例如，使用[適用於 Application Load Balancer 的AWS CLI](https://docs.aws.amazon.com/cli/latest/reference/elbv2/create-listener.html)，輸入如下命令，將 {{LOAD\_BALANCER\_ARN}} 取代為您 Elastic Beanstalk 負載平衡器的 ARN。  

```
aws elbv2 create-listener --load-balancer-arn {{LOAD_BALANCER_ARN}} --protocol HTTP --port 8080
```
若您想要 Elastic Beanstalk 監控您的環境，請勿移除連接埠 80 上的接聽程式。

### 控制 HTTPS 連接埠
<a name="create_deploy_NET-linux.managing.elb.ports.https"></a>

Elastic Load Balancing 支援 HTTPS/TLS 通訊協定，可加密用戶端連線至負載平衡器的流量。負載平衡器至 EC2 執行個體的連線採用純文字加密。HTTPS 連接埠預設為關閉。

**欲開啟 HTTPS 連接埠**

1. 使用 AWS Certificate Manager (ACM) 建立新憑證，或將憑證和金鑰上傳至 AWS Identity and Access Management (IAM)。如需請求 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)。如果您的[區域無法使用](https://docs.aws.amazon.com/general/latest/gr/acm.html) ACM，請使用 AWS Identity and Access Management (IAM) 上傳第三方憑證。ACM 和 IAM 服務會存放憑證，並針對 SSL 憑證提供 Amazon Resource Name (ARN)。如需建立和上傳憑證至 IAM 的詳細資訊，請參閱*IAM 使用者指南*中的[使用伺服器憑證](https://docs.aws.amazon.com/IAM/latest/UserGuide/ManagingServerCerts.html)。

1. 選取 **HTTPS Listener Port (HTTPS 接聽程式連接埠)** 的連接埠來指定 HTTPS 連接埠。  
![Elastic Beanstalk Elastic Load Balancing 組態 - SSL](http://docs.aws.amazon.com/zh_tw/elasticbeanstalk/latest/dg/images/aeb-vs-elb-ssl.png)

1. 針對 **SSL Certificate ID (SSL 憑證 ID)**，輸入您 SSL 憑證的 Amazon Resources Name (ARN)，例如 **arn:aws:iam::123456789012:server-certificate/abc/certs/build** 或 **arn:aws:acm:us-east-2:123456789012:certificate/12345678-12ab-34cd-56ef-12345678**。使用您於步驟 1 建立或上傳的 SSL 憑證。

欲關閉 HTTPS 連接埠，請於 **HTTPS Listener Port (HTTPS 接聽程式連接埠)** 選取 **OFF (關閉)**。

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

運作狀態檢查的定義包括用於查詢執行個體運作狀態的 URL。根據預設，Elastic Beanstalk 針對非舊版容器和舊版容器分別使用 TCP:80 和 HTTP:80。透過 **Application health check URL (應用程式運作狀態檢查 URL)** 方塊中輸入與應用程式現有資源相符的 URL (例如 `/myapp/default.aspx`)，覆寫預設 URL。若您覆寫預設 URL，Elastic Beanstalk 會使用 HTTP 來查詢資源。欲檢查您是否正使用舊版容器類型，請參閱 [為何部分平台版本標記為舊版？](using-features.migration.md#using-features.migration.why)

 您可於 **Load Balancing (負載平衡)** 面板使用 **EC2 Instance Health Check (EC2 執行個體運作狀態檢查)** 區段，藉此控制運作狀態檢查的設定。

![Elastic Beanstalk Elastic Load Balancing 組態 - 運作狀態檢查](http://docs.aws.amazon.com/zh_tw/elasticbeanstalk/latest/dg/images/aeb-vs-loadbalancer-healthcheck.png)


運作狀態檢查的定義包括用於查詢執行個體運作狀態的 URL。透過 **Application Health Check URL (應用程式運作狀態檢查 URL)** 方塊中輸入與應用程式現有資源相符的 URL (例如 `/myapp/index.jsp`)，覆寫預設 URL。

下列清單說明您應用程式可設定的運作狀態檢查參數。
+ 在 **Health Check Interval (seconds) (運作狀態檢查間隔，秒)** 部分，輸入 Elastic Load Balancing 對應用程式的 Amazon EC2 執行個體進行運作狀態檢查之間的等待秒數。
+  在 **Health Check Timeout (seconds) (運作狀態檢查逾時，秒)** 部分，指定 Elastic Load Balancing 將執行個體視為沒有回應前的等待回應的秒數。
+ 在 **Healthy Check Count Threshold (運作狀態檢查計數閾值)** 和 **Unhealthy Check Count Threshold (不健全檢查結果計數臨界值)** 部分，指定 Elastic Load Balancing 變更執行個體運作狀態前的連續成功或不成功 URL 探測的次數。例如，將 **Unhealthy Check Count Threshold (運作狀態不正常數量上限)** 指定為 **5**，代表在 Elastic Load Balancing 認為運作狀態檢查失敗前，URL 必須連續五次傳回錯誤訊息或逾時。

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

負載平衡器預設會以最小的負載，將每個請求獨立路由至伺服器執行個體。相對而言，黏性工作階段會將使用者工作階段繫結到特定的伺服器執行個體，以便工作階段期間來自使用者的所有請求都發送到相同的伺服器執行個體。

 應用程式若啟用黏性工作階段，Elastic Beanstalk 會使用負載平衡器產生的 HTTP Cookie。負載平衡器會使用特殊負載平衡器產生的 Cookie，來追蹤每個請求的應用程式執行個體。當負載平衡器收到請求時，首先會檢查此 Cookie 是否存在於請求中。如果存在，請求會傳送到 cookie 中指定的應用程式執行個體。若 Cookie 不存在，則負載平衡器會根據現有負載平衡演算法選擇應用程式執行個體。回應會插入 Cookie，藉此將後續來自相同使用者的請求繫結至該應用程式執行個體。政策組態會定義 Cookie 到期日期，此為每個 Cookie 的有效使用期限。

您可以使用**Load Balancer**索引標籤上的**工作階段**區段，指定應用程式的負載平衡器是否允許工作階段黏性。

![Elastic Beanstalk Elastic Load Balancing 組態 - 工作階段](http://docs.aws.amazon.com/zh_tw/elasticbeanstalk/latest/dg/images/aeb-vs-loadbalancer-sessions.png)


 如需 Elastic Load Balancing 的詳細資訊，請參閱 [Elastic Load Balancing 開發人員指南](https://docs.aws.amazon.com/ElasticLoadBalancing/latest/DeveloperGuide/)。