最近我注意到,为主机名设置多个A记录不仅可以用于循环负载平衡,还可以用于自动故障转移.
所以我试过测试它:
>我从我们的域名加载了一个页面
>注意到我们的哪些服务器已为该页面提供服务
>关闭该主机上的Web服务器
>重新加载页面
实际上,浏览器会自动尝试使用其他服务器来加载页面.这适用于Opera,Safari,IE和Firefox.只有Chrome无法尝试其他服务器.
但在离开该服务器几分钟并查看访问日志后,我发现对其他服务器的请求数量没有显着增加.由于3台服务器中有1台处于脱机状态,我原本预计其余2台服务器的访问量将大致增加50%,但我只看到了7-10%.这只能意味着浏览器内的DNS故障转移对大多数浏览器/访问者不起作用,这与我刚刚测试的内容完全相反.
有没有人知道浏览器的DNS故障转移行为是什么?可能的原因是什么原因导致自动故障转移对我有用但对大多数访问者不起作用?
编辑:为了使自己清楚,我完全没有改变我们的DNS设置;这里没有TTL或传播问题,它是关于客户端如何处理多个A记录的.
解决方法
好吧我首先要说DNS不是一个好的故障转移系统,你需要一个反向代理或负载均衡器.经验不尽相同的原因有几个.首先在chrome中它使用操作系统来获取DNS信息,这取决于IP的操作系统,因此在这种情况下操作系统可能只给它一个IP.
至于其他浏览器,它高度依赖于他们如何使用DNS来实现它的工作方式.因此,浏览器本身可能决定不尝试其他IP,甚至尝试多次尝试相同的IP,具体取决于DNS服务器的响应.
这将我们带到了DNS服务器本身,大多数都不尊重你的TTL记录,然后保持它的感觉,这意味着用户可以在很长一段时间内获得旧的IP …
第四,用户体验,您是否希望用户必须刷新3到4次才能获得您的网站?您的网站上是否有任何基于会话或登录的内容,如果浏览器在会话中间获得另一个IP,会发生什么.如果你确实需要HA和正常运行时间,你真的需要考虑正确地做到这一点,老实说,或者它最终会比只使用一台服务器更加分散.