ELB是否会提高AWS架构的可用性?

时间:2019-05-12 01:44:51

标签: amazon-web-services high-availability

我正在通过实践考试来获得AWS认证。问题之一如下:

 The web tier for an a pplication is running on 6 EC2 instances spread
 across 2 AZs behind a classic ELB.  The data tier is a MySQL database
 running on an EC2 instance.  What changes will increase the
 availability of the application? (select TWO)

 A: Turn on CloudTrail in the AWs account
 B: Migrate the MySQL database to a Multi-AZ RDS MySQL database instance
 C: Turn on cross-zone load balancing on the ELB
 D: Launch the web tier EC2 instances in an Auto Scaling Group
 E: Increase the instance size of the web tier EC2 instance

正确答案是B和D。我的问题是,为什么C不是正确答案?讲师(一名Amazon员工)对C进行了掩饰,解释说“启用跨区域负载平衡将对可用性几乎没有影响”。但是我的观察方式是,如果ELB无法将流量发送到两个可用区,那么我们实际上是在将6实例系统变成3实例系统(假设每个AZ中有3个实例)。单个AZ系统永远不会被视为高度可用的体系结构,因为如果一个AZ发生故障,则整个系统将不可用。

2 个答案:

答案 0 :(得分:4)

启用跨区域负载平衡不会影响可用性,因为 ELB可以在未启用功能的情况下将流量发送到所有已配置的可用区。这不是跨区域平衡的意思。

在两个可用区中配置的ELB始终至少具有两个平衡器节点,每个AZ中一个。您无法直接看到它,但是如果您在EC2控制台的“网络接口”下查看,您会发现连接到平衡器节点的弹性网络接口(ENI)。每个节点都有一个ENI。该服务根据负载确定平衡器有多少个节点。这是自动管理的,不会根据节点数向您收费。

跨区域负载平衡控制每个节点可以做什么。 “启用”表示区域A中的平衡器节点可以将流量发送到区域A或B中的实例,而不仅仅是区域A中的实例,并且流量也可以发送到区域B中的平衡器节点。

这不会提高可用性,因为如果丢失了可用区域,那么该区域中的平衡器节点也会丢失,因此它可能会将流量发送到另一个区域中的实例这一事实并不重要。

跨区域负载平衡有助于确保将工作负载尽可能均匀地分布在平衡器后面的所有实例中,如果您有不对称性(例如一个AZ中的3个应用程序实例和另一个AZ中的2个应用程序实例,则这有帮助)(在这种情况下,具有2区域的区域每个实例的流量将比具有3)区域的区域成比例的增长-或其他情况下实例的工作负载均不均衡的情况,平衡器后面的实例数量很少,或者由于某些请求相对于其他请求的复杂性而导致请求处理时间的差异很大。

答案 1 :(得分:0)

哪些更改将提高应用程序的可用性?

可用性提高意味着应用程序处理请求的时间更少。

  • (B)多可用区数据库肯定会有所帮助,因为如果一个可用区失败,它将自动在另一个可用区中升级辅助数据库服务器
  • (D)Auto Scaling 当然会有所帮助,因为将替换失败的实例。

跨区域负载平衡将在AZ中没有可用的正常实例但该AZ中的ELB正在处理流量的情况下提供帮助。这是不太可能的情况,尤其是在AZ中有3个实例的情况下,但我可以理解这一点。但是,其他两个答案要强得多。

值得一提的是,AWS官方认证问题经过了多个级别的技术审查,因此不应在此类问题上含糊不清。示例考试问题(无论是在AWS课程中还是在其他课程中)可能没有经过如此详细的审查。