负载均衡器的每个区域中始终有一个 ec2 实例是否重要?拥有两个或三个以上区域有什么好处吗?
我们在 EC2 AutoScaling 组中设置了我们的应用程序,作为应用程序负载均衡器的单个目标组。对于我们的初始部署,我们将启动模板和负载均衡器都设置为使用六个可用区。根据第 4 段中的建议这里,我们将 AutoScaling 组的最小大小设置为 6,以便每个区域中始终至少有一个框。
实际上,大多数时候我们不需要六个盒子;最少两个或三个池就可以为我们提供所需的冗余。
我可以理解,如果没有跨区域负载平衡,那么在每个区域中都放置一个盒子就很重要了,但是应用程序负载平衡器始终使用跨区域负载平衡,因此这似乎无关紧要。
从另一个角度来看,将我们的 LB 放在这么多区域中有什么好处或坏处吗?
答案1
据我所知大多数地区你只能使用2 或 3 个可用区域, 只有在美国东部-1您最多可使用的区域6 个可用区。 看AWS 全球基础设施了解详情。
口口相传:我记得在 AWS 的一些演示中,即使他们有时有超过 3数据中心在某些地区,这些被添加到现有的 3 个 AZ 中,因为他们意识到对于大多数实际目的而言 3 个 AZ 就足够了。[我知道需要引用。抱歉找不到链接]
现在回答你的问题 - 在创建 ALB 时,你可以选择要在哪个可用区中使用它。如果在美国东部-1您决定只坚持使用 3 个 AZ,您的 ALB 只能在这 3 个 AZ 中设置。
如果您的可用区数少于启用 ALB 的可用区数,请不要担心,它们仍会将流量路由到其他可用区的现有实例。您可能需要支付一点额外费用跨区域流量但这可能比在每个可用区运行不需要的实例的成本要低。你自己算一下。
最后,我认为每个区域使用 3 个可用区已经足够了,因为:
发生可用区域关闭很小,但过去发生过几次。如果发生这种情况,您仍然有另外 2 个可用区在线以承担负载。
整个地区中断非常罕见。但即使发生这种情况 - 如果整个区域由于某些人为或技术错误而瘫痪,那么无论您的实例位于 1 个还是 6 个可用区都无关紧要。反正整个系统都瘫痪了。
如果您的部署完全超临界你不能容忍任何停机时间-部署至多个区域以获得额外的冗余。同样,每个区域有 2 个、3 个还是 6 个可用区都无所谓。
希望有帮助:)
答案2
不,您不需要每个区域中都有一个实例,每个可用区中的负载均衡器将检查其区域中是否存在实例,如果没有,它会将流量路由到其他区域中某个健康的实例。
跨区域负载平衡实际上不适用于这种情况。它仅在以下情况下使用:健康实例全部ELB 区域,但您仍希望 ELB 随机选择一个实例进行通信,而不管其可用区如何。默认情况下,它仅与其可用区中的实例通信(如果有)。如果没有,它仍会与任何可用实例通信,而不管跨区域负载平衡如何。