我正在学习分发系统,现在我正在研究DNS负载平衡主题。
我有几个Linux服务器,我想要设置下一个configuration:
我已经search了一段时间,发现似乎是根据dlbDNS的想法build立lbnamed,并做我所需要的。 我感到困惑的是,它似乎暂时停滞了一段时间(自2006年以来没有更新),虽然有评论说它没有什么问题。 此外,我无法find任何其他解决scheme。 所以我想,也许我在Google上搜了一个错误的东西,或者这样的function被包括在一些广泛的应用程序,如绑定。
所以我的问题是:DNS负载平衡方法是现在实际上,什么样的现代解决scheme(应用程序)可以使用?
提前致谢!
大多数基于DNS的负载均衡并不是应用于单个数据中心内的群集,而是更多地用于将用户指向附近地理位置的应用程序实例。
DNS的问题是cachinglogging,甚至比TTL更长,这意味着当您更新群集configuration和DNS时,客户端仍然可能被定向到不活动/无响应的节点。
这意味着只要用户的DNScaching被清除,用户数量将逐渐减less。
这可能是完全可以接受的。 这还取决于您的应用程序是公共的还是公司的Intranet,而您的客户端是否仅将Active Directory域控制器用作DNS服务器。
DNS负载平衡的第二个可能的问题是许多用户可以使用单个caching名称服务器,因此您的名称服务器接收到的DNS查询数量可能不会影响到您的请求数量。
所以不,在你的情况下,你最好使用layer3,networking负载平衡或可能像HAproxy,而不是DNS负载平衡。
就个人而言,我绝不会使用基于DNS的负载平衡。 最重要的原因是在ISP和客户机上有太多的行为不当的解决scheme。 例如,这些parsing器可以忽略TTL,从而cachingDNS答案,并可能返回不正确的答案。 既然你无法正确地影响这些事情,我宁愿不依靠他们负载平衡正常工作。
我所见过的所有负载平衡设置(F5,A10和开源工具,如keepalived)都会对TCP会话(或UDP,ICMP)进行负载平衡。
“负载平衡”虽然历史上不是“真实”的平衡,但是现在基于dns的负载平衡是高容量,高可用性解决scheme的必要且非常有效的部分(第一层)。
dns层能够根据其地理位置(GeoIP)为客户端parsingdns名称,从而缩短响应时间数百ms。
即使在几年前,这也是不可能的,当时的DNS负载均衡或者穷人的平衡,意味着一个单独的DNSlogging具有多个IP。 这些IP甚至不是自己的负载均衡器(就像你今天看到的运行CARP / VRRP / HSRP / etc一样),但它们是实际的terminalWeb服务器! 在这种模式下,任何一台服务器都会closures,导致所有stream量的一小部分被黑掉。
今天使用复杂的DNS作为自己的高可用性层是非常有效的。 例如aws route53,它使用非rfc complient“A / ALIAS”logging,将顶级域名绑定到ELB,以实现大规模的可扩展性和正常运行时间。 (不,我不为aws工作),但是,还有其他几个提供商将解决您的dns到客户端的请求,基于客户端最近的数据中心,可以服务请求。