AWS弹性负载均衡器和多可用区

10
我想了解ELB如何在多个可用区域之间进行负载均衡。例如,如果我在us-east-1a区域有4个实例(a1、a2、a3、a4),并且在ELB后面有一个单独的实例d1位于us-east-1d区域,那么流量会如何在这两个可用区域之间分配?即d1会获得近50%的所有流量还是1/5的流量?
2个回答

21
如果启用ELB 跨区负载均衡,d1将获得20%的流量。
如果不启用跨区负载均衡,情况如下: D1将获得近50%的流量。这就是为什么亚马逊建议向ELB添加来自每个AZ相同数量的实例的原因。
以下摘自弹性负载均衡概述
传入的流量将在启用负载均衡器的所有可用区中平均分配,因此在每个区域中拥有大致相等数量的实例非常重要。例如,如果您在可用区us-east-1a中有十个实例,在us-east-1b中有两个实例,则流量仍将在两个可用区之间平均分配。因此,us-east-1b中的两个实例将必须为与us-east-1a中的十个实例相同数量的流量提供服务。作为最佳实践,我们建议您在每个可用区中保持等价或几乎等价数量的实例。因此,在这个例子中,您可以将实例分配到每个可用区中有六个实例,而不是在us-east-1a中有十个实例,在us-east-1b中有两个实例。

使用 Elastic Beanstalk 时,打开此选项非常重要,谢谢! - Oded Breiner

4
不同可用区之间的负载平衡是通过 DNS 完成的。当客户端上的 DNS 解析器请求 ELB 的 IP 地址时,它会得到两个地址,并选择使用其中一个(通常是第一个)。DNS 服务器通常会以随机顺序响应,因此第一个 IP 并不总是被使用,但每个 IP 仅被使用一部分时间(2 的一半,3 的三分之一等)。
然后,在这些 IP 地址后面,您有每个可用区中都有一个 ELB 服务器,它连接着您的实例。这就是为什么只有一个实例的区域将获得与另一个区域所有实例相同数量的流量的原因。
当您拥有大量实例时,ELB 可以决定在单个可用区中创建两个这样的服务器,但在这种情况下,它将分割您的实例,使其分配到一半(或其他相等的分配)。

1
在可用区故障的情况下,所有流量是否仍然路由到失败的 AZ 中的 ELB,直到客户端的 DNS 记录更新?因此,一个 ELB IP 无法将流量路由到另一个 AZ 中的实例? - Ville Mattila
1
如果区域由于某些影响实例的原因而失败,在大多数情况下,负载均衡器也将无法正常工作。如果某些东西不起作用或不存在,能够将流量路由到另一个可以正常工作的地方将是很好的,但不幸的是这只是一厢情愿的想法。 - Evgeny
1
确实... ;) 我只是在想ELB是否位于特定AZ之外,"在区域级别",就像他们文档中显示的图片一样:http://docs.amazonwebservices.com/ElasticLoadBalancing/latest/DeveloperGuide/SvcIntro_arch_workflow.html。这将允许将请求路由到另一个AZ。 - Ville Mattila
这个答案已经过时了。 - Pawel Furmaniak
3
请提供更多关于为什么是这种情况的信息。 - TJ Biddle

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接