现代DNS负载平衡解决scheme

我正在学习分发系统,现在我正在研究DNS负载平衡主题。

我有几个Linux服务器,我想要设置下一个configuration:

  1. 一个DNS负载均衡器,parsing负载较less的服务器的IP地址;
  2. 多个应用程序服务器处理用户请求并将自己的负载统计信息发送给DNS负载平衡器。

我已经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到客户端的请求,基于客户端最近的数据中心,可以服务请求。

http://dyn.com/managed-dns/

http://aws.amazon.com/route53/