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

配置网络负载均衡器

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

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

注意

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

介绍

通过网络负载均衡器,默认侦听器接受端口 80 上的 TCP 请求并将它们分配到环境中的实例。您可以配置运行状况检查行为、配置侦听器端口或在其他端口中添加侦听器。

注意

与 传统负载均衡器 或 应用程序负载均衡器 不同,网络负载均衡器不能具有应用程序层(第 7 层)HTTP 或 HTTPS 侦听器。它仅支持传输层(第 4 层)TCP 侦听器。HTTP 和 HTTPS 流量可通过 TCP 路由到您的环境。要在 Web 客户端与您的环境之间建立安全的 HTTPS 连接,请在该环境的实例上安装自签名证书,并将该实例配置为在适当端口(通常为 443)上侦听并终止 HTTPS 连接。此配置根据不同平台而有所变化。有关说明,请参阅配置应用程序以终止实例的 HTTPS 连接。然后,配置您的网络负载均衡器以添加一个侦听器,该侦听器映射到在相应端口上侦听的进程。

网络负载均衡器支持主动运行状况检查。这些检查基于到根 (/) 路径的消息。此外,网络负载均衡器还支持被动运行状况检查。它会自动检测有故障的后端实例并只将流量路由到正常运行的实例。

使用 Elastic Beanstalk 控制台配置 网络负载均衡器

在创建环境期间或以后运行您的环境时,您可以使用 Elastic Beanstalk 控制台配置网络负载均衡器的侦听器和进程。

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

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

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

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

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

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

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

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

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

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

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

  1. 打开 Elastic Beanstalk 控制台

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

  3. 选择 Configuration

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

    注意

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

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

  6. 选择 Apply

侦听器

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


          网络负载均衡器 配置 - 侦听器列表

配置现有的侦听器

  1. 选中表条目旁边的复选框,然后选择操作编辑

  2. 使用 Network Load Balancer listener (网络负载均衡器侦听器) 对话框编辑设置,然后选择 Save (保存)

添加侦听器

  1. 选择添加侦听器

  2. Network Load Balancer listener (网络负载均衡器侦听器) 对话框中,配置所需的设置,然后选择 Add (添加)

使用 Network Load Balancer listener (网络负载均衡器侦听器) 对话框来配置侦听器侦听流量所在的端口,并选择您要将流量路由到的进程(通过进程侦听的端口指定)。


          网络负载均衡器侦听器对话框

进程

可以使用该列表为您的负载均衡器指定进程。进程是侦听器将流量路由到的目标。每个侦听器将指定端口上的传入客户端流量路由到您的实例上的进程。最初,该列表显示默认进程,它侦听端口 80 上的传入流量。


          网络负载均衡器 配置 - 进程列表

您可以编辑现有进程的设置或添加新的进程。要在列表中开始编辑或添加进程,请使用为侦听器列表列出的相同步骤。将打开环境进程对话框。

网络负载均衡器的环境进程对话框设置

定义

可以使用以下设置定义进程:其 Name (名称) 以及它在其中侦听请求的 Process port (进程端口)


            网络负载均衡器进程对话框的名称、侦听器端口和进程端口设置

运行状况检查

可以使用以下设置配置进程运行状况检查:

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

  • Healthy threshold (不正常阈值) – 在 Elastic Load Balancing 更改实例的运行状况之前,实例必须通过或未通过的运行状况检查次数。(对于网络负载均衡器,Unhealthy threshold (不正常阈值) 是始终等于正常阈值的只读设置。)

  • 取消注册延迟 – 在取消注册实例之前等待活动请求完成的时间(秒)。


            网络负载均衡器进程对话框的运行状况检查设置

注意

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

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

示例:用于端对端加密环境的网络负载均衡器

在本示例中,您的应用程序需要端对端流量加密。要配置您环境的网络负载均衡器以满足这些要求,您需要将默认进程配置为侦听端口 443、向端口 443 添加一个可将流量路由到默认进程的侦听器,并禁用默认侦听器。

为该示例配置负载均衡器

  1. 配置默认进程。 选择默认进程,然后为 Actions (操作) 选择 Edit (编辑)。对于 Process port (进程端口) 键入 443

    
              网络负载均衡器配置示例 - 将默认进程配置为使用进程端口 443
  2. 添加端口 443 侦听器。 添加新侦听器。对于 Listener port (侦听器端口),键入 443。对于 Process port (进程端口),确保 443 已选中。

    
              网络负载均衡器配置示例 - 添加端口 443 的侦听器

    您现在可以查看列表上的其他侦听器。

    
              网络负载均衡器 配置示例 - 具有两个侦听器的侦听器列表
  3. 禁用默认端口 80 侦听器。 对于默认侦听器,关闭已启用选项。

    
              网络负载均衡器 配置示例 - 禁用默认侦听器

使用 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): 3

您也可以使用 --elb-type 选项指定负载均衡器类型。

$ eb create test-env --elb-type network

网络负载均衡器命名空间

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

  • aws:elasticbeanstalk:environment – 选择用于环境的负载均衡器类型。网络负载均衡器的值为 network

  • aws:elbv2:loadbalancer – 将访问日志和应用于 网络负载均衡器 的其他设置作为一个整体配置。

    注意

    此命名空间中的 ManagedSecurityGroupSecurityGroups 设置不适用于网络负载均衡器。

  • aws:elbv2:listener – 在 网络负载均衡器 上配置侦听器。这些设置将映射到 Classic Load Balancer 的 aws:elb:listener 中的设置。

  • aws:elasticbeanstalk:environment:process – 配置运行状况检查并为在您的环境的实例上运行的进程指定端口和协议。端口和协议设置将映射到 传统负载均衡器 上侦听器的 aws:elb:listener 中的实例端口和实例协议设置。运行状况检查设置将映射到 aws:elb:healthcheckaws:elasticbeanstalk:application 命名空间中的设置。

.ebextensions/network-load-balancer.config

要开始使用网络负载均衡器,请使用配置文件将负载均衡器类型设置为 network

option_settings: aws:elasticbeanstalk:environment: LoadBalancerType: network

注意

您只能在环境创建期间设置负载均衡器类型。

.ebextensions/nlb-default-process.config

以下配置文件将修改默认进程的运行状况检查设置。

option_settings: aws:elasticbeanstalk:environment:process:default: DeregistrationDelay: '20' HealthCheckInterval: '10' HealthyThresholdCount: '5' UnhealthyThresholdCount: '5' Port: '80' Protocol: TCP

例 .ebextensions/nlb-secure-listener.config

以下配置文件将为端口 443 上的安全流量添加一个侦听器和用于侦听端口 443 的匹配的目标过程。

option_settings: aws:elbv2:listener:443: DefaultProcess: https ListenerEnabled: 'true' aws:elasticbeanstalk:environment:process:https: Port: '443'

DefaultProcess 选项以此方式命名是因为 Application Load Balancer,它可能在同一端口上具有非默认侦听器,以用于侦听到特定路径的流量(有关详细信息,请参阅 应用程序负载均衡器)。对于网络负载均衡器,该选项为该侦听器指定唯一的目标进程。

在此示例中,我们将进程命名为 https,因为它侦听安全 (HTTPS) 流量。由于网络负载均衡器只能使用 TCP,因该侦听器使用 TCP 协议将流量发送到指定端口上的进程。由于 HTTP 和 HTTPS 网络流量是在 TCP 上实施的,因此,可以这样做。