使用 Amazon Toolkit for Visual Studio 配置 Elastic Load Balancing - Amazon Elastic Beanstalk
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

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

使用 Amazon Toolkit for Visual Studio 配置 Elastic Load Balancing

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

使用 Elastic Load Balancing,您可以在所有正在运行的实例间自动分配和平衡传入的应用程序流量。还可以在需要增加应用程序容量时轻松添加新实例。

Elastic Beanstalk 会在您部署应用程序时自动地预配置 Elastic Load Balancing。您可以使用 Amazon Toolkit for Visual Studio 的应用程序环境选项卡内的 Load Balancer(负载均衡器)选项卡来编辑 Elastic Beanstalk 环境的 Amazon EC2 实例配置。


        Visual Studio Toolkit for Elastic Beanstalk 中负载均衡器配置面板的屏幕快照

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

端口

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


          Elastic Beanstalk Elastic Load Balancing 配置 - 端口
重要

确保您指定的端口没有锁定;否则,用户将无法连接到 Elastic Beanstalk 应用程序。

控制 HTTP 端口

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

注意

要使用默认端口 80 (如端口 8080) 以外的端口来访问您的环境,请将侦听器添加到现有负载均衡器并配置新侦听器来侦听该端口。

例如,当使用适用于 Classic Load Balancer 的 Amazon CLI 时,键入以下命令可将 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 的 Amazon CLI 时,键入以下命令可将 LOAD_BALANCER_ARN 替换为您用于 Elastic Beanstalk 的负载均衡器的 ARN。

aws elbv2 create-listener --load-balancer-arn LOAD_BALANCER_ARN --protocol HTTP --port 8080

如果希望 Elastic Beanstalk 监控您的环境,请勿删除端口 80 上的侦听器。

控制 HTTPS 端口

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

打开 HTTPS 端口
  1. 使用 Amazon Certificate Manager (ACM) 创建新的证书,或者将证书和密钥上传到 Amazon Identity and Access Management (IAM)。有关请求 ACM 证书的更多信息,请参阅 Amazon Certificate Manager 用户指南中的请求证书。有关将第三方证书导入 ACM 中的更多信息,请参阅 Amazon Certificate Manager 用户指南中的导入证书。如果 ACM 在您所在的区域不可用,请使用 Amazon Identity and Access Management (IAM) 上传第三方证书。ACM 和 IAM 服务存储证书并为 SSL 证书提供 Amazon Resource Name (ARN)。有关创建证书并将证书上传到 IAM 的更多信息,请参阅 IAM 用户指南 中的使用服务器证书

  2. 通过为 HTTPS Listener Port(HTTP 侦听器端口)选择端口来指定 HTTPS 端口。

    
                Elastic Beanstalk Elastic Load Balancing 配置 – SSL
  3. 对于 SSL Certificate ID(SSL 证书 ID),输入 SSL 证书的 Amazon Resource Name(ARN)。例如,arn:aws:iam::123456789012:server-certificate/abc/certs/buildarn:aws:acm:us-east-2:123456789012:certificate/12345678-12ab-34cd-56ef-12345678。使用您在步骤 1 中创建或上传的 SSL 证书。

若要关闭 HTTPS 端口,请为 HTTPS Listener Port(HTTPS 侦听器端口)选择 OFF(关)。

运行状况检查

运行状况检查定义包括一个要用来查询实例运行状况的 URL。默认情况下,对于非早期容器,Elastic Beanstalk 使用 TCP:80,而对于早期容器,则使用 HTTP:80。您可以通过在应用程序运行状况检查 URL 框中输入 URL(例如 /myapp/default.aspx)以覆盖默认 URL,使之与应用程序中的现有资源匹配。如果您覆盖默认 URL,则 Elastic Beanstalk 将使用 HTTP 来查询资源。要检查您使用的是否是早期容器类型,请参阅为什么某些平台版本标记为传统版本?

您可以使用 Load Balancing(负载均衡)面板的 EC2 Instance Health Check(EC2 实例运行状况检查)部分来控制运行状况检查的设置。


          Elastic Beanstalk Elastic Load Balancing 配置 – 运行状况检查

运行状况检查定义包括一个要用来查询实例运行状况的 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 探测的次数。例如,为运行状况不正常检查计数阈值指定 5,即表示必须在该 URL 连续 5 次返回错误消息或超时后,Elastic Load Balancing 才将运行状况检查视为失败。

会话

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

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

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


          Elastic Beanstalk Elastic Load Balancing 配置 - 会话

有关 Elastic Load Balancing 的更多信息,请转到 Elastic Load Balancing 开发人员指南