AWS Elastic Beanstalk
开发人员指南
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 Amazon AWS 入门

配置传统负载均衡器

启用负载均衡时,将为您的 AWS Elastic Beanstalk 环境配备 Elastic Load Balancing 负载均衡器,以便在您的环境中的实例之间分配流量。Elastic Load Balancing支持几种负载均衡器类型。要了解这些负载均衡器类型,请参阅 Elastic Load Balancing 用户指南

本主题介绍了如何配置传统负载均衡器。有关配置 Elastic Beanstalk 支持的所有负载均衡器类型的信息,请参阅适用于您的 AWS Elastic Beanstalk 环境的负载均衡器

注意

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

介绍

传统负载均衡器是上一代 Elastic Load Balancing 负载均衡器。它支持将 HTTP、HTTPS 或 TCP 请求流量路由到环境实例上的不同端口。在启用负载均衡时,传统负载均衡器是默认负载均衡器类型。

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

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

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

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

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

注意

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

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

使用 Elastic Beanstalk 控制台配置传统负载均衡器

在创建环境期间或以后运行您的环境时,您可以使用 Elastic Beanstalk 控制台配置传统负载均衡器的端口、HTTPS 证书和其他设置。

在创建环境期间在 Elastic Beanstalk 控制台中配置传统负载均衡器

  1. 使用新建环境向导开始创建您的环境。

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

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

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

  4. 负载均衡器配置卡上,选择修改

  5. 选择传统负载均衡器选项 (如果尚未选择)。

     负载均衡器配置页面 - 选择负载均衡器类型
  6. 进行您的环境所需的任何传统负载均衡器配置更改。

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

  8. 选择 Create environment

在 Elastic Beanstalk 控制台中配置正在运行的环境的传统负载均衡器

  1. 打开 Elastic Beanstalk 控制台

  2. 导航到您的环境的管理页

  3. 选择 Configuration

  4. 负载均衡器配置卡上,选择修改

    注意

    如果负载均衡器配置卡没有修改按钮,则表示您的环境没有负载均衡器。要了解如何设置负载均衡器,请参阅更改环境类型

  5. 进行您的环境所需的传统负载均衡器配置更改。

  6. 选择 Apply

Listeners

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

 传统负载均衡器配置 - 编辑侦听器

配置现有的侦听器

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

  2. 如果您选择编辑,请使用传统负载均衡器侦听器对话框编辑设置,然后选择保存

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

 传统负载均衡器配置 - 将默认侦听器的协议更改为 TCP

添加侦听器

  1. 选择添加侦听器

  2. 传统负载均衡器侦听器对话框中,配置所需的设置,然后选择添加

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

确保您具有有效的 SSL 证书,然后才能配置 HTTPS 侦听器。使用 AWS Certificate Manager (ACM) 创建新的证书,或者将证书和密钥上传到 AWS Identity and Access Management (IAM)。有关请求 ACM 证书的更多信息,请参阅 AWS Certificate Manager 用户指南 中的请求证书。有关将第三方证书导入 ACM 中的更多信息,请参阅 AWS Certificate Manager 用户指南 中的导入证书。如果 ACM 在您的 AWS 区域中不可用,请将现有证书和密钥上传到 IAM。

有关创建证书并将证书上传到 IAM 的更多信息,请参阅 IAM 用户指南 中的使用服务器证书

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

 传统负载均衡器配置 - 添加安全侦听器

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

会话

可以使用这些设置启用或禁用粘性会话 (会话粘性已启用),以及配置粘性会话的持续时间 (Cookie 持续时间),最多为 1000000 秒。

 传统负载均衡器会话粘性设置

跨区域负载均衡

可以使用该设置启用或禁用跨区域负载均衡 (跨多可用区的负载均衡已启用)。

 传统负载均衡器跨区域负载均衡设置

Connection Draining

可以使用这些设置启用或禁用连接耗尽 (连接耗尽已启用) 以及设置耗尽超时,最多为 3600 秒。

 传统负载均衡器连接耗尽设置

运行状况检查

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

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

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

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

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

 传统负载均衡器运行状况检查设置

注意

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

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

使用 EB CLI 配置传统负载均衡器

当您运行 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相关的设置:

  • 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-cn:acm:us-west-2:123456789012:certificate/12345678-12ab-34cd-56ef-12345678 InstancePort: 80 InstanceProtocol: HTTP aws:elb:listener: ListenerEnabled: false