我们有一个包含四个可用区的基本 ALB,全部位于 us-east-1[abcd]。上周,我们受到了亚马逊的这次中断的影响:
[太平洋夏令时间下午 3:42] 太平洋夏令时间上午 11:49 至下午 3:37 之间,US-EAST-1 区域内多个 AWS 服务的错误率和延迟均有所增加。我们的工程团队立即介入并开始调查。我们很快将根本原因缩小到负责 AWS Lambda 容量管理的子系统的问题,该子系统直接导致客户出现错误(包括通过 API 网关),并间接导致客户在使用其他 AWS 服务时出现错误。此外,客户在使用 AWS 管理控制台或通过 Cognito 或 IAM STS 进行身份验证时可能会遇到身份验证或登录错误。
我的问题是:如果所有可用区域都位于同一地区,ALB 的容错能力如何?对于了解此次中断的任何人,选择波士顿或亚特兰大的区域是否会比选择 us-east-1* 中的所有区域提供更好的故障转移?
答案1
ALB 无法应对区域性中断。ALB 在单个区域的每个可用区中都有节点。
为了应对区域性中断,您需要使用多个区域。您可以使用 Route53 在区域之间引导流量,根据 Route53 运行状况检查使用您喜欢的任意类型的拆分。您可以:
- 在工作期间将 100% 的流量引导至您的主要区域
- 将流量在两个区域之间平分。这可能会减少用户延迟,但也可能使数据库一致性更具挑战性。
- 将流量拆分为 95/5,只是为了证明第二个区域始终有效
- 您可以在每个部署的区域之间交替,蓝色/绿色风格
另一个区域可以是待机区域、指示灯区域或者热区域。
- 备用:很少,也许是具有自动缩放功能的负载均衡器缩小到零(我没有尝试过,但我认为这是可能的)
- 引航灯:极少量的资源
- 热门:扩展以承担全部生产负荷
答案2
ALB 只能在区域内的区域之间进行 LB。如果整个区域都受到影响,您需要有 HA 或故障转移到另一个区域。
不存在任何一个永远不会发生停电的地区。