负载平衡DNS服务器:UDP / TCP

我被要求重build数据中心的负载均衡基础设施。

最初的请求是负载平衡FTP服务器。 我试图用当前的负载平衡器( Piranha / LVS ),但没有得到它启动和运行。 不仅仅是因为这个软件几乎没有任何文档。 由于Piranha被视为不赞成使用,经过几天的尝试后,我去了HAProxy ,这在一小部分时间花在Piranha

所以我有FTP负载平衡(被动模式)。 现在,我被要求更换数据中心的整个食人鱼负载平衡器。 在目前的食人鱼configuration中,我们有几个Web服务器,IIS服务器…. aaa和DNS

没有这个东西:
HAProxy似乎是一个常用的LB,但它不能处理UDP load balancing 。 这是一个无赖,因为我喜欢HAProxy工作原理。 所以我search了很多,并遇到了几件事情。 大多数人似乎使用LVS作为DNS(TCP / UDP)的LB。 有的使用dlbDNS ,有的使用lbnamed ,有的使用netfilter / iptables

因为我想坚持使用FTP,HTTP,IIS服务器的HAProxy ,所以我很困惑与LVS并肩使用它。

要求:
2个具有故障转移的LB实例
2个DNS服务器(已经存在)和故障转移
多个后端服务器(http,应用程序等)

问题:
这可能吗? DNS服务器上的UDP负载均衡是否必要? 有没有什么资源可以告诉我如何开始呢? 还是有一个LB解决scheme,不仅能够处理TCP / HTTP,而且还有UDP负载平衡?

PS: LB解决scheme应该是非硬件和开源/ GPL许可证/免费的。

任何帮助或导致各自的资源非常感谢!

不要负载平衡你的DNS。

这是一个令人难以置信的轻的协议 – 你需要大量的stream量需要多个盒子(在这种情况下,你将只是在你的负载平衡器瓶颈),并有内置的韧性,因为你可以使用多个NSlogging在你的代表团(其他服务器将被使用,如果一个人失望)。

我对这个Q&A感到不舒服,因为还没有真正确定你正在谈论的是什么types的DNS服务器。 关于recursionDNS的弹性,有一些重大的误解,重要的是通过search引擎巡航的人员不要以虚假的安全感离开这个讨论。

  • 权威的DNS :对于权威的DNS服务器来说,关于DNS弹性的常识是非常有用的。 只要你有多个地理冗余的权威DNS服务器,你就没事了。 为各个IP添加高可用性的主要原因是如果您托pipe许多权威区域。 这使您可以增加服务器的数量,而无需更改托pipe的每个域的注册器设置。

  • recursionDNS :总是使用某种forms的高可用性解决scheme。 (BGP,设备等)这是你可以进入一些严重的麻烦。 所有的parsing器库不是相同的:Windows DNS客户端将轮询在查询之间使用的初始服务器,但大多数基于Unix的系统将始终按顺序循环访问列表。 不为人知的是,在移到下一个服务器之前,这些Unix库将不得不在每个search域组合超时。 如果您configuration了多个search域,并且parsing程序查找顺序中的第一个服务器已经死亡,那么这可能会在每个请求中造成严重的DNSparsing延迟:足以导致关键应用程序出现问题。

谈到recursionDNS时,请记住,您的服务器基础架构与最灵活的客户端configuration一样灵活。 随着公司的发展,这是你永远无法控制的事情。 不要根据同构的服务器操作系统环境做出任何devise假设,因为事物在成长中的公司中很less保持不变。 如果你不提前计划,这肯定会咬人。

这几天你可以使用PowerDNS的dnsdist

从README

dnsdist是一个高度DNS,DoS和滥用感知的负载均衡器。 它的目标是将stream量路由到最佳服务器,为合法用户提供最佳性能,同时分stream或阻止滥用stream量。

dnsdist是dynamic的,因为它的configuration可以在运行时改变,而且它的统计信息可以从类似控制台的接口查询。

https://github.com/PowerDNS/pdns/tree/master/pdns/dnsdistdist

他们提供常用操作系统的存储库: https : //repo.powerdns.com/