我使用Route53进行了非常标准的故障转移:
如果主要运行状况不佳,那么DNS会返回辅助记录,如果用户在发生故障时未使用该应用程序,则该记录可以正常运行。
所以:
如果主要运行状况不佳且用户尝试使用应用故障转移后已激活 - 一切正常(指向辅助记录)
如果在用户正在使用应用程序时,主服务器变得不健康,则应用程序会尝试访问不可用的旧IP地址,因此它不会切换到辅助记录。
似乎DNS已缓存(可在此处检查chrome:// net-internals / #dns for Chrome)。用户可以在一段时间不活动后继续使用该应用:未触发API并且Chrome的DNS缓存已过期。
当用户使用该应用程序时,当Primary变得不健康时,是否有针对此特定情况的解决方法?或者,在这种情况下,我们如何才能让用户体验更愉快?
添加了示例:
添加了:
我们正在使用 Alias记录(Route53上A记录的TTL始终为60秒)
答案 0 :(得分:1)
这一切都归结为TTL。如果将资源上的TTL设置为30秒,则浏览器应每30秒解析一次该地址,以便大多数情况下都可以接受。当然,这需要花费一些延迟和更多的成本(尽管R53非常便宜)。如果您需要更短的TTL you can set it up。
如果您想要对它进行更多控制,您必须设置自己的负载均衡器,当您的机器发生故障时,该负载均衡器将路由到不同的区域,但是当EC2发生故障时,这将无法为您节省时间(可能会给您足够的时间然后启动一个新实例。