Network Load Balancer
负载均衡器 充当客户端的单一接触点。客户端将请求发送到负载均衡器,然后负载均衡器将请求发送到一个或多个可用区中的目标 (例如 EC2 实例)。
要配置您的负载均衡器,可以创建目标组,然后将目标注册到目标组。如果您确保每个启用的可用区均具有至少一个注册目标,则负载均衡器将具有最高效率。您还可以创建侦听器来检查来自客户端的连接请求,并将来自客户端的请求路由到目标组中的目标。
Network Load Balancer 通过 VPC 对等连接、Amazon托管 VPN、Amazon Direct Connect 和第三方 VPN 解决方案支持来自客户端的连接。
目录
负载均衡器状态
负载均衡器具有下列状态之一:
provisioning
-
正在设置负载均衡器。
active
-
负载均衡器已完全设置并准备好路由流量。
failed
-
无法设置负载均衡器。
负载均衡器属性
负载均衡器具有以下属性:
access_logs.s3.enabled
-
指示是否启用存储在 Amazon S3 中的访问日志。默认为
false
。 access_logs.s3.bucket
-
访问日志所用的 Amazon S3 存储桶的名称。如果启用访问日志,则此属性是必需的。有关更多信息,请参阅 存储桶要求。
access_logs.s3.prefix
-
Amazon S3 存储桶中位置的前缀。
deletion_protection.enabled
-
指示是否启用删除保护。默认为
false
。 ipv6.deny_all_igw_traffic
-
阻止互联网网关 (IGW) 访问负载均衡器,以防通过互联网网关意外访问内部负载均衡器。对于面向互联网的负载均衡器,它设置为
false
;对于内部负载均衡器,它设置为true
。此属性不会阻止非 IGW(例如,通过对等连接、中转网关、Amazon Direct Connect 或者 Amazon VPN)访问互联网。 load_balancing.cross_zone.enabled
-
指示是否启用了跨可用区负载均衡。默认为
false
。
IP 地址类型
您可以设置客户端可与您的负载均衡器结合使用的 IP 地址类型。以下是 IP 地址类型:
ipv4
-
客户端必须使用 IPv4 地址连接到负载均衡器(例如 192.0.2.1)。启用 IPv4 的负载均衡器(面向互联网和内部)支持 TCP、UDP、TCP_UDP 和 TLS 侦听器。
dualstack
-
客户端可以同时使用 IPv4 地址(例如 192.0.2.1)和 IPv6 地址(例如,2001:0db8:85a3:0:0:8a2e:0370:7334)连接到负载均衡器。启用双堆栈的负载均衡器(面向互联网和内部)支持 TCP 和 TLS 侦听器。
双堆栈负载均衡器注意事项
-
负载均衡器根据目标组的 IP 地址类型与目标进行通信。
-
当您为负载均衡器启用双堆栈模式时,Elastic Load Balancing 为负载均衡器提供 AAAA DNS 记录。使用 IPv4 地址与负载均衡器通信的客户端解析 A DNS 记录。使用 IPv6 地址与负载均衡器通信的客户端解析 AAAA DNS 记录。
-
阻止通过互联网网关对内部双堆栈负载均衡器的访问,以防意外访问互联网。但是,这不会阻止通过其他方式(例如,通过对等连接、Transit Gateway、Amazon Direct Connect 或者 Amazon VPN)访问互联网。
有关负载均衡器 IP 地址类型的更多信息,请参阅 更新地址类型。
可用区
在创建负载均衡器时,可为其启用一个或多个可用区。如果为负载均衡器启用多个可用区,则可以提高应用程序的容错能力。您无法在创建可用区后对网络负载均衡器禁用这些可用区,但可以启用其他可用区。
当启用某个可用区时,应指定该可用区中的一个子网。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 地址。对于内部负载均衡器,仅当您让 Amazon 从子网中选择私有 IPv4 地址时,才需要执行此操作。
-
无法指定受约束可用区中的子网。错误消息为“Load balancers with type 'network' are not supported in az_name (az_name 中不支持“网络”类型的负载均衡器)”。您可以在不受约束的其他可用区中指定子网,并使用跨可用区负载均衡将流量分发至受约束d 可用区中的目标。
-
您可以指定已经与您共享的子网。
-
您无法在本地区域中指定子网。
在启用一个可用区后,负载均衡器会开始将请求路由到该可用区中的已注册目标。如果您确保每个启用的可用区均具有至少一个注册目标,则负载均衡器将具有最高效率。
使用控制台添加可用区
-
通过以下网址打开 Amazon EC2 控制台:https://console.aws.amazon.com/ec2/
。 -
在导航窗格中,选择负载均衡器。
-
选择负载均衡器的名称以打开其详细信息页面。
-
在 Network mapping(网络映射)选项卡上,选择 Edit subnets(编辑子网)。
-
要启用一个可用区,请选中该可用区的复选框。如果该可用区有一个子网,则将选择此子网。如果该可用区有多个子网,请选择其中一个子网。请注意,您只能为每个可用区选择一个子网。
对于面向 Internet 的负载均衡器,您可以为每个可用区选择弹性 IP 地址。对于内部负载均衡器,您可以从每个子网的 IPv4 范围分配私有 IP 地址,而不是让 Elastic Load Balancing 分配一个 IP 地址。
-
选择 Save changes(保存更改)。
使用 Amazon CLI 添加可用区
使用 set-subnets 命令。
跨可用区负载均衡
默认情况下,每个负载均衡器节点仅在其可用区中的已注册目标之间分配流量。如果您开启了跨区域负载均衡,则每个负载均衡器节点会在所有启用的可用区中的注册目标之间分配流量。您也可以开启目标组级别的跨区域负载均衡。有关更多信息,请参阅 Elastic Load Balancing 用户指南中的 目标组的跨区域负载均衡 和跨区域负载均衡。
删除保护
为了防止您的负载均衡器被意外删除,您可以启用删除保护。默认情况下,已为负载均衡器禁用删除保护。
如果您为负载均衡器启用删除保护,则必须先禁用删除保护,然后才能删除负载均衡器。
使用控制台启用删除保护
-
通过以下网址打开 Amazon EC2 控制台:https://console.aws.amazon.com/ec2/
。 -
在导航窗格中,选择负载均衡器。
-
选择负载均衡器的名称以打开其详细信息页面。
-
在属性选项卡上,选择编辑。
-
在配置下,打开删除保护。
-
选择 Save changes(保存更改)。
使用控制台禁用删除保护
-
通过以下网址打开 Amazon EC2 控制台:https://console.aws.amazon.com/ec2/
。 -
在导航窗格中,选择负载均衡器。
-
选择负载均衡器的名称以打开其详细信息页面。
-
在属性选项卡上,选择编辑。
-
在配置下,打开删除保护。
-
选择 Save changes(保存更改)。
使用 Amazon CLI 启用或禁用删除保护
使用带 deletion_protection.enabled
属性的 modify-load-balancer-attributes 命令。
连接空闲超时
对于客户端通过 Network Load Balancer 发出的每个 TCP 请求,都将跟踪该连接的状态。如果客户端或目标通过连接发送数据的间隔超过空闲超时期限,则连接将关闭。如果客户端或目标在空闲超时期限后发送数据,则会收到一个 TCP RST 数据包,以指示连接不再有效。
我们将 TCP 流的空闲超时值设置为 350 秒。您无法修改此值。客户端或目标可以使用 TCP keepalive 数据包重置空闲超时值。为维护 TLS 连接而发送的 Keepalive 数据包不能包含数据或负载。
当 TLS 侦听器收到来自客户端或目标的 TCP keepalive 数据包时,负载均衡器会生成 TCP keepalive 数据包,并每 20 秒将它们发送到前端和后端连接。您不能修改此行为。
虽然 UDP 无连接,但是负载均衡器将根据源和目标 IP 地址和端口保持 UDP 流状态。这可确保属于同一个流中的数据包始终发送到相同的目标。空闲超时期限后,负载均衡器会考虑将传入的 UDP 数据包作为新流,并路由到新的目标。Elastic Load Balancing 将 UDP 流的空闲超时值设置为 120 秒。
EC2 实例必须在 30 秒内响应新请求,才能建立退回路径。
DNS 名称
每个 Network Load Balancer 都会收到具有以下语法的默认域名系统 (DNS) 名称:name
-id
.elb.region
.amazonaws.com。例如,my-load-balancer-1234567890abcdef.elb.us-east-2.amazonaws.com。
如果您更喜欢使用更容易记住的 DNS 名称,则可以创建自定义域名并将其与负载均衡器的 DNS 名称相关联。在客户端使用此自定义域名进行请求时,DNS 服务器将它解析为负载均衡器的 DNS 名称。
首先,向经认可的域名注册商注册域名。下一步,通过您的 DNS 服务(如您的域注册商)创建一条 DNS 记录将请求路由到您的负载均衡器。有关更多信息,请参阅您的 DNS 服务的文档。例如,如果您将 Amazon Route 53 用作 DNS 服务,请创建一条指向负载均衡器的别名记录。有关更多信息,请参阅 Amazon Route 53 开发人员指南中的将流量路由到 ELB 负载均衡器。
负载均衡器针对每个启用的可用区都有一个 IP 地址。这些是负载均衡器节点的 IP 地址。负载均衡器的 DNS 名称解析为这些地址。例如,假设您的负载均衡器的自定义域名是 example.networkloadbalancer.com
。使用以下 dig 或 nslookup 命令确定负载均衡器节点的 IP 地址。
Linux 或 Mac
$
dig +short
example.networkloadbalancer.com
Windows
C:\>
nslookup
example.networkloadbalancer.com
负载均衡器具有其负载均衡器节点的 DNS 记录。您可以使用具有以下语法的 DNS 名称来确定负载均衡器节点的 IP 地址:az
.name
-id
.elb.region
.amazonaws.com。
Linux 或 Mac
$
dig +short
us-east-2b.my-load-balancer-1234567890abcdef.elb.us-east-2.amazonaws.com
Windows
C:\>
nslookup
us-east-2b.my-load-balancer-1234567890abcdef.elb.us-east-2.amazonaws.com