配置 Classic 负载均衡器 - AWS Elastic Beanstalk
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

配置 Classic 负载均衡器

启用负载均衡时,将为您的 AWS Elastic Beanstalk 环境配备 Elastic Load Balancing 负载均衡器,以便在您的环境中的实例之间分配流量。Elastic Load Balancing 支持多种负载均衡器类型。要了解更多信息,请参阅 Elastic Load Balancing 用户指南。Elastic Beanstalk 可以为您创建负载均衡器,或者让您指定已创建的共享负载均衡器。

本主题介绍 Elastic Beanstalk 创建并专用于您的环境的 Classic Load Balancer 的配置。有关配置 Elastic Beanstalk 支持的所有负载均衡器类型的信息,请参阅Elastic Beanstalk 环境的负载均衡器

注意

您只能在创建环境期间选择您的环境使用的负载均衡器类型。稍后,您可以更改设置以管理运行环境的负载均衡器行为,但不能更改其类型。

介绍

Classic Load Balancer 是 Elastic Load Balancing 的上一代负载均衡器。它支持将 HTTP、HTTPS 或 TCP 请求流量路由到环境实例上的不同端口。

当您的环境使用 Classic Load Balancer 时,默认情况下,Elastic Beanstalk 会将其配置为侦听端口 80 上的 HTTP 流量并转发给同一端口上的实例。要支持安全的连接,您可以使用端口 443 上的侦听器和 TLS 证书来配置负载均衡器。

负载均衡器使用运行状况检查确定运行您的应用程序的 Amazon EC2 实例是否正常运行。运行状况检查会按设置的时间间隔对指定的 URL 发出请求。如果 URL 返回错误消息,或者在指定的超时期间内无法返回任何消息,则表示运行状况检查失败。

如果您的应用程序通过满足来自单一服务器上的同一客户端的多个请求来提高性能,您可以将负载均衡器配置为使用粘性会话。利用粘性会话,负载均衡器可将 Cookie 添加到用于标识满足请求的 Amazon EC2 实例的 HTTP 响应。当从同一客户端收到后续请求时,负载均衡器会使用 Cookie 将该请求发送到同一实例。

借助跨区域负载均衡,Classic Load Balancer 的每个负载均衡器节点会跨所有启用的可用区中的已注册实例平均分配请求。如果禁用了跨区域负载均衡,则每个负载均衡器节点会仅在其可用区中的已注册实例之间平均分配请求。

如果由于运行状况不佳或缩减环境规模而从负载均衡器中删除一个实例,Connection Draining 将为该实例留出一些时间以完成请求,然后再关闭实例和负载均衡器之间的连接。您可以更改为实例预留的用于发送响应的时间量,或完全禁用连接耗尽。

注意

在您使用 Elastic Beanstalk 控制台或 EB CLI 创建环境时,默认情况下将启用 Connection Draining。对于其他客户端,您可以使用配置选项启用该功能。

您可以使用高级负载均衡器设置在任意端口上配置侦听器,修改其他粘性会话设置,以及配置负载均衡器以安全地连接到 EC2 实例。这些设置是通过配置选项提供的,您可以使用源代码中的配置文件设置这些选项,也可以使用 Elastic Beanstalk API 直接在环境中设置这些选项。在 Elastic Beanstalk 控制台中也提供了其中的很多设置。此外,您还可以将负载均衡器配置为将访问日志上传到 Amazon S3。

使用 Elastic Beanstalk 控制台配置 Classic Load Balancer

在创建环境期间或以后运行您的环境时,您可以使用 Elastic Beanstalk 控制台配置 Classic Load Balancer 的端口、HTTPS 证书和其他设置。

