Amazon web services AWS Route53故障切换和chrome DNS缓存

Amazon web services AWS Route53故障切换和chrome DNS缓存,amazon-web-services,google-chrome,amazon-route53,failover,Amazon Web Services,Google Chrome,Amazon Route53,Failover,我有相当标准的Route53故障切换: 两个地区 与运行状况检查关联的主故障切换记录,以及每个区域的辅助故障切换记录 记录指向API。此外,我们还有前端JS应用程序,它正在使用API 如果主记录不正常,则如果用户在出现故障时未使用应用程序,则DNS将返回一条工作正常的辅助记录 因此: 如果主应用程序不正常,并且在故障转移激活后用户尝试使用应用程序,则一切正常(指向辅助记录) 如果当用户使用应用程序时,主记录变得不正常,应用程序将尝试访问旧的IP地址,该地址不可用,因此不会切换到辅助记录

我有相当标准的Route53故障切换:

  • 两个地区
  • 与运行状况检查关联的主故障切换记录,以及每个区域的辅助故障切换记录
  • 记录指向API。此外,我们还有前端JS应用程序,它正在使用API
如果主记录不正常,则如果用户在出现故障时未使用应用程序,则DNS将返回一条工作正常的辅助记录

因此:

  • 如果主应用程序不正常,并且在故障转移激活后用户尝试使用应用程序,则一切正常(指向辅助记录)

  • 如果当用户使用应用程序时,主记录变得不正常,应用程序将尝试访问旧的IP地址,该地址不可用,因此不会切换到辅助记录

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

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

新增示例:

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


我们使用的是别名记录(路由53上记录的TTL始终为60秒)

这一切归结为TTL。如果将资源上的TTL设置为30秒,浏览器应每30秒解析一次地址,这样在大多数情况下都是可以接受的。当然,这是以一点延迟和更多成本为代价的(尽管R53非常便宜)。如果你需要更短的TTL


如果您想要对它进行更多的控制,您必须设置自己的负载平衡器,当您的机器停机时,它将路由到不同的区域,但当EC2出现故障时,这不会节省您的时间(可能会为您赢得足够的时间来启动新实例)。

因此,在这种情况下,故障切换将提前激活。。。但似乎它不能解决这个问题与铬DNS缓存。在任务中添加了工作流(添加了示例)@Igor好吧,Chrome的默认值是30秒,所以在最坏的情况下不会超过一分钟。你真的需要那种HA吗?那么。。应用程序在尝试访问已关闭的主记录时出错。然后,用户尝试在10秒内再次登录,并在端点被触发时显示旧ip和DNS记录未更新。因此,我们需要30秒不活动(以获得正确的ip地址。大多数用户都可以:)只想知道是否有任何好的解决方法:)当然,减少TTL仍然是一个很好的选择,因此我们正在使用别名记录,似乎无法为记录设置TTL,因此我们的TTL为60秒。