当前位置:首页 期刊杂志

基于DOCKER技术的DNS容器应用

时间:2024-08-31

张晓燕 肖明 周伟立

摘   要:在数据业务和移动互联网业务应用中DNS系统的稳定性尤为重要。在现网DNS系统中递归服务器是一个节点一台服务器,采用单进程bind软件,稳定性堪忧。本文以轮循负载调度算法进行DNS的UDP请求分发,通过以容器为进程处理单元来应对并发请求,以提高DNS在面对高延时的递归解析服务成功率及物理资源的有效利用率,并在本文中以对比测试的方式展现了容器技术与传统BIND技术的优缺。

关键词:DNS系统  bind  递归服务器  稳定性  容器技术

中图分类号:TP393                                 文献标识码:A                        文章编号:1674-098X(2020)03(c)-0143-02

随着移动通信的迅猛发展,运营商之间的竞争也越来激烈,用户对业务质量的要求越来越高。DNS系统作为互联网的核心业务应用,在数据业务和移动互联网业务应用的支撑方面起到越来越重要的作用,DNS的稳定性直接影响全网用户的上网感知。然而在DNS系统的所有资源中,递归服务器是一个节点一台服务器,因此,递归服务器的稳定性就显得尤为重要。新疆移动现网DNS递归服务目前采用单进程bind软件的开源解决方案。为保证服务的运行稳定,进程中没有采用较多的线程服务方式运行。线程数量与系统稳定性成正比,一个线程异常将会使得整个bind进程错误,进程错误将导致业务受阻,因此bind軟件底层没有运行较多的线程。如何提高设备运行效率呢?若单一追求多线程工作将直接影响系统的稳定性,系统不稳定直接反映在用户的使用感知上,为避免对用户体验造成不良并提高递归请求的服务瓶颈,新疆移动为了降低成本和提高利润,决定从现有网络中来挖掘潜力,本文首次提出容器技术进行设备性能优化。主要阐述如何运用容器技术进行进程组隔离(cgroup)的方式并行运行bind软件。项目实施后我部将通过增加容器数量,提高服务进程数量,以提高系统稳定性,降低进程异常导致的系统异常。单个容器进程的异常或挂死后不会影响到其他容器内bind的正常服务,以降低对新疆移动用户的影响面积。

1  递归的能力

随着4G-LTE、3G、WLAN以及有线宽带业务的快速发展,内容服务商的不断新增,运营商在全国各省普遍出现DNS系统流量猛增的情况,递归性能更是成倍增长,导致服务器CPU占用率很高,导致系统效率不高,严重影响用户的上网感知,DNS的递归服务器性能已经不能满足未来业务发展所需要求,对运营商业务的发展,有很大影响。新疆移动虽然在2015年DNS系统已新增一套手机DNS系统,但面对现阶段和未来日益猛增的递归业务,DNS递归服务的并发能力是否能满足业务的发展需要、达到集团规范要求,目前仍是未知数。

根据2017年7月30日统计数据表明,新疆移动手机DNS递归总访问量达到6.91亿次,峰值为3.1万QPS。

DNS系统递归服务能力是业务发展的主要瓶颈。目前新疆移动存在的主要问题有:

(1)目前新疆移动的DNS递归解决方案采用的是bind的开源解决方案,为保证系统的稳定运行,没有开放多线程运行模式。因为多线程运行对系统服务的稳定性冲击较大,一个线程的异常会使所在进程内的所有线程运行错误。

(2)递归服务的上限基本上在3~5万QPS内,达到该并发量时,仍有大量的CPU和内存资源闲滞,其中被使用的物理资源中大部分消耗在高延时的请求服务和队列等待中。

由此可见新疆移动亟需对DNS递归服务器在保证服务器稳定性的前提下提升递归服务的并发处理能力。

2  新疆移动DNS系统递归服务器容器化流程

新疆移动DNS系统递归服务器容器化是基于LVS负载均衡架构的DNS容器应用,如图1所示。

LVS+Dcoker为主体架构设计,以轮循负载调度算法进行DNS的UDP请求分发,通过以docker容器为进程处理单元来应对高并发请求,以提高DNS在面对高延时的递归解析服务成功率及物理资源的有效利用率,此架构设计,可以应对不同的使用场景,具有开放性的选择。以bind程序为基础来解决udp请求的高并发场景,同样,也可以以此架构来解决tcp请求的高并发方案,应用场景可扩展的目前主流的任何应用。

3  新疆移动DNS系统递归服务器容器化目标

3.1 实现负载均衡

为了有效地实现负载均衡,在DNS系统递归服务器内部中采用LVS技术。

3.2 实现容器互备份

容器间互为备份,当其中一个容器出现问题时,其他容器应可以为其用户提供服务。

3.3 性能目标

