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

Network Load Balancer

负载均衡器 充当客户端的单一接触点。客户端将请求发送到负载均衡器,然后负载均衡器将请求发送到一个或多个可用区中的目标 (例如 EC2 实例)。

要配置您的负载均衡器,可以创建目标组,然后将目标注册到目标组。如果您确保每个启用的可用区均具有至少一个注册目标,则负载均衡器将具有最高效率。您还可以创建侦听器来检查来自客户端的连接请求,并将来自客户端的请求路由到目标组中的目标。

Network Load Balancer 通过 VPC 对等连接、AWS 托管 VPN 和第三方 VPN 解决方案支持来自客户端的连接。

负载均衡器状态

负载均衡器可能处于下列状态之一:

provisioning

正在设置负载均衡器。

active

负载均衡器已完全设置并准备好路由流量。

failed

负载均衡器无法设置。

负载均衡器属性

以下是负载均衡器属性:

deletion_protection.enabled

指示是否启用删除保护。默认为 false

load_balancing.cross_zone.enabled

指示是否启用了跨区域负载均衡。默认为 false

可用区

在创建负载均衡器时,可为其启用一个或多个可用区。如果为负载均衡器启用多个可用区,则可以提高应用程序的容错能力。您无法在创建可用区后对 网络负载均衡器 禁用这些可用区,但您可以启用其他可用区。

当启用某个可用区时,应指定该可用区中的一个子网。Elastic Load Balancing ; 会在该可用区中创建一个负载均衡器节点,并为子网创建一个网络接口(描述以“ELB net”开头并包括负载均衡器的名称)。可用区内的每个负载均衡器节点使用该网络接口来获取一个 IPv4 地址。请注意,您可以查看此网络接口,但不能修改它。

在您创建面向 Internet 的负载均衡器时,可以选择为每个子网指定一个弹性 IP 地址。如果您不选择自己的弹性 IP 地址之一,请为每个子网 Elastic Load Balancing 提供一个弹性 IP 地址。这些弹性 IP 地址为您的负载均衡器提供静态 IP 地址,这些地址在负载均衡器的生命周期内不会更改。创建负载均衡器后,无法更改这些弹性 IP 地址。

在您创建内部负载均衡器时,可以选择为每个子网指定一个私有 IP 地址。如果您没有从子网指定 IP 地址,Elastic Load Balancing 将为您选择一个 IP 地址。这些私有 IP 地址为您的负载均衡器提供静态 IP 地址,这些地址在负载均衡器的生命周期内不会更改。创建负载均衡器后,无法更改这些私有 IP 地址。

要求

  • 对于面向 Internet 的负载均衡器,您指定的子网必须至少具有 8 个可用 IP 地址。对于内部负载均衡器,仅当您让 AWS 从子网中选择私有 IPv4 地址时,才需要执行此操作。

  • 无法指定受约束可用区中的子网。错误消息为“Load balancers with type 'network' are not supported in az_name (az_name 中不支持“网络”类型的负载均衡器)”。您可以在不受约束的其他可用区中指定子网,并使用跨区域负载均衡将流量分发至受约束d 可用区中的目标。

  • 您无法在本地区域中指定子网。

在启用一个可用区后,负载均衡器会开始将请求路由到该可用区中的已注册目标。如果您确保每个启用的可用区均具有至少一个注册目标,则负载均衡器将具有最高效率。

使用控制台添加可用区

  1. 打开 Amazon EC2 控制台 https://console.amazonaws.cn/ec2/

  2. 在导航窗格上的 LOAD BALANCING 下,选择 Load Balancers

  3. 选择负载均衡器。

  4. Description (描述) 选项卡上的 Basic Configuration (基本配置) 下,选择 Edit subnets (编辑子网)

  5. 要启用一个可用区,请选中该可用区的复选框。如果该可用区有一个子网,则将选择此子网。如果该可用区有多个子网,请选择其中一个子网。请注意,您只能为每个可用区选择一个子网。

    对于面向 Internet 的负载均衡器,您可以为每个可用区选择弹性 IP 地址。对于内部负载均衡器,您可以从每个子网的 IPv4 范围分配私有 IP 地址,而不是让 Elastic Load Balancing 分配一个 IP 地址。

  6. 选择 Save

使用 AWS CLI 添加可用区

使用 set-subnets 命令。

跨区域负载均衡

默认情况下,每个负载均衡器节点仅在其可用区中的已注册目标之间分配流量。如果您启用了跨区域负载均衡,则每个负载均衡器节点会在所有启用的可用区中的已注册目标之间分配流量。有关更多信息,请参阅 Elastic Load Balancing 用户指南 中的跨区域负载均衡

