【DNS】Smart DNS管理系統

簡介

在公司業務系統中, DNS是很是重要的服務,公司內各環境的公共服務及http調用可能都會依賴於DNS進行域名解析;因爲不一樣環境的多樣性,須要DNS服務可以針對不一樣環境實現智能解析,同時,DNS配置複雜、手工管理風險大,操做失誤很容易形成DNS服務癱瘓。html

基於以上需求,我對部門內DNS架構進行了重構,同時,從新開發了DNS管理平臺。python

SmartDNS是分佈式、高可用的DNS平臺,使用Django2.xdnspython1.x進行開發,基於Bind9.x實現,以WEB模式管理,分控制、權威、服務、緩存等四層結構,知足了在複雜環境下的分區解析、快速部署、批量導入、動態更新DNS等需求,極大的提升了運維效率。linux

特色

  • 安全性:除權威節點外,其餘節點只支持讀操做(權威節點不對外開放)
  • 高性能:基於原生Bind開發,保證性能和穩定,查詢可達60000qps
  • 高可用:服務層數據實時同步,可經過負載均衡技術實現高可用
  • 多集羣:控制檯可支持多集羣操做
  • 智能解析:支持視圖
  • 審計:可查詢操做記錄

架構

SmartDNS 參考了 GitHub 的DNS架構,在《DNS Infrastructure at GitHub》這篇文章中,介紹了他們使用Unbound 做爲 緩存NSD 做爲 邊緣節點PowerDNS 做爲 權威服務git

因爲一直使用Bind9,因此我選擇它做爲全套DNS的基礎服務。在這裏 Bind9 可提供權威服務遞歸服務緩存服務,而web管理則採用自開發形式。github

image001.png

SmartDNS 系統中分爲四類主機:控制中心(Control)權威節點(Authority)服務節點(Edge)緩存節點(Cache)web

  • 控制中心 經過 動態更新(nsupdate) 服務,實時更新 權威節點(Authority) 的記錄信息。
  • 權威節點 爲隱藏的 DNS 主服務器,做爲 DNS 數據的規範來源,爲 服務節點(Edge) 提供 區域傳輸(zone transfer) 服務,並提供用於 建立修改刪除記錄動態更新(nsupdate) 服務;同時可部署在不一樣 區域(Region)數據中心(DC)
  • 服務節點 爲運行的 DNS 從服務器,用於響應 客戶端(Client)緩存節點(Cache) 對DNS區域zone的請求,提供 權威解析 的同時,還提供遞歸解析緩存 服務。
  • 緩存節點 可做爲遞歸解析器,同時緩存來自 服務層 的響應。

功能簡介

WEB 部分部分參考了 hahp的Blogaliyun雲解析DNS服務。django

因爲公司的運維工做很瑣碎,平時又沒有時間,因此DNS總體架構設計和系統開發斷斷續續作了2個來月,並且界面看起來也比較難看,沒辦法,作Python的基本都是全棧開發;另外我對圖中比較敏感的信息作了處理,請諒解;目前項目還處於初期階段,後續有精力再接着完善。緩存

集羣(Cluster)
image002.jpg安全

服務節點(Server)
image003.jpg服務器

視圖(View)
image004.jpg

域(Zone)
image005.jpg

記錄(Record)
image006.jpg

審計(Audit)
image007.jpg

最後,但願這篇文章能給看過朋友們一些幫助,謝謝。

參考文檔

https://linux.cn/article-8852...
https://www.cnblogs.com/hahp/...
http://bind-dlz.sourceforge.n...

相關文章
相關標籤/搜索