Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅
中国的 Amazon Web Services 服务入门
(PDF)。
本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
编辑网络负载均衡器的属性
创建网络负载均衡器之后,您可以编辑其属性。
删除保护
为了防止您的网络负载均衡器被意外删除,您可以启用删除保护。默认情况下,已为网络负载均衡器禁用删除保护。
如果您为网络负载均衡器启用删除保护,则必须先禁用删除保护,然后才能删除网络负载均衡器。
- Console
-
- Amazon CLI
-
启用删除保护
使用带 deletion_protection.enabled
属性的 modify-load-balancer-attributes 命令。
aws elbv2 modify-load-balancer-attributes \
--load-balancer-arn load-balancer-arn
\
--attributes "Key=deletion_protection.enabled,Value=true
"
- CloudFormation
-
启用删除保护
更新AWS::ElasticLoadBalancingV2::LoadBalancer资源以包含该deletion_protection.enabled
属性。
Resources:
myLoadBalancer:
Type: 'AWS::ElasticLoadBalancingV2::LoadBalancer'
Properties:
Name: my-nlb
Type: network
Scheme: internal
Subnets:
- !Ref subnet-AZ1
- !Ref subnet-AZ2
SecurityGroups:
- !Ref mySecurityGroup
LoadBalancerAttributes:
- Key: "deletion_protection.enabled"
Value: "true
"
跨可用区负载均衡
对于网络负载均衡器,负载均衡器级别的跨区域负载均衡默认为关闭,但您可以随时启动它。对于目标组,默认设置是使用负载均衡器设置,但您可以通过在目标组级别明确启动或关闭跨区域负载均衡来覆盖默认设置。有关更多信息,请参阅 目标组的跨区域负载均衡。
- Console
-
为负载均衡器启用跨区域负载均衡
打开 Amazon EC2 控制台,网址为https://console.aws.amazon.com/ec2/。
-
在导航窗格中的 Load Balancing (负载平衡) 下,选择 Load Balancers (负载均衡器)。
-
选择负载均衡器的名称以打开其详细信息页面。
-
在属性选项卡上,选择编辑。
-
在 Edit load balancer attributes(编辑负载均衡器属性)页面上,开启或关闭 Cross-zone load balancing(跨区域负载均衡)。
-
选择保存更改。
- Amazon CLI
-
为负载均衡器启用跨区域负载均衡
使用带 load_balancing.cross_zone.enabled
属性的 modify-load-balancer-attributes 命令。
aws elbv2 modify-load-balancer-attributes \
--load-balancer-arn load-balancer-arn
\
--attributes "Key=load_balancing.cross_zone.enabled,Value=true
"
- CloudFormation
-
为负载均衡器启用跨区域负载均衡
更新AWS::ElasticLoadBalancingV2::LoadBalancer 资源以包含该load_balancing.cross_zone.enabled
属性。
Resources:
myLoadBalancer:
Type: 'AWS::ElasticLoadBalancingV2::LoadBalancer'
Properties:
Name: my-nlb
Type: network
Scheme: internal
Subnets:
- !Ref subnet-AZ1
- !Ref subnet-AZ2
SecurityGroups:
- !Ref mySecurityGroup
LoadBalancerAttributes:
- Key: "load_balancing.cross_zone.enabled"
Value: "true
"
可用区 DNS 亲和性
使用默认客户端路由策略时,发送到网络负载均衡器 DNS 名称的请求将收到任何运行状况良好的网络负载均衡器 IP 地址。这会导致跨网络负载均衡器可用区分配客户端连接。使用可用区亲和性路由策略时,客户端 DNS 查询会优先考虑自身可用区中的网络负载均衡器 IP 地址。这有助于降低延迟和提高弹性,因为客户端在连接到目标时无需跨越可用区边界。
可用区亲和性路由策略仅适用于使用 Route 53 Resolver 解析网络负载均衡器 DNS 名称的客户端。有关更多信息,请参阅《Amazon Route 53 开发人员指南》中的 什么是 Amazon Route 53 Resolver?。
使用 Amazon Route 53 Resolver 的网络负载均衡器的可用客户端路由策略:
-
可用区亲和性 – 100% 可用区亲和性
客户端 DNS 查询将优先使用自身可用区中的网络负载均衡器 IP 地址。如果自身可用区中没有运行状况良好的网络负载均衡器 IP 地址,则查询可能会解析到其他可用区。
-
部分可用区亲和性 – 85% 可用区亲和性
85% 的客户端 DNS 查询会优先选择自身可用区中的网络负载均衡器 IP 地址,剩余的查询会解析到任何运行状况良好的可用区。如果其他健康区域 IPs 中没有健康区域,则查询可能会解析到其他健康区域。当任何区域 IPs 中都没有运行状况时,查询将解析到任何区域。
-
任意可用区(默认值)– 0% 可用区亲和性
客户端 DNS 查询将在所有网络负载均衡器可用区中运行状况良好的网络负载均衡器 IP 地址中进行解析。
可用区亲和性有助于将请求从客户端路由到网络负载均衡器,而跨可用区负载均衡有助于将请求从网络负载均衡器路由到目标。使用可用区亲和性时,应关闭跨可用区负载均衡,这可确保从客户端到目标的网络负载均衡器流量保持在同一可用区内。使用此配置,客户端流量将发送到网络负载均衡器可用区,因此建议将您的应用程序配置为在每个可用区中独立扩展。当每个可用区的客户端数量或每个可用区的流量不同时,这是一个重要的考虑因素。有关更多信息,请参阅 目标组的跨区域负载均衡。
当可用区被认为运行不正常或开始可用区转移时,除非故障打开生效,否则该可用区 IP 地址将被视为运行不正常,并且不会返回至客户端。当 DNS 记录处于故障打开状态时,可用区亲和性将保持不变。这有助于保持可用区的独立性,并防止潜在的跨可用区故障。
使用可用区亲和性时,预计可用区之间有时会出现不平衡的情况。建议确保目标在可用区级别进行扩展,以支持每个可用区工作负载。如果不平衡情况十分严重,则建议关闭可用区亲和性。这样将可以在 60 秒内在所有网络负载均衡器可用区之间均匀分配客户端连接,或者在 DNS TTL 之间均匀分配。
在使用可用区亲和性之前,应注意以下几点:
-
可用区亲和性会导致使用 Route 53 Resolver 的所有网络负载均衡器客户端发生变化。
-
将可用区关联与网络负载均衡器和 Route 53 解析器结合使用时,我们建议客户端在自己的可用区中使用 Route 53 解析器入站终端节点。
-
在 DNS 运行状况检查认为其可用区本地 IP 地址完全不正常并将其从 DNS 中移除前,客户端将继续分配该本地地址。
-
如果在开启跨区域负载平衡的情况下使用可用区亲和性,则可能会导致可用区之间的客户端连接分配失衡。建议将应用程序堆栈配置为在每个可用区中独立扩展,从而确保其可以支持相应的可用区客户端流量。
-
如果开启了跨可用区负载平衡,网络负载均衡器将受到跨可用区影响。
-
每个网络负载均衡器可用区的负载将与客户端请求的可用区位置成正比。如果您未配置在特定可用区中运行的客户端数量,则必须以被动方式独立扩展每个可用区。
监控
建议使用可用区网络负载均衡器指标来跟踪可用区之间的连接分配情况。您可以使用指标来查看每个可用区的新连接数和活跃连接数。
我们建议跟踪以下指标:
-
ActiveFlowCount
– 从客户端发往目标的并发流(或连接)总数。
-
NewFlowCount
– 指定时间段内建立的从客户端到目标的新流(或连接)总数。
-
HealthyHostCount
– 被视为运行正常的目标数量。
-
UnHealthyHostCount
– 被视为运行不正常的目标数量。
有关更多信息,请参阅 CloudWatch 您的 Network Load Balancer 的指标。
启用可用区亲和性
- Console
-
- Amazon CLI
-
启用可用区关联性
使用带 dns_record.client_routing_policy
属性的 modify-load-balancer-attributes 命令。
aws elbv2 modify-load-balancer-attributes \
--load-balancer-arn load-balancer-arn
\
--attributes "Key=dns_record.client_routing_policy,Value=partial_availability_zone_affinity
"
- CloudFormation
-
启用可用区关联性
更新AWS::ElasticLoadBalancingV2::LoadBalancer资源以包含该dns_record.client_routing_policy
属性。
Resources:
myLoadBalancer:
Type: 'AWS::ElasticLoadBalancingV2::LoadBalancer'
Properties:
Name: my-nlb
Type: network
Scheme: internal
Subnets:
- !Ref subnet-AZ1
- !Ref subnet-AZ2
SecurityGroups:
- !Ref mySecurityGroup
LoadBalancerAttributes:
- Key: "dns_record.client_routing_policy"
Value: "partial_availability_zone_affinity
"
辅助 IP 地址
如果您遇到端口分配错误,并且无法向目标组添加目标来解决这些错误,则可以向负载平衡器网络接口添加辅助 IP 地址。对于启用了负载均衡器的每个区域,我们从负载均衡器子网中选择 IPv4地址并将其分配给相应的网络接口。这些辅助 IP 地址用于与目标建立连接。它们还用于运行状况检查流量。我们建议您首先添加一个辅助 IP 地址,监控PortAllocationErrors
指标,并仅在端口分配错误未解决的情况下再添加一个辅助 IP 地址。
添加辅助 IP 地址后,无法将其删除。释放辅助 IP 地址的唯一方法是删除负载均衡器。在添加辅助 IP 地址之前,请验证负载均衡器子网中是否有足够的可用 IPv4地址。
- Console
-
添加辅助 IP 地址
打开 Amazon EC2 控制台,网址为https://console.aws.amazon.com/ec2/。
-
在导航窗格中,选择负载均衡器。
-
选择网络负载均衡器的名称以打开其详细信息页面。
-
在属性选项卡上,选择编辑。
-
展开特殊情况属性,解锁按子网属性自动分配的辅助 IP 地址,然后选择辅助 IP 地址的数量。
-
选择保存更改。
- Amazon CLI
-
添加辅助 IP 地址
使用带 secondary_ips.auto_assigned.per_subnet
属性的 modify-load-balancer-attributes 命令。
aws elbv2 modify-load-balancer-attributes \
--load-balancer-arn load-balancer-arn
\
--attributes "Key=secondary_ips.auto_assigned.per_subnet,Value=1
"
您可以使用describe-network-interfaces命令获取负载均衡器网络接口 IPv4的地址。该--filters
参数将结果的范围限定为网络负载均衡器的网络接口,而--query
参数则进一步将结果限定为具有指定名称的负载均衡器,并且仅显示指定的字段。您可以根据需要添加其他字段。
aws elbv2 describe-network-interfaces \
--filters "Name=interface-type,Values=network_load_balancer" \
--query "NetworkInterfaces[?contains(Description,'my-nlb
')].{ID:NetworkInterfaceId,AZ:AvailabilityZone,Addresses:PrivateIpAddresses[*]}"
- CloudFormation
-
添加辅助 IP 地址
更新AWS::ElasticLoadBalancingV2::LoadBalancer资源以包含该secondary_ips.auto_assigned.per_subnet
属性。
Resources:
myLoadBalancer:
Type: 'AWS::ElasticLoadBalancingV2::LoadBalancer'
Properties:
Name: my-nlb
Type: network
Scheme: internal
Subnets:
- !Ref subnet-AZ1
- !Ref subnet-AZ2
SecurityGroups:
- !Ref mySecurityGroup
LoadBalancerAttributes:
- Key: "secondary_ips.auto_assigned.per_subnet"
Value: "1
"