

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

# 使用 Visual Studio 的 Amazon 工具包配置弹性负载平衡
<a name="create_deploy_NET.managing.elb"></a>

Elastic Load Balancing 是一种 Amazon Web 服务，可帮助您提高应用程序的可用性和可扩展性。该服务使您可以轻松地在两个或多个 Amazon EC2 实例之间分配应用程序负载。Elastic Load Balancing 通过冗余实现可用性，并支持应用程序的流量增长。

 Elastic Load Balancing 可让您自动在运行的所有实例之间分配和平衡传入的应用程序流量。在您需要增加应用程序容量时，该服务还可让您轻松地添加新的实例。

 Elastic Beanstalk 会在您部署应用程序时自动地预配置 Elastic Load Balancing。你可以使用 Visual Studio Toolkit for Visual Studio EC2 的应用程序环境选项卡中的 “**负载**均衡器” 选项卡来编辑 Elastic Beanstalk Amazon 环境的亚马逊实例配置。

![\[Elastic Beanstalk Elastic Load Balancing 配置面板\]](http://docs.amazonaws.cn/elasticbeanstalk/latest/dg/images/aeb-vs-loadbalancer.png)


 以下部分介绍了可为应用程序配置的 Elastic Load Balancing 参数。

## 端口
<a name="create_deploy_NET.managing.elb.ports"></a>

为处理您的 Elastic Beanstalk 应用程序的请求而配置的负载均衡器会向运行您的应用程序的 EC2 亚马逊实例发送请求。预配置的负载均衡器可以监听 HTTP 和 HTTPS 端口上的请求，并将请求路由到 Amazon Elastic Beanstalk 应用程序中的 Amazon EC2 实例。默认情况下，负载均衡器将处理 HTTP 端口上的请求。必须至少打开其中一个端口，要么是 HTTP 要么是 HTTPS。

![\[Elastic Beanstalk Elastic Load Balancing 配置 - 端口\]](http://docs.amazonaws.cn/elasticbeanstalk/latest/dg/images/aeb-vs-loadbalancer-ports.png)


**重要**  
确保您指定的端口没有锁定；否则，用户将无法连接到 Elastic Beanstalk 应用程序。

### 控制 HTTP 端口
<a name="create_deploy_NET.managing.elb.ports.http"></a>

若要关闭 HTTP 端口，请为 **HTTP Listener Port**（HTTP 侦听器端口）选择 **OFF**（关）。若要打开 HTTP 端口，需从列表中选择一个 HTTP 端口（例如，**80**）。

**注意**  
要使用默认端口 80 (如端口 8080) 以外的端口来访问您的环境，请将侦听器添加到现有负载均衡器并配置新侦听器来侦听该端口。  
例如，[Amazon CLI 对于经典负载均衡器](https://docs.amazonaws.cn/cli/latest/reference/elb/create-load-balancer-listeners.html)，键入以下命令，替换*LOAD\$1BALANCER\$1NAME*为 Elastic Beanstalk 的负载均衡器的名称。  

```
aws elb create-load-balancer-listeners --load-balancer-name LOAD_BALANCER_NAME --listeners "Protocol=HTTP, LoadBalancerPort=8080, InstanceProtocol=HTTP, InstancePort=80"
```
例如，[Amazon CLI 对于应用程序负载均衡器](https://docs.amazonaws.cn/cli/latest/reference/elbv2/create-listener.html)，键入以下命令，替换*LOAD\$1BALANCER\$1ARN*为 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.managing.elb.ports.https"></a>

Elastic Load Balancing 支持为客户端与负载均衡器的连接启用流量加密的 HTTPS/TLS 协议。从负载均衡器到 EC2 实例的连接使用纯文本加密。默认情况下，HTTPS 端口是关闭的。

**打开 HTTPS 端口**

1. 使用 Amazon Certificate Manager (ACM) 创建新证书或将证书和密钥上传到 Amazon Identity and Access Management (IAM)。有关请求 ACM 证书的更多信息，请参阅 *Amazon Certificate Manager 用户指南*中的[请求证书](https://docs.amazonaws.cn/acm/latest/userguide/gs-acm-request.html)。有关将第三方证书导入 ACM 中的更多信息，请参阅 *Amazon Certificate Manager 用户指南*中的[导入证书](https://docs.amazonaws.cn/acm/latest/userguide/import-certificate.html)。如果您所在的[地区没有](https://docs.amazonaws.cn/general/latest/gr/acm.html) ACM，请使用 Amazon Identity and Access Management (IAM) 上传第三方证书。ACM 和 IAM 服务存储证书并为 SSL 证书提供 Amazon Resource Name (ARN)。有关创建证书并将证书上传到 IAM 的更多信息，请参阅 *IAM 用户指南* 中的[使用服务器证书](https://docs.amazonaws.cn/IAM/latest/UserGuide/ManagingServerCerts.html)。

1. 通过为 **HTTPS Listener Port**（HTTP 侦听器端口）选择端口来指定 HTTPS 端口。  
![\[Elastic Beanstalk Elastic Load Balancing 配置 – SSL\]](http://docs.amazonaws.cn/elasticbeanstalk/latest/dg/images/aeb-vs-elb-ssl.png)

1. 对于 **SSL Certificate ID**（SSL 证书 ID），输入 SSL 证书的 Amazon Resource 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.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)。

 您可以使用**负载平衡**面板的**EC2 实例运行状况检查**部分来控制运行状况检查的设置。

![\[Elastic Beanstalk Elastic Load Balancing 配置 – 运行状况检查\]](http://docs.amazonaws.cn/elasticbeanstalk/latest/dg/images/aeb-vs-loadbalancer-healthcheck.png)


运行状况检查定义包括一个要用来查询实例运行状况的 URL。通过在 **Application Health Check URL**（应用程序运行状况检查 URL）框中输入 URL（例如 `/myapp/index.jsp`）来覆盖默认 URL，使之对应于您的应用程序中的现有资源。

下表介绍了可为您的应用程序设置的运行状况检查参数。
+ 在**运行状况检查间隔（秒）**中，输入 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**，即表示必须在该 URL 连续 5 次返回错误消息或超时后，Elastic Load Balancing 才将运行状况检查视为失败。

## 会话
<a name="create_deploy_NET.managing.elb.sessions"></a>

默认情况下，负载均衡器会以最小的负载将每个请求独立地传送给该服务器实例。比较起来，粘性 (VPC) 会将用户的会话绑定到具体的服务器实例，以便该用户在会话期间发出的所有请求都会发送到同一个服务器实例中。

 在为应用程序启用粘性会话后，Elastic Beanstalk 会使用负载均衡器生成的 HTTP Cookie。负载均衡器会使用负载均衡器生成的特别 Cookie 来跟踪每个请求的应用程序实例。在负载均衡器收到请求时，它首先会检查并查看请求中是否存在这个 Cookie。如果是这样的话，该请求会发送到 Cookie 中指定的应用程序实例。如果没有 Cookie，负载均衡器会根据现有的负载均衡算法选择一个应用程序实例。响应中会插入 Cookie，从而将同一用户发出的后续请求绑定到该应用程序实例中。策略配置会定义 Cookie 的到期时间，从而确定每个 Cookie 的有效持续时间。

您可以使用 **Load Balancer**（负载均衡器）选项卡上的 **Sessions**（会话）部分指定是否让应用程序的负载均衡器支持会话粘性。

![\[Elastic Beanstalk Elastic Load Balancing 配置 - 会话\]](http://docs.amazonaws.cn/elasticbeanstalk/latest/dg/images/aeb-vs-loadbalancer-sessions.png)


 有关 Elastic Load Balancing 的更多信息，请转到 [Elastic Load Balancing 开发人员指南](https://docs.amazonaws.cn/ElasticLoadBalancing/latest/DeveloperGuide/)。