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

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

我被要求重建我们数据中心的负载平衡基础设施。

最初的请求是对 FTP 服务器进行负载平衡。我尝试使用当前的负载平衡器 (Piranha / LVS),但没有安装并运行它。不仅仅是因为这个软件的文档很少。由于Piranha被认为是弃用的,我去了HAProxy经过几天的尝试,它只花了很少的时间就完成了工作Piranha

因此,我已经设置了 FTP 负载平衡(被动模式)。现在,我被要求更换数据中心的整个 Piranha 负载平衡器。在当前的 Piranha 配置中,我们有几个 Web 服务器、IIS 服务器……还有DNS

不,事情是这样的:
HAProxy似乎是一个常用的LB,但是它无法处理UDP load balancing。这很令人沮丧,因为我喜欢HAProxy有效。所以我在谷歌上搜索了很多,发现了一些东西。大多数人似乎都使用LVS作为 DNS (TCP/UDP) 的 LB。有些使用dlbDNS,有些使用lbnamed,有些则使用netfilter / iptables

因为我想坚持HAProxy对于 FTP、HTTP、IIS 服务器,我对于同时使用它感到困惑LVS

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

问题:
这可能吗?DNS 服务器上的 UDP 负载平衡是否必要?是否有任何资源可以向我展示如何开始使用?或者是否有一个 LB 解决方案不仅能够处理 TCP/HTTP,还能处理 UDP 负载平衡?

附言:LB 解决方案应为非硬件且开源/GPL 许可/免费。

任何帮助或相关资源的指引都将不胜感激!

答案1

不要对你的 DNS 进行负载平衡。

它是一个非常轻量的协议 - 您需要大量的流量才能需要多个盒子(在这种情况下,无论如何您都会在负载均衡器上遇到瓶颈),并且内置有弹性,因为您可以在委派中使用多个 NS 记录(如果一个服务器出现故障,则会使用其他服务器)。

答案2

我对这个问答感到不舒服,因为还没有真正确定你谈论的 DNS 服务器类型。在递归 DNS 的弹性方面存在一些重大误解,重要的是,通过搜索引擎浏览的人不要带着虚假的安全感离开这个讨论。

  • 权威 DNS:对于权威 DNS 服务器,关于 DNS 弹性的常识非常准确。只要您拥有多个具有地理冗余的权威 DNS 服务器,就没问题。为单个 IP 添加高可用性的主要原因是如果您托管许多权威区域。这样您就可以增加服务器数量,而不必更改每个托管域的注册商设置。

  • 递归 DNS:始终使用某种形式的高可用性解决方案。(BGP、设备等)这是您可能遇到严重麻烦的地方。并非所有解析器库都是一样的:Windows DNS 客户端将在查询之间轮询使用的初始服务器,但大多数基于 Unix 的系统将始终按顺序循环遍历列表。甚至较少的已知的是这些 Unix 库将不得不超时在每个搜索域上组合,然后再转到下一个服务器。如果您配置了多个搜索域,并且解析器查找顺序中的第一个服务器已停止运行,则这会导致每个请求的 DNS 解析严重延迟:足以在您的关键应用程序中造成问题。

当谈到递归 DNS 时,请记住,您的服务器基础架构的弹性仅与最愚蠢的客户端配置一样。随着公司的发展,这是您绝不控制。不要基于同质的服务器操作系统环境做出任何设计假设,因为在成长型公司中,事情很少保持不变。如果你不提前计划,这肯定会给某些人带来麻烦。

答案3

现在你可以使用dnsdistPowerDNS

来自 README

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

dnsdist 是动态的,因为它的配置可以在运行时更改,并且可以从类似控制台的界面查询其统计数据。

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

它们为常见的操作系统提供存储库:https://repo.powerdns.com/

相关内容