由于域名服务系统是互联网络的重要基础设施之一,因此域名解析系统的服务要尽最大可能做到不发生中断,服务可用性需要达到99.99%。具体实施过程中,应利用多服务器冗余的部署实施方法,满足服务系统的高可用性要求。

递归服务器域名解析能力应保证具备不低于服务域内正常业务量情况下历史请求量峰值3倍的处理能力,以应对可能针对域名系统的突发访问或服务攻击。

4  新疆移动DNS系统递归服务器容器化实现

递归服务器容器化后,容器间互为灾备,当其中一个容器出现问题时,其他容器应可以为其用户提供服务。

4.1 递归服务器容器配置

新疆移动DNS系统架构目前为缓存、递归服务器和DNS相关软件,每个节点一台递归服务器,现通过容器的方式实现单节点多容器,实现在无硬件扩容的基础上达到多服务。

递归服务器采用LVS的方式进行负载均衡。当一个容器出问题后,其将无法更新路由表,则上层网络设备将会把DNS业务流量发送给其他正常服务器,可有效避免DNS服务中断的风险。创建容器时,只需配置虚IP对缓存服务器发布即可,递归补对用户提供服务,对前端安全防护设备无需任何操作,对DNS网管设备无需任何操作,对DNS日志设备无需任何操作,对DNS日志分析设备无需任何操作。整套方案简单高效,便于施工,加快项目建设速度,快速完工。

考虑到DNS业务的重要性,因此DNS系统递归服务器的优化仍然采用双局址,即北京路和南湖路两个物理节点的递归服务器均容器化。其整体配置如下:

(1)南湖节点递归服务器:开10个容器,每个容器跑一个DNS应用。设备内使用LVS进行负载均衡,通过ospf发布服务IP,对南湖缓存服务器提供DNS服务。

(2)北京路节点递归服务器:开10个容器,每个容器跑一个DNS应用。设备内使用LVS进行负载均衡,通过ospf发布服务IP,对北京路缓存服务器提供DNS服務。

4.2 DNS系统容器化后的安全问题

DNS系统在安全方面,内部容器化不影响DNS系统本身的安全。面对递归攻击的防护,我们的递归服务器的递归软件在容器化后,单套软件性能不变,容器数量的增加对服务器抗递归攻击的能力增强。递归DNS的递归淘汰机制,可在递归资源饱和时通过递归淘汰算法计算出可能是黑客发出的攻击递归请求,并释放这些递归资源,这项策略的意义在于当服务器遭受递归攻击时,能够使递归个数满足正常的用户递归请求,而不是被垃圾流量占用。

DNS服务器在做递归请求时,需要占用服务器更多的资源,所以DNS服务软件会对递归并发数进行限制,当并发数达到设定的数值后系统就不再处理新的递归请求,这样黑客就会利用极少量的流量发送大量的递归请求来耗尽DNS服务器的递归资源,导致用户的DNS递归解析失败。

5  结语

在对该课题研究的时候,阅读了大量的国内外文献以及书籍,结合新疆移动的递归优化项目课题,对新疆移动DNS系统的数据进行统计分析,并对递归数据的分析做了一定工作。结合当前互联网的发展,使得DNS解析逐渐增多的现实,对DNS系统递归服务器做了深入地研究,解决了单点DNS在面对高延时域名递归请求时,大量的过期应答判断占用了多数的线程,导致CPU中断、上下文切换数、内核队列线程数倍增,过多的运算资源被闲置,影响其他的正常请求无法处理。容器的引入让内核依据容器负载分担到各CPU核心上,保证其他高延时的域名请求负载在多个容器中,以容器为单位,高延时的域名请求占用较低的线程比例运行,在保证每个容器内最少线程数的前提下,加大容器数量,提高了服务进程数量,将容器进程组充分作用于每颗CPU核心,提高系统资源有效利用率。采用LVS的NAT负载均衡方式,以轮循负载调度算法进行DNS的UDP请求分发,通过以容器为进程处理单元来应对并发请求,以提高DNS在面对高延时的递归解析服务成功率及物理资源的有效利用率。在服务运行期间容器可进行批量快速部署,并且面对服务异常可直接快速新增容器接管,实现秒级服务冗余切换。

参考文献

[1] 王军亮,谢晓尧,黎春,等.LVS集群中IP负载均衡技术的研究[J].贵州科学,2009,27(2):76-79.

[2] 莘建浦.基于Docker容器的网络安全实训平台的研究与实现[D]. 北京邮电大学,2018 .

[3] 李灿彬,甘宏.基于Docker容器的云平台设计与实现[J].科技广场,2017(6):38-41.

[4] 刘辉扬.基于Docker的容器监控和调度的研究与实现[D].华南理工大学,2016.

免责声明

我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自各大过期杂志,内容仅供学习参考,不准确地方联系删除处理!