2017-10-19 45 views
1

因此,有一天我们遇到了应用程序负载平衡器后面的一个实例失败实例状态检查和系统检查的问题。我们的ELB花费了大约10秒(我们能够获得的最低限度)来检测这种情况并将实例标记为“不健康”,但是由于ELB保持将流量路由到不健康的实例,因此我们在10秒内丢失了一些流量。是否有解决方案,我们可以避免任何停机时间或者我是不是太不切实际?定制/构建AWS ELB以实现零停机时间

+1

10秒是AWS允许我们在健康检查中设置的最小时间。无法进一步下降根据AWS支持。 – vishwa0077

回答

0

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

该解决方案是双重的。

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

然而,在我们的测试中,我们发现尽管Route53的上游DNS服务器在删除DNS记录时承诺1秒TTL,但他们将该记录(FQDN + IP组合)“黑名单”再次长达10分钟(我们得到的解析时间从1米到10米不等)。因此,您可以快速进行故障转移,但是您必须考虑到要重新添加记录需要10分钟才能兑现。