AWS Route53故障转移和chrome DNS缓存

时间:2018-03-07 09:19:40

标签: amazon-web-services google-chrome amazon-route53 failover

我使用Route53进行了非常标准的故障转移:

  • 两个地区
  • 主要,与运行状况检查关联,以及每个区域的辅助故障转移记录。
  • 记录指向API。此外,我们还有使用API​​的前端JS应用程序。

如果主要运行状况不佳,那么DNS会返回辅助记录,如果用户在发生故障时未使用该应用程序,则该记录可以正常运行。

所以:

  • 如果主要运行状况不佳且用户尝试使用应用故障转移后已激活 - 一切正常(指向辅助记录)

  • 如果在用户正在使用应用程序时,主服务器变得不健康,则应用程序会尝试访问不可用的旧IP地址,因此它不会切换到辅助记录。

似乎DNS已缓存(可在此处检查chrome:// net-internals / #dns for Chrome)。用户可以在一段时间不活动后继续使用该应用:未触发API并且Chrome的DNS缓存已过期。

当用户使用该应用程序时,当Primary变得不健康时,是否有针对此特定情况的解决方法?或者,在这种情况下,我们如何才能让用户体验更愉快?

添加了示例:

  • 用户1正在使用该应用程序(应用程序是Ember.js应用程序)
  • 主要已关闭,故障转移已激活
  • 用户2访问应用程序后(故障转移处于活动状态)并且route53提供了辅助记录,因此一切正常。
  • 同时,用户1仍在尝试访问应用程序,应用程序向API发出请求。但是应用程序正在从chrome DNS缓存中访问旧IP。

添加了:

我们正在使用 Alias记录(Route53上A记录的TTL始终为60秒)

1 个答案:

答案 0 :(得分:1)

这一切都归结为TTL。如果将资源上的TTL设置为30秒,则浏览器应每30秒解析一次该地址,以便大多数情况下都可以接受。当然,这需要花费一些延迟和更多的成本(尽管R53非常便宜)。如果您需要更短的TTL you can set it up

如果您想要对它进行更多控制,您必须设置自己的负载均衡器,当您的机器发生故障时,该负载均衡器将路由到不同的区域,但是当EC2发生故障时,这将无法为您节省时间(可能会给您足够的时间然后启动一个新实例。