AWS Elastic Beanstalk
开发人员指南
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 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 将该请求发送到同一实例。

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

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

注意

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

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

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

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

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

  1. 打开 Elastic Beanstalk 控制台

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

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

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

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

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

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

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

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

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

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

  1. 打开 Elastic Beanstalk 控制台

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

  3. 选择 Configuration

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

    注意

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

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

  6. 选择 Apply

侦听器

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


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

配置现有的侦听器

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

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

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


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

添加侦听器

  1. 选择添加侦听器

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

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

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

  • 如果 AWS Certificate Manager 在您的 AWS 区域中可用,请使用 AWS Certificate Manager (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-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