AWS Elastic Load Balancer和多个可用区域

时间:2012-07-11 01:53:47

标签: amazon-ec2 amazon-web-services load-balancing

我想了解ELB如何在多个 可用区 之间实现负载均衡。例如,如果我在区域a1, a2, a3, a4中有4个实例(us-east-1a)而在ELB后面有d1中的单个实例us-east-1d,那么两个可用性之间的流量如何分配区?即,d1会获得所有流量的近50%或流量的1/5th吗?

2 个答案:

答案 0 :(得分:18)

如果您启用ELB Cross-Zone Load Balancing,则d1将获得20%的流量。

以下是未启用跨区域负载平衡时发生的情况: D1将获得近50%的流量。这就是为什么亚马逊建议从每个AZ向ELB添加相同数量的实例。

以下摘录摘自Overview of Elastic Load Balancing

  

在为负载均衡器启用的所有可用区中,传入流量的负载均衡,因此在每个区域中拥有大约相等数量的实例非常重要。例如,如果在可用区us-east-1a中有10个实例,在us-east-1b中有两个实例,则流量仍将在两个可用区之间平均分配。因此,us-east-1b中的两个实例将必须提供与us-east-1a中的十个实例相同的流量。作为最佳实践,我们建议您在每个可用区中保留等效或几乎相等数量的实例。因此,在示例中,您可以分发您的实例,以便在每个可用区中有六个实例,而不是在us-east-1a中有10个实例,而在us-east-1b中有两个实例。

答案 1 :(得分:3)

不同可用区域之间的负载平衡是通过DNS完成的。当客户端上的DNS解析器要求ELB的IP地址时,它会获得两个地址。并选择使用其中一个(通常是第一个)。 DNS服务器通常以随机顺序响应,因此第一个IP不会一直使用,但每个IP仅在部分时间内使用(一半用于2,三分之一用于3等等)。

然后在这些IP地址后面,每个可用区域中都有一个ELB服务器,您的实例连接到该服务器。这就是为什么只有一个实例的区域将获得与另一个区域中的所有实例相同的流量的原因。

当你遇到大量实例时,ELB可以决定在可用区创建两个这样的服务器,但在这种情况下,它会拆分你的实例你的实例有一半(或其他一些等分)。