使用控制台启用跨区域负载均衡

  1. 打开 Amazon EC2 控制台 https://console.amazonaws.cn/ec2/

  2. 在导航窗格中的 LOAD BALANCING 下,选择 Load Balancers

  3. 选择负载均衡器。

  4. 选择 DescriptionEdit attributes

  5. 编辑负载均衡器属性页面上,为跨区域负载均衡选择启用,然后选择保存

使用 AWS CLI 启用跨区域负载均衡

使用带 load_balancing.cross_zone.enabled 属性的 modify-load-balancer-attributes 命令。

删除保护

为了防止您的负载均衡器被意外删除,您可以启用删除保护。默认情况下,已为负载均衡器禁用删除保护。

如果您为负载均衡器启用删除保护,则必须先禁用删除保护,然后才能删除负载均衡器。

使用控制台启用删除保护

  1. 打开 Amazon EC2 控制台 https://console.amazonaws.cn/ec2/

  2. 在导航窗格中的 LOAD BALANCING 下,选择 Load Balancers

  3. 选择负载均衡器。

  4. 选择 DescriptionEdit attributes

  5. 编辑负载均衡器属性页面上,为删除保护选择启用,然后选择保存

使用控制台禁用删除保护

  1. 打开 Amazon EC2 控制台 https://console.amazonaws.cn/ec2/

  2. 在导航窗格中的 LOAD BALANCING 下,选择 Load Balancers

  3. 选择负载均衡器。

  4. 选择 DescriptionEdit attributes

  5. Edit load balancer attributes 页面上,清除 Enable delete protection 并选择 Save

使用 AWS CLI 启用或禁用删除保护

使用带 deletion_protection.enabled 属性的 modify-load-balancer-attributes 命令。

连接空闲超时

对于客户端通过 网络负载均衡器 发出的每个 TCP 请求,都将跟踪该连接的状态。如果客户端或目标通过连接发送数据的间隔超过空闲超时期限,则连接将关闭。如果客户端或目标在空闲超时期限后发送数据,则会收到一个 TCP RST 数据包,以指示连接不再有效。

对于 TCP 流,Elastic Load Balancing 将空闲超时值设为 350 秒。您不能修改此值。客户端或目标可以使用 TCP keepalive 数据包重置空闲超时值。

虽然 UDP 无连接,但是负载均衡器将基于源和目标 IP 地址和端口保持 UDP 流状态,从而确保属于同一个流中的数据包始终发送到相同的目标。空闲超时期限后,负载均衡器会考虑将传入的 UDP 数据包作为新流,并路由到新的目标。对于 UDP 流,Elastic Load Balancing 将空闲超时值设为 120 秒。

EC2 实例必须在 30 秒内响应新请求,才能建立退回路径。

DNS 名称

每个网络负载均衡器都使用以下语法接收默认域名系统 (DNS) 名称:name-id.elb.region.amazonaws.com.cn。例如,my-load-balancer-1234567890abcdef.elb.us-west-2.amazonaws.com.cn。

如果您更喜欢使用更容易记住的 DNS 名称,则可以创建自定义域名并将其与负载均衡器的 DNS 名称相关联。在客户端使用此自定义域名进行请求时,DNS 服务器将它解析为负载均衡器的 DNS 名称。

首先,向经认可的域名注册商注册域名。下一步,通过您的 DNS 服务(如您的域注册商)创建一条别名记录将请求路由到您的负载均衡器。有关更多信息,请参阅您的 DNS 服务的文档。例如,您可以使用 Amazon Route 53 作为 DNS 服务。有关更多信息,请参阅 Amazon Route 53 开发人员指南 中的将流量路由到 ELB 负载均衡器

负载均衡器针对每个启用的可用区都有一个 IP 地址。这些是负载均衡器节点的地址。负载均衡器的 DNS 名称解析为这些地址。例如,假设您的负载均衡器的自定义域名是 example.networkloadbalancer.com。使用以下 dignslookup 命令确定负载均衡器节点的 IP 地址。

Linux 或 Mac

$ dig +short example.networkloadbalancer.com

Windows

C:\> nslookup example.networkloadbalancer.com

负载均衡器具有其负载均衡器节点的 DNS 记录。您可以使用具有以下语法的 DNS 名称来确定负载均衡器节点的 IP 地址:az.name-id.elb.region.amazonaws.com.cn。

Linux 或 Mac

$ dig +short us-west-2b.my-load-balancer-1234567890abcdef.elb.us-west-2.amazonaws.com.cn

Windows

C:\> nslookup us-west-2b.my-load-balancer-1234567890abcdef.elb.us-west-2.amazonaws.com.cn