Cross-Zone Load Balancing

  • 当开启跨区域负载均衡(cross-zone load balancing)时,每个负载均衡器的节点可以将流量转发到所有注册的机器上
  • 当关闭跨区域负载均衡(cross-zone load balancing)时,每个负载均衡器的节点只能将流量转发到同一个AZ的机器上

下图便于理解该特性,EC2分布在两个AZ,AZ1有2台,AZ2有8台

图左侧是开启cross-zone load balancing的效果,每个EC2都收到10%的流量,因为每个负载均衡器节点上都收到了50%的请求,它们分别能将请求转发到10台机器上:

image-20220929185429151

图右侧是关闭cross-zone load balancing的效果,AZ1的机器分别收到25%的流量,AZ 2的机器分别收到6.25%的流量,因为每个负载均衡器节点上都收到了50%的请求,它们只能将请求转发到同一个AZ的机器。

不同类型ELB上的跨区域负载均衡

  • 对于ALB,cross-zone load balancing默认开启,且不能关闭

  • 对于NLB和GWLB,默认cross-zone load balancing是关闭的,

  • 对于CLB,如果是通过控制台创建,则默认开启;如果是CLI创建,则默认关闭

从上图不难看出,开启了cross-zone load balancing后,流量会通过负载均衡器的节点转发到另一个AZ的EC2上,此时会产生跨AZ流量。于是我们不得不讨论AWS这个令人无语的跨AZ流量问题

  • 对于ALB和CLB,这部分跨AZ流量是不收费的

  • 对于NLB,NLB的官方文档上语焉不详。但参考这篇文档 ,它确实会产生跨AZ流量费用:

When you enable cross-zone load balancing for your Network Load Balancer, regional data charges apply.  

如何更改跨区域负载均衡配置

在AWS上控制台上进行更改。

例如CLB:

image-20220929190845764

NLB:

image-20220929190913906