張曉燕 肖明 周偉立

摘? ?要:在數據業務和移動互聯網業務應用中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軟件。項目實施后我部將通過增加容器數量,提高服務進程數量,以提高系統穩定性,降低進程異常導致的系統異常。單個容器進程的異?;驋焖篮蟛粫绊懙狡渌萜鲀萣ind的正常服務,以降低對新疆移動用戶的影響面積。
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.