环境创建期间,在 Elastic Beanstalk 控制台中配置 Classic Load Balancer

  1. 打开 Elastic Beanstalk 控制台,然后在 Regions (区域) 列表中选择您的 AWS 区域。

  2. 在导航窗格中,选择 Environments (环境)

  3. 选择 Create a new environment (创建新环境) 以开始创建环境。

  4. 在向导的主页上,在选择创建环境之前,选择配置更多选项

  5. 选择高可用性配置预设。

    或者,在容量配置类别中配置负载均衡环境类型。有关详细信息,请参阅 Capacity

  6. Load balancer (负载均衡器) 配置类别中,选择 Edit (编辑)

  7. 如果尚未选择 Classic Load Balancer 选项,请选择该选项。

    
            负载均衡器配置页面 - 选择负载均衡器类型
  8. 根据环境需要进行任何 Classic Load Balancer 配置更改。

  9. 选择保存,然后进行您的环境所需的任何其他配置更改。

  10. 选择 Create environment (创建环境)

在 Elastic Beanstalk 控制台中配置正在运行环境的 Classic Load Balancer

  1. 打开 Elastic Beanstalk 控制台,然后在 Regions (区域) 列表中选择您的 AWS 区域。

  2. 在导航窗格中,选择 Environments (环境),然后从列表中选择环境的名称。

    注意

    如果您有多个环境,请使用搜索栏筛选环境列表。

  3. 在导航窗格中,选择 Configuration (配置)

  4. Load balancer (负载均衡器) 配置类别中,选择 Edit (编辑)

    注意

    如果 Load balancer (负载均衡器) 配置类别没有 Edit (编辑) 按钮,则表示您的环境没有负载均衡器。要了解如何设置负载均衡器,请参阅更改环境类型

  5. 根据环境需要进行 Classic Load Balancer 配置更改。

  6. 选择 Apply

侦听器

可以使用该列表为您的负载均衡器指定侦听器。每个侦听器使用指定协议将指定端口上的传入客户端流量路由到您的实例。最初,该列表显示默认侦听器,它将端口 80 上的传入 HTTP 流量路由到侦听端口 80 上的 HTTP 流量的环境实例服务器。


          Classic Load Balancer 配置 – 编辑侦听器

配置现有的侦听器

  1. 选中表条目旁边的复选框,选择操作,然后选择所需的操作。

  2. 如果您选择编辑,请使用 Classic Load Balancer 侦听器 对话框编辑设置,然后选择保存

例如,您可以编辑默认侦听器并将协议HTTP 更改为 TCP(如果您希望负载均衡器按原样转发请求)。这可防止负载均衡器重写标头 (包括 X-Forwarded-For)。该方法不适用于粘性会话。


          Classic Load Balancer 配置 – 将默认侦听器的协议更改为 TCP

添加侦听器

  1. 选择添加侦听器

  2. Classic Load Balancer 侦听器 对话框中,配置所需的设置,然后选择添加

添加安全侦听器是一个常见案例。下图中的示例为端口 443 上的 HTTPS 流量添加侦听器。该侦听器将传入流量路由到侦听端口 443 上的 HTTPS 流量的环境实例服务器。

确保您具有有效的 SSL 证书,然后才能配置 HTTPS 侦听器。执行以下任一操作:

  • 如果 AWS Certificate Manager (ACM) 在您的 AWS 区域中可用,请使用 ACM 创建或导入证书。有关请求 ACM 证书的更多信息,请参阅 AWS Certificate Manager 用户指南 中的请求证书。有关将第三方证书导入 ACM 中的更多信息,请参阅 AWS Certificate Manager 用户指南 中的导入证书

  • 如果 ACM 在您的 AWS 区域中不可用,请将现有证书和密钥上传到 IAM。有关创建证书并将证书上传到 IAM 的更多信息,请参阅 IAM 用户指南 中的使用服务器证书

有关在 Elastic Beanstalk 中配置 HTTPS 和使用证书的更多详细信息,请参阅为 Elastic Beanstalk 环境配置 HTTPS

