【问题标题】:Customizing/Architecting AWS ELB to have Zero Downtime自定义/架构 AWS ELB 以实现零停机
【发布时间】:2018-03-31 19:08:10
【问题描述】:

所以前几天我们遇到了一个问题,即我们的应用程序负载均衡器后面的一个实例未能通过实例状态检查和系统检查。我们的 ELB 花了大约 10 秒(我们可以得到的最小值)来检测到这一点并将实例标记为“不健康”,但是在这 10 秒内我们丢失了一些流量,因为 ELB 不断将流量路由到不健康的实例。有没有一种解决方案可以避免任何停机时间,还是我太不切实际了?

【问题讨论】:

  • 10 秒是 AWS 允许我们在运行状况检查中设置的最小值。根据 AWS Support 的说法,不能比这更进一步。

标签: amazon-web-services amazon-elb


【解决方案1】:

我确定这不是您想听到的答案,但是如果 10 秒是不可容忍的,为了最大限度地减少系统上的流量损失,您需要实施自己的运行状况检查/负载平衡解决方案。我的组织有一些系统,丢包也是不可接受的,这就是我们需要做的。

这个解决方案是双重的。

  1. 您需要实现自己的负载平衡基础架构。我们选择使用 Route53 加权记录集(TTL 为 1 秒,我们会回到这个),每个服务器的权重相同
  2. 为每个负载均衡的 EC2 实例启动一个 ECS 容器实例,其唯一目的是进行健康检查。它同时运行 DNS 和 IP 健康检查(python 中的请求库),并在发现问题时实时添加/删除 Route53 加权记录。

然而,在我们的测试中,我们发现,尽管 Route53 的上游 DNS 服务器在删除 DNS 记录后遵守 1 秒 TTL,但它们会将该记录(FQDN + IP 组合)“列入黑名单”,以免再次恢复正常运行到 10 分钟(我们得到 1m-10m 的分辨率时间差异)。因此,您将能够快速进行故障转移,但您必须考虑到重新添加记录最多需要 10 分钟。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-04-17
    • 2011-05-08
    • 2019-04-02
    • 2012-04-17
    • 1970-01-01
    • 2017-02-16
    • 2021-12-12
    相关资源
    最近更新 更多