轮询DNS是否可能成为高可用性的解决方案?


Answers:


13

DNS循环并不是负载均衡器的良好替代。DNS服务器将继续分发发生故障的节点的IP,因此您的某些用户可以使用您的服务,而某些用户则不会。

当客户端进行DNS查询时,DNS服务器将返回与该名称关联的所有 IP地址。DNS服务器通过旋转每个查询的列表顺序来解决问题。但是,由应用程序来实现在列表中“遍历”功能,直到找到有效的IP。而且大多数应用程序都不这样做。

奇怪的是,Windows Telnet是这样一种应用程序,它足够聪明,可以遍历返回的IP的链接列表。例如,如果您尝试通过telnet到google.com,则可以自己看到此行为。您会注意到,最终失败需要很长时间。那是因为google.com有很多IP地址,而telnet客户端正在尝试每个IP地址。


我了解客户总是从NS获得两个IP。只是默认情况下,他们选择列表中的第一个。但是,如果第一个失败了怎么办?他们会尝试第二个吗?
GetFree 2013年

9
这完全取决于应用程序。例如,如果我们谈论的是Web浏览器,则大多数现代Web浏览器都会在列表中列出,直到成功为止,某些浏览器(通常是较旧的浏览器)在尝试使用第一个失败的IP之后就会失败。更多信息:nber.org/sys-admin/dns-failover.htmlblog.engelke.com/2011/06/07/web-resilience-with-round-robin-dns
Ryan Ries

根据您提供的链接,它似乎确实起作用。至少对于HTTP客户端(这是我现在关心的)。所有现代浏览器甚至更低级别的HTTP客户端都将故障转移到列表中的另一个IP。
GetFree 2013年

是的 只是想给您一个警告,它取决于应用程序。YMMV等
Ryan Ries 2013年

@ RyanRies,RFC是否提供有关客户端行为的任何建议?在尝试所有IP而不是仅使用第一个IP时,Telnet是否兼容?
Pacerier

14

使用负载均衡器仍然会留下单点故障。如果您的负载均衡器离线,则您的网站将关闭。

Conterary上述答案,大多数HTTP客户端已经DO支持,试图从一个DNS查询返回到一个有效的响应的一个回报每一个IP地址。请在这里查看:

http://blog.engelke.com/2011/06/07/web-resilience-with-round-robin-dns/

看来作者已经测试了以下浏览器,并发现它们能正常工作。

Windows 7上的Chrome 11 Windows 7上的
Firefox 4.0 Windows 7上的
Internet Explorer 8 Windows 7上的
Opera 11 Windows 7上的
Safari 5
Windows XP上的Internet Explorer 7(明显延迟后)
Windows XP上的Firefox 4.0(明显延迟后)
Android本机浏览器在Android 2.3.3
上的iOS 4.3.3上的iPhone本机浏览器

使用轮询不会实现负载平衡服务器的所有功能,例如能够监视两台服务器的响应时间,以及将更多流量路由到一个服务器,如果另一个服务器的响应速度不如预期的话。为了提高弹性,我想说Round Robin DNS可能是一个更好的解决方案,因为不再存在单点故障。


请参阅已接受答案中的第二条评论
GetFree 2014年

2

虽然轮询DNS通常没有反馈要为其提供地址的服务器状态,但是如果您随后为每个地址使用某种负载均衡器(包括基于路由器的技巧),则可能会有所帮助。

有一些技巧可以在失败时更新DNS。如果发生这种情况,具有适当短TTL的循环DNS可以成为伪负载平衡器。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.