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

配置 Network Load Balancer

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

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

注意

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

介绍

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

注意

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

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

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

在创建环境期间或以后运行您的环境时,您可以使用 Elastic Beanstalk 控制台配置 Network Load Balancer 的侦听器和进程。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    注意

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

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

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

    注意

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

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

  6. 选择 Apply

Network Load Balancer 支持

侦听器

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


          Network Load Balancer 配置 – 侦听器列表

配置现有的侦听器

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

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

添加侦听器

  1. 选择添加侦听器

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

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


          Network Load Balancer 侦听器对话框

进程

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


          Network Load Balancer 配置 – 进程列表

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

Network Load Balancer 的环境进程对话框设置

定义

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


            Network Load Balancer 进程对话框的名称、侦听器端口和进程端口设置

运行状况检查

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

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

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

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


            Network Load Balancer 进程对话框的运行状况检查设置
注意

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

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

示例:用于端对端加密环境的 Network Load Balancer

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

为该示例配置负载均衡器

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

    
            Network Load Balancer 配置示例 – 将默认进程配置为使用进程端口 443
  2. 添加端口 443 侦听器。 添加新侦听器。对于 Listener port (侦听器端口),键入 443。对于 Process port (进程端口),确保 443 已选中。

    
            Network Load Balancer 配置示例 – 添加端口 443 侦听器

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

    
            Network Load Balancer 配置示例 – 具有两个侦听器的侦听器列表
  3. 禁用默认端口 80 侦听器。 对于默认侦听器,关闭已启用选项。

    
            Network Load Balancer 配置示例 – 禁用默认侦听器

使用 EB CLI 配置 Network 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): 3

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

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

Network Load Balancer 命名空间

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

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

  • aws:elbv2:listener – 在 Network Load Balancer 上配置侦听器。这些设置将映射到 Classic Load Balancer 的 aws:elb:listener 中的设置。

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

.ebextensions/network-load-balancer.config

要开始使用 Network Load Balancer,请使用配置文件将负载均衡器类型设置为 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,它可能在同一端口上具有非默认侦听器,以用于侦听到特定路径的流量(如需详细信息,请参阅 应用程序负载均衡器)。对于 Network Load Balancer,该选项为该侦听器指定唯一的目标进程。

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