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


10

我被要求在数据中心重建我们的负载平衡基础架构。

最初的请求是对FTP服务器进行负载平衡。我尝试使用当前的负载均衡器(Piranha / LVS)进行此操作,但没有启动并运行它。不仅仅是因为几乎没有该软件的文档。由于Piranha被认为已弃用,因此我HAProxy尝试了几天后又去了,花了很少的时间完成了这项工作Piranha

因此,我已经准备好FTP负载平衡(被动模式)。现在,我被要求更换数据中心中的整个Piranha负载均衡器。在当前的Piranha配置中,我们有几个Web服务器,IIS服务器.... aaa和DNS

不,这是东西:
HAProxy似乎是常用的LB,但是它不能处理UDP load balancing。这真是令人讨厌,因为我喜欢这种方式HAProxy。因此,我在Google上搜索了很多东西,并遇到了一些问题。大多数人似乎都将LVS其用作DNS(TCP / UDP)的LB。一些使用dlbDNS,一些使用lbnamed,还有一些使用netfilter / iptables

因为我想坚持使用HAProxyFTP,HTTP和IIS服务器,所以我对与并列使用它感到困惑LVS

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

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

PS: LB解决方案应为非硬件和开源/ GPL许可/不收费。

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


检查Nginx nginx.com/blog/announcing-udp-load-balancing,这似乎解决了您的dns问题
user433519

Answers:


15

不要负载均衡您的DNS。

这是一种非常轻便的协议-您需要大量流量才能使用多个设备(在这种情况下,无论如何您都会成为负载平衡器的瓶颈),并且由于可以使用多个NS记录而内置了弹性在您的代表团中(如果一个服务器宕机,将使用其他服务器)。


一定要使用多个NS记录,因为TCP在DNS中变得越来越普遍,只要让它自己进行负载平衡即可。出于某种原因,重新发明轮子很痛苦。
cpt_fink 2015年

多个DNS服务器确实提供了冗余并防止了整体故障,但是DNS服务器宕机仍然会导致名称解析延迟。
200_success 2015年

好吧,对我来说有意义。事实是,如果我没有记错的话,我仍然需要虚拟IP来进行故障转移,因为我们将有两台包含HAProxy和LVS进行路由的机器。我将如何处理?
Mosh Pit

2
@MoshPit vrrpd或keepalived是不错的选择。
Shane Madden 2015年

我认为您正在谈论的是Active-Active Hot Standby设置,对吗?
Mosh Pit

11

我对此问题感到不舒服,因为尚未真正确定您要谈论的是哪种类型的DNS服务器。关于递归DNS的弹性,存在一些严重的误解,而且重要的是,通过搜索引擎进入的人们不要以虚假的安全意识摆脱讨论。

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

  • 递归DNS:始终使用某种形式的高可用性解决方案。(BGP,设备等),在这里您可能会遇到一些严重的麻烦。不是所有的解析器库都一样创建:Windows DNS客户端将在查询之间循环使用初始服务器,但是大多数基于Unix的系统将始终按顺序循环浏览列表。什么是甚至更少为人所知的是,这些Unix的图书馆将不得不超时在每个搜索域组合上移动到下一台服务器。如果您配置了多个搜索域,并且解析器查找顺序中的第一台服务器已失效,则可能会对每个请求的DNS解析造成严重延迟:这足以在关键应用程序内引起问题。

当涉及到递归DNS时,请记住,您的服务器基础结构仅具有最笨拙的客户端配置那样的弹性。随着公司的发展,这是您永远无法控制的事情。不要在同一个服务器操作系统环境下进行任何设计假设,因为在成长中的公司中情况很少保持相同。如果您不为此计划,那肯定会咬人。


到目前为止,我们将bind /命名为DNS服务。
Mosh Pit

好点-我的回答是权威的,但您是对的,可能是递归。
Shane Madden

1
@MoshPit您的“ DNS服务”评论未阐明这是递归还是权威。权威是指您托管域名。递归是您用来获取未托管域的IP地址的一种方法。两种服务器都是“混合”的,这违反了安全性最佳实践。
安德鲁B

1
对此我表示歉意,并注意到当您发布该评论时。我们控制着自己的DNS服务器,这些服务器是权威的。
Mosh Pit

不要使用负载平衡器来实现高可用性。
womble

2

这些天您可以dnsdist通过PowerDNS 使用

从自述文件

dnsdist是高度支持DNS,DoS和滥用的负载平衡器。其终生目标是将流量路由到最佳服务器,在分流或阻止滥用流量的同时,为合法用户提供最佳性能。

dnsdist是动态的,从某种意义上说,它的配置可以在运行时更改,并且可以从类似于控制台的界面查询其统计信息。

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

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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.