我\xe2\x80\x99m 调查一个带有实时仪表板(Angular Web 应用程序)的场景,该仪表板每 5 秒刷新一次(轮询)。该 API 位于 Azure 流量管理器后面,如果主要区域出现故障,该管理器将故障转移到第二个区域。请记住,Azure 流量管理器在 DNS 级别工作。
\n\n我面临的问题是,即使在流量管理器发生故障转移后,浏览器仍保持与主要区域的持久连接。请求最初失败并显示 503 秒,但随后继续失败并显示 502 秒。DNS 查找永远不会再次执行,因为请求发生的频率比保持活动超时的频率更高。这会导致浏览器继续向失败的区域发出请求。
\n\n有没有办法明确终止连接以强制进行 DNS 查找?到目前为止我发现的唯一方法是停止发出请求 2 分钟,或者关闭并重新打开浏览器。对于应该不受干扰且始终保持新鲜的仪表板来说,这两种解决方案都不是可接受的解决方案。
\n\n有趣的是,在让浏览器故障转移到次要区域后,如果我重新启动主要区域,浏览器将在大约一分钟后自动切换回主要区域。这告诉我,当服务正常运行时,连接会遵守 DNS TTL,但当服务器不可用时,则不会。这对我来说毫无意义,为什么浏览器会在找不到\xe2\x80\x99s 时永远锁定单个IP。
\n\n对于使用流量管理器为 Web 应用程序实施地理冗余故障转移,我是否缺少某些内容?在我看来,很奇怪的是,在任何情况下,用户都必须停止发出请求 2 分钟,然后浏览器才能将 IP 重新协商到故障转移的服务器。是否期望关闭保持活动以真正支持近乎即时的故障转移?
\n\n下面是描述此场景的图表:\n图表\n