对于 SSL 证书,选择 SSL 证书的 ARN。例如,arn:aws:iam::123456789012:server-certificate/abc/certs/buildarn:aws:acm:us-east-2:123456789012:certificate/12345678-12ab-34cd-56ef-12345678


          Classic Load Balancer 配置 – 添加安全侦听器

有关在 Elastic Beanstalk 中配置 HTTPS 和使用证书的详细信息,请参阅为 Elastic Beanstalk 环境配置 HTTPS

会话

选中或清除会话粘性已启用框来启用或禁用粘性会话。使用 Cookie 持续时间配置粘性会话的持续时间,最多为 1000000 秒。在 Load balancer ports (负载均衡器端口) 列表上,选择默认策略 (AWSEB-ELB-StickinessPolicy) 应用于的侦听器端口。


           Classic Load Balancer 的会话粘性和持续时间设置

跨区域负载均衡

选中或清除跨多可用区的负载均衡已启用框以启用或禁用跨区域负载均衡。


          Classic Load Balancer 跨区域负载均衡设置

连接耗尽

选中或清除连接耗尽已启用框来启用或禁用连接耗尽。设置耗尽超时,最多为 3600 秒。


          Classic Load Balancer 的 Connection Draining 和耗尽超时设置

运行状况检查

可以使用以下设置配置负载均衡器运行状况检查:

  • Health check path (运行状况检查路径) – 负载均衡器将运行状况检查请求发送到的路径。如果未设置路径,负载均衡器将尝试在端口 80 上建立 TCP 连接以验证运行状况。

  • Timeout (超时) – 等待运行状况检查响应的时间(秒)。

  • Interval (间隔) – 单个实例的两次运行状况检查间隔的时间(秒)。间隔必须大于超时。

  • Unhealthy threshold (不正常阈值)Healthy threshold (正常阈值) – 在 Elastic Load Balancing 更改实例的运行状况之前,实例必须通过或未通过的运行状况检查次数。


          Classic Load Balancer 的运行状况检查设置
注意

Elastic Load Balancing 运行状况检查不会影响环境的 Auto Scaling 组的运行状况检查行为。除非您手动配置了 Amazon EC2 Auto Scaling 进行替换,否则 Amazon EC2 Auto Scaling 不会自动替换未通过 Elastic Load Balancing 运行状况检查的实例。有关更多信息,请参阅 Auto Scaling 运行状况检查设置

有关运行状况检查以及其对环境的总体运行状况的影响的更多信息,请参阅基本运行状况报告

使用 EB CLI 配置 Classic Load Balancer

当您运行 eb create 时,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 配置命名空间

您可以在以下命名空间中找到与 Classic Load Balancer 相关的设置:

  • aws:elb:healthcheck – 配置负载均衡器运行状况检查的阈值、检查间隔和超时。

  • aws:elasticbeanstalk:application – 配置运行状态检查 URL。

  • aws:elb:loadbalancer – 启用跨区域负载均衡向负载均衡器分配安全组并覆盖 Elastic Beanstalk 创建的默认安全组。此命名空间还包含一些已弃用的选项,这些选项用于配置已由 aws:elb:listener 命名空间中的选项替代的标准侦听器和安全侦听器。

  • aws:elb:listener – 在端口 80 上配置默认侦听器、在端口 443 上配置安全侦听器或在任何端口上配置针对任何协议的其他侦听器。如果您指定 aws:elb:listener 作为命名空间,设置适用于端口 80 上的默认监听器。如果您指定了端口 (例如 aws:elb:listener:443),则在该端口上配置监听器。

  • aws:elb:policies – 配置负载均衡器的其他设置。使用该命名空间中的选项可在任意端口上配置侦听器,修改其他粘性会话设置,以及配置负载均衡器以安全地连接到 Amazon EC2 实例。

EB CLI 和 Elastic Beanstalk 控制台会对前面的选项应用建议的值。如果您需要使用配置文件来配置相同的项,则必须删除这些设置。有关更多信息,请参阅建议值

例 .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