值得注意的是,有多少贡献者正在帮助发布有关DNS Round Robin作为负载分散和弹性机制的信息。它通常可以工作,但是您需要了解它是如何工作的,并避免由于所有错误信息而导致的错误。
1)用于轮询的DNS记录上的TTL应该短-但不能为零。将TTL设置为零会破坏提供弹性的主要方式。
2)DNS RR分散,但不平衡负载,它分散它,因为在庞大的客户群中,它们倾向于独立查询DNS服务器,因此最终得到不同的首选DNS条目。这些不同的首选意味着客户端由不同的服务器提供服务,并且负载分散。但是,这完全取决于哪个设备正在执行DNS查询,以及保存结果的时间。一个常见的示例是,公司代理后面的所有客户端(为它们执行DNS查询)最终都将目标锁定在单个服务器上。负载分散-但负载不均衡。
3)只要客户端软件正确实施,DNS RR就会提供弹性(并且TTL和用户注意范围都不太短)。这是因为DNS循环提供了服务器IP地址的有序列表,并且客户端软件应尝试依次联系其中每个,直到找到可以接受连接的服务器为止。
因此,如果首选服务器关闭,则客户端TCP / IP连接将超时,并且如果TTL或关注范围都没有过期,则客户端软件将再次尝试连接列表中的第二个条目-依此类推,直到TTL过期,或到达列表末尾(或用户厌恶地放弃)。
在客户端实际找到可用的服务器之前,可能要花很长的时间才能弄清一堆破损的服务器(您的故障)和较大的TCP / IP连接重试限制(客户端配置功能不正确)。TTL太短意味着它永远无法到达列表末尾,而是发出新的DNS查询并获得新的列表(希望以不同的顺序)。
有时,客户端会很不幸,新列表仍然以损坏的服务器开头。为了使系统有最大的机会提供客户端弹性,您应该确保TTL的长度比典型的关注范围长,并且让客户端到达列表的底部。
客户端找到运行中的服务器后,便应记住该服务器,并且在需要进行下一个连接时,它不应重复搜索(除非TTL过期)。较长的TTL可以减少客户端搜索有效服务器时用户经历延迟的频率,从而获得更好的体验。
4)DNS TTL本身具有优势,当您想要手动更改DNS记录(例如,删除长期损坏的服务器)时,短TTL允许该更改快速传播(一旦您可以这样做),因此考虑一下在知道此问题之前需要花费多长时间并进行手动更改之间的平衡,以及在TTL过期后普通客户端仅需要对正在运行的服务器进行新搜索这一事实。
DNS轮循机制具有两项出色的功能,使其在各种情况下都具有很高的成本效益-首先是免费的,其次它在地理上与客户群一样分散。
它没有引入其他所有“智能”系统都会采用的新“故障单元”。没有添加的组件可能会在整个相互链接的元素负载上遭受常见且同时的故障。
“聪明”的系统很棒,并引入了出色的机制来协调并提供无缝的平衡和故障转移机制,但是最终,他们用来提供无缝体验的方法只是其致命弱点-可能出错的其他复杂问题,并且当这样做时,将提供整个系统故障的无缝体验。
因此,是的,DNS轮询绝对是“足够好”,这是您将单个静态服务器托管在一个地方的唯一服务器。