配置经典负载均衡器的跨区域负载均衡
借助跨区域负载均衡,经典负载均衡器的每个负载均衡器节点会跨所有启用的可用区中的已注册实例平均分配请求。如果禁用了跨区域负载均衡,则每个负载均衡器节点会仅在其可用区中的已注册实例之间平均分配请求。有关更多信息,请参阅 Elastic Load Balancing 用户指南中的跨区域负载均衡。
跨区域负载均衡可降低在每个启用的可用区中保持相同数量实例的需求,并提高应用程序处理一个或多个实例丢失情况的能力。但我们仍然建议您在每个已启用的可用区中保持大致相等的实例数,以实现更高的容错能力。
对于客户端缓存 DNS 查找所在的环境,传入请求可能会优先选择一个可用区。通过使用跨区域负载均衡,请求负载中的这种不平衡将分散在此区域中的所有可用实例中,从而减小操作不良的客户端产生的影响。
在创建经典负载均衡器时,跨区域负载均衡的默认值取决于创建负载均衡器的方式。默认情况下,使用 API 或 CLI 时将禁用跨区域负载均衡。默认情况下,使用 Amazon Web Services Management Console时启用跨区域负载均衡的选项处于选中状态。创建经典负载均衡器后,您随时可以启用或禁用跨区域负载均衡。
启用跨区域负载均衡
您随时可以对经典负载均衡器启用跨区域负载均衡。
使用 Amazon CLI 启用跨区域负载均衡
-
使用以下 modify-load-balancer-attributes 命令将负载均衡器的
CrossZoneLoadBalancing
属性设置为true
:aws elb modify-load-balancer-attributes --load-balancer-name
my-loadbalancer
--load-balancer-attributes "{\"CrossZoneLoadBalancing\":{\"Enabled\":true}}"以下为响应示例:
{ "LoadBalancerAttributes": { "CrossZoneLoadBalancing": { "Enabled": true } }, "LoadBalancerName": "my-loadbalancer" }
-
(可选)使用以下describe-load-balancer-attributes 命令验证是否对您的负载均衡器启用了跨区域负载均衡:
aws elb describe-load-balancer-attributes --load-balancer-name
my-loadbalancer
以下为响应示例:
{ "LoadBalancerAttributes": { "ConnectionDraining": { "Enabled": false, "Timeout": 300 }, "CrossZoneLoadBalancing": { "Enabled": true }, "ConnectionSettings": { "IdleTimeout": 60 }, "AccessLog": { "Enabled": false } } }
禁用跨区域负载均衡
您随时可以对负载均衡器禁用跨区域负载均衡选项。
要禁用跨区域负载均衡,请将负载均衡器的 CrossZoneLoadBalancing
属性设置为 false
。
使用 Amazon CLI 禁用跨区域负载均衡
-
使用以下 modify-load-balancer-attributes 命令:
aws elb modify-load-balancer-attributes --load-balancer-name
my-loadbalancer
--load-balancer-attributes "{\"CrossZoneLoadBalancing\":{\"Enabled\":false}}"以下为响应示例:
{ "LoadBalancerAttributes": { "CrossZoneLoadBalancing": { "Enabled": false } }, "LoadBalancerName": "my-loadbalancer" }
-
(可选)使用以下 describe-load-balancer-attributes 命令验证是否对您的负载均衡器禁用了跨区域负载均衡:
aws elb describe-load-balancer-attributes --load-balancer-name
my-loadbalancer
以下为响应示例:
{ "LoadBalancerAttributes": { "ConnectionDraining": { "Enabled": false, "Timeout": 300 }, "CrossZoneLoadBalancing": { "Enabled": false }, "ConnectionSettings": { "IdleTimeout": 60 }, "AccessLog": { "Enabled": false } } }