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
iPhone 原生浏览器 iOS 4.3.3
使用轮询不会完成负载平衡服务器的所有功能,例如能够监控两台服务器的响应时间,并在另一台没有响应速度的情况下将更多流量路由到其中一台)。对于弹性,我会说循环 DNS 可能是更好的解决方案,因为不再存在单点故障。
使用负载均衡器仍然会留下单点故障。如果您的负载均衡器离线,您的网站就会关闭。
与上述答案相反,大多数 HTTP 客户端已经支持尝试从 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
iPhone 原生浏览器 iOS 4.3.3
使用轮询不会完成负载平衡服务器的所有功能,例如能够监控两台服务器的响应时间,并在另一台没有响应速度的情况下将更多流量路由到其中一台)。对于弹性,我会说循环 DNS 可能是更好的解决方案,因为不再存在单点故障。
DNS 循环不是负载均衡器的良好替代品。DNS 服务器将继续分发已关闭节点的 IP,因此您的一些用户将访问您的服务,而其中一些则不会。
当客户端进行 DNS 查询时,DNS 服务器会返回与该名称关联的所有IP 地址。魔术是通过 DNS 服务器为每个查询轮换该列表的顺序来完成的。但是,由应用程序来实现“遍历”列表直到找到有效的 IP 的能力。大多数应用程序都不会这样做。
奇怪的是,Windows Telnet 就是这样一种应用程序,它足够智能,可以遍历返回的 IP 的链接列表。例如,如果您尝试 telnet 到 google.com,您可以自己看到此行为。您会注意到最终失败需要很长时间。那是因为 google.com 有很多 IP 地址,而 telnet 客户端正在尝试每一个。
虽然轮询 DNS 通常不会对其为其提供地址的服务器的状态提供反馈,但如果您随后为每个地址配备某种负载平衡器(包括基于路由器的技巧),它可能会有所帮助。
当事情失败时,有一些技巧可以更新 DNS;如果发生这种情况,具有适当短 TTL 的循环 DNS 可以成为伪负载平衡器。