DNS推送方案

有线通DNS 服务器目前状态访问流量目前在高峰期时用户对DNS 服务器并发访问数量不超过2000个 历史并发访问数量而而此时的系统负载也极低,不超过1这是一天的系统负载数据

有线通DNS 服务器目前状态

访问流量

目前在高峰期时用户对DNS 服务器并发访问数量不超过2000个 历史并发访问数量

而而此时的系统负载也极低,不超过1

这是一天的系统负载数据

,

平均系统负载在0.3左右,而系统有8个cpu ,所以cpu 够用。

如果当每个cpu 有3个以上的进程在请求运行时,这样系统负载就是8*3=24,那么这时需要考虑系统性能扩容,比如进行负载均衡改造。 高可靠性

这边使用主备来提供DNS 的高可用,利用redhat 自带的cluster 软件实现高可靠性。

,

可以做到当其中一台down 掉了,cluster 可以自动切换到另外一台备用机上。以目前用户的访问量,这样的高可用结构是完全可以胜任。

高性能负载均衡需求

随着业务的扩展,上网用户数量的上升,对DNS 服务器的访问也将加大。依目前的用户对DNS 的访问数量(并发用户访问不超过2000次) ,DNS 服务器性能是完全可以应付。但是依照目前的业务的扩展速度和上网人数的增加,对DNS 服务器访问将加大,所以有必要进行负载均衡的集群服务器的高性能扩展准备。

目前对DNS 负载均衡较成熟的解决方案有几种:anycast 、F5、主从DNS

1)

anycast dns

该负载均衡方案的主要设备是路由器,anycast 是网络中的报文传输的一种(单播报文、组播报文、广播报文、任播报文) ,这种报文传输特点不同于组播报文,当用户向DNS 虚拟节点发送域名解析请求时,假如这个虚拟节点IP 包含了三台DNS 服务器,那么anycast 报文由路由器根据路由算法来决定发给这组DNS 中其中的哪台来负责解析。这边支持anycast 报文选择传送的路由算法

有:ospf 、rip v2、bgp 和静态路由。

某个时刻选择哪台实体DNS 服务器来负责解析,是由路由算法来决定的,比如ospf 算法。 Ospf 可以计算链路的代价,代价是由链路带宽、延迟等因素综合计算出的一个值。Ospf 会选择代价低的链路来传输该报文。

其优点

可靠性,可用性:为单一的DNS 服务器增加可用的服务器数量,提高了DNS 的冗

余度,这样增加了DNS 服务器的高可用性和可靠性。

负载均衡:通过将同一个IP 的流量分散分到多台台服务器上,这样这样可以减轻

单台服务器负担。

部署简单:anycast 不需要路由重新的配置,可在现有的路由配置上稍作修改,然

,

后需要在实体DNS 服务器上安装ospf 协议的rpm 包即可。Bind(dns服务器软件) 也不要重新安装。

减弱DOS/DDOS的攻击:当组成员受到DOS 或是DDOS 的攻击时,路由器会根

据实体DNS 响应用户的请求延迟时间来判断转发给组中的其他DNS 实体。这样能很大程度减轻DOS 等的攻击.

费用低:利用现有的设备即可实现

其缺点

不能检查成员主机的健康状态,anycast 不能检查成员主机应用是否正常,比如不

能确定DNS 服务的53端口是否依然在监听。

2) 应用交付交换机 (4层交换

)

应用交付网络设备有:f5、radware 、alteon ,其中F5是使用较多的产品。

显然负载均衡需要F5交换设备来实现,比如F5的BIGIP 6800型号,是专门用于DNS 负载均衡处理的设备,是应用交付网络设备。

F5设备负载均衡的原理是:F5将要进行负载的设备IP 放在pool 池中,然后根据负载均衡算法将负载流量均匀地分配该pool 中的各个成员。F5交换设备可以判断pool 中成员健康状态,所以可以将down 掉的设备排除在负载列表之外,将负载流量重新分配pool 中好的成员中。说到负载均衡算法,路由器的NA T 也可以提供负载均衡的功能,但是NAT 只是简单的轮询或是随机分配流量,并不能根据实际的各个成员的实际负载情况而均匀地将流量分配到各个成员中。而F5设备有专门的负载均衡分配流量算法,F5可以监控各个成员链路的流量状态,可以均匀地分配流量到各个pool 成员中,起到真正的流量均衡。

其优点:

应用交付交换机如F5,是专业的4层应用交换生产商,其产品以负载均衡优越的

性能而著称。是应用交付网络中可靠的产品。

以及实现DNS 的一些功能,比如限制其他DNS 运营递归查询等

其缺点:

价格不菲,F5应用交付设备价格较贵,这个需要进行综合的考虑,比如F5还可以

提供,错误重定向(推广自己的门户网站等) ,以及智能排错等。

,

3) Master/slave DNS

主从DNS 是DNS 负载均衡里一种解决方案,但不是很完美的方案,因为不能对外发布单独统一的一个IP 地址,master 和slave 都需要各自的IP 地址。有一些场景下,master/slave是很有用的,比如不同的片区可以设置不同DNS 服务器ip 地址,而这些服务器的解析信息都是来自一台主(master)DNS的同步信息,这样可以起到负载的目的。

Master/slave DNS 工作原理:master 主DNS 只有一台,而从DNS 可以有多台,从DNS 的授权域名信息从主DNS 上同步过来,从DNS 会定期的到主DNS 服务器上进行同步,以获得最新的授权域信息。

其优点:

部署简单,只要添加从DNS ,而在主DNS 上只作稍微的修改即可。

对授权域信息维护代价小,可以设置从服务器定期的从主DNS 服务器上同步。 成本低,只是服务器硬件的投入

其缺点:

不能对外提供单一DNS 服务器IP 地址

对其他的配置信息(如named.conf 主配置文件) 的维护成本较大,需要手动同步。 负载流量不能均匀的分配

总结:负载均衡方案还有其他的,比如lvs ,该类的负载均衡器是由软件实现的,所以性能上负载均衡器本身有可能成为服务的瓶颈。而anycast 成本低,性能和F5交换机相同,是个不错的选择。

DNS 管理软件需求

现在DNS 解析信息是存放在文本文件上,而每次对DNS 的修改,比如添加授权域名,或修改等维护时,需要对配置文件进行修改,然后再重新启动服务进程或是重读配置文件。DNS 的配置文件即有严格格式,所以稍微多个空格之类的格式错误,就会造成服务启动的失败。

,

解决该问题一个有效的办法是,将DNS 的授权域信息存放在数据库上,因为授权域信息是最经常需要添加修改的,而在数据上做维护的有几个好处:

不需要重启服务,或是重新读起配置文件,配置立即生效

不会产生格式错误

通过web 界面进行维护管理授权域信息,简单高效

解决方案

有国外的软件可以实现,比如openDNS 、easyDNS 、mysqlBind 、Roster 、Nominum 、webmin 、DNSbox 、Secure64、Internet Protocol Address Management、NicTool 、ProBIND 。这里面有些是需要付费的产品如easyDNS 、Roster ,但也有一些免费的开源软件,如mysqlBind 就是开源的,早在1990年就已经开始出现了,其性能是经过许多的客户验证了。

国内的也有DNS 管理软件产品,Nominum DNS管理、中盈优创DNS 管理、蓝芒科技智能DNS 管理系统等。

对于dns 管理系统,现在国内外的开源软件很多了,其性能、功能都不错,所以完全可以考虑使用免费的开源软件来做。

DNS 流量统计

流量统计,其中最有用的信息是网站排名,这个可以统计一天、几天或是一个月的访问次数的排名,还有就是用户访问DNS 服务器的数量,这个统计可能是一天或是几天。这些功能在有些DNS 管理软件中就已经包括了。Bind 本身也可以记录用户请求解析域的信息,记录信息是存放在文本文件中,文件由dump-file 参数指定,里面记录从DNS 服务启动以来接收用户解析请求的解析域名和对应的IP 地址。是按时间顺序排列的。没有任何的统计,不直观。

有一些dns 工具可以提供一些统计信息,比如DNStop 工具,但是这种软件只能实时进行流量的统计,可以知道当前并发数和热门网站等。但是不能进行一天或是一个月来信息统计。

要想做到某段时间内DNS 流量统计,必须得将历史信息流存贮起来,然后再做分析。 有一种办法是将信息存贮在数据库,还有信息流处理存在XML 文件中。目前开源软件中能找到的DNS 统计信息存贮方式是XML 。该软件叫“DSC - DNS Stats Collector”,是一款开源软件,具有web 界面,直观。而且有各种视图来查看信息流。

解决方案

使用开源软件“DSC - DNS Stats Collector”,当然也有一些收费的流量统计软件,功能会相对会多些,但是“DSC - DNS Stats Collector”已经可以满足当前的需求,可以直接使用,节约成本。

,

DNS 重定向(广告推送)

广告推送原理

推广自己的门户网站或是其他的网络资源网站,在电讯行业中使用较多的方法是:广告对送,也叫DNS 重定向。即是用户访问的域名,在该DNS 的授权服务器上没有该域名A 记录,那么DNS 服务器会返回失败的记录。比如用户访问的网站不存在,这时会出现404的页面错误提示,那么这时DNS 重定向系统将修改该失败的response 报文中answer 字段中的addr 字段的值,将他改成重定向后的那个ip 地址。

解决方案

1. 较为成熟的解决方案是使用应用交付网络设备,即是4层交换机来实现。4层交换机可以对用户与DNS 服务器之前的交互的报文进行监控,当发现DNS 服务器的response 的报文是个失败的报文,就会对其包文进行修改,使其变成正常的报文,然后将自己门户网站IP 地址插到该修改后报文中。而4层交换机就F5的BIGIP 6800型号的设备,在电讯级行业中使用较多的设备。

2. 使用第三方软件来实现,比如开源软件powerDNS 和lua 脚本来实现。

标签: