目前我正在使用AWS配置服务器池 . 这是一个简单的设置,有两个数据库服务器,一个可扩展的服务器阵列和两个负载均衡器 . 每台机器都有一个故障转移站,它应该都非常强大 .
负载均衡器应该能够通过循环DNS进行故障转移 . 因此,在愉快的一天情况下,两台机器都会受到攻击并在阵列上分配流量 . 当其中一台机器出现故障时,Round Robin DNS与客户端浏览器重试相结合应该使浏览器将其目标主机转移到一旦它们达到超时后仍然处于运行状态的机器上 . 这不是我提出的,但似乎是一个非常好的解决方案 .
我遇到的问题如下 . 转换实际上确实发生了,但不仅是失败请求的一次,而是来自同一浏览器的每个后续请求 . 因此,一个简单的页面请求需要21秒才能加载,之后所有图像也需要21秒才能加载 . 以下所有页面请求也需要这么长时间 . 因此故障转移工作但同时完全没用 .
挖掘输出:
; << >> DiG 9.6.1-P2 << >> example.com
;;全局选项:cmd
;;得到答案:
;; - >> HEADER << - 操作码:QUERY,状态:NOERROR,id:45224
;;旗帜:qr rd ra; QUERY:1,答案:2,授权:0,附加:0
;;问题部分:
; example.com . 在一个
;;答案部分:
www.example.com . 86400 IN A 1.2.3.4
www.example.com . 86400 IN A 1.2.3.4
;;查询时间:31毫秒
;;服务器:172.16.0.23#53(172.16.0.23)
;;时间:2010年12月20日星期一12:21:25
;; MSG SIZE rcvd:67
提前致谢!
Maarten Hoekstra
Kingsquare信息服务
2 回答
当DNS服务器向客户端提供IP地址列表时,将对该列表进行排序(可能以旋转方式,即后续DNS可能以不同的顺序返回它们) . 浏览器很可能缓存DNS响应,即它最初接收的列表 . 然后,它不会假设连接失败意味着服务器已关闭,但每次都会以相同的顺序重试列表 .
所以循环DNS最多是用于负载 balancer ;它不太适合支持容错 .
我们之所以称之为“穷人的负载 balancer ”,是有原因的 . 它确实有效,但你是解析器的怜悯,并且超时取决于首先从你的DNS服务器返回的IP . 你可以看看像dnsmadeeasy.com这样的事情以及他们的dns故障转移(还有其他人这样做,但dnsmadeeasy是我所知道的) . 基本上,他们监控应用程序的可用性,并可以快速通过dns在应用程序状态方面的变化 .