AWS Route53 故障转移和 chrome DNS 缓存

AWS Route53 failover and chrome DNS cache

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

如果主服务器运行状况不佳,那么 DNS returns 一个辅助记录,如果用户在出现故障时未使用该应用程序,则该记录运行良好。

所以:

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

当用户使用应用程序时主节点变得不健康时,对于这种特殊情况是否有任何解决方法?或者在这种情况下我们如何才能让用户体验更愉快?

添加示例:

  • 用户 1 正在使用应用(应用是 Ember.js 应用)
  • 主节点已关闭且故障转移已激活
  • 之后User 2访问应用程序(故障转移激活)并且route53提供了Secondary record,所以一切正常。
  • 与此同时,用户 1 仍在尝试访问应用程序,应用程序向 API 发出请求。但是某个应用正在从 chrome DNS 缓存访问旧 IP。

已添加:

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

一切都归结为 TTL。如果您将资源上的 TTL 设置为 30 秒,浏览器应该每 30 秒解析一次地址,这样对于大多数情况来说这应该是可以接受的。当然,这是以一些延迟和更多成本为代价的(尽管 R53 确实很便宜)。如果您需要更短的 TTL you can set it up.

如果你想更好地控制它,你必须设置你自己的负载均衡器,当你的机器出现故障时,它会路由到不同的区域,但当 EC2 出现故障时,它不会拯救你(可能会给你足够的钱)不过是时候启动一个新实例了)。