又一次開發DNS管理平臺,去年開發過兩個版本。來到新公司,又來了這樣的需求。好吧~ 那就再開發一個版本。
去年第一個版本底層是bind,給予文件管理,這樣管理起來比較複雜,而且每次發佈持續時間特別長。第二個版本使用bind dlz,給予數據庫管理,穩定性太差。所以這次底層改爲powerDns,也是給予數據庫管理,經過測試穩定性挺好,就是首次查詢效率和bind相比略慢。pdns也支持Cache,當第二次查詢的時候,速度基本和bind不差上下。
這裏就不多介紹Pdns了,如果想了解,可以查看pdns 官方手冊。dns管理平臺大概拓撲如下:
> 通過DNS 管理平臺管理domain、record等記錄,將數據寫入到DB Server
> 當Client 查詢record時,Pdns Server 從DB Server 獲取數據,如果沒有記錄,使用pdns-recursor 模塊,forward到根服務器,進行遞歸查詢。
DNS管理平臺主要由以下組件開發完成:
後端語言:python Django
數據庫: Mysql
前端語言:jquery、Ajax、bootstrap
Web服務器:Nginx、 Uwsgi
第三方組件:
平臺大概功能介紹:
用戶管理:給予django-auth-ldap模塊和Ldap集成,實現用戶登入驗證。用戶權限管理,是通過平臺自身完成。
domain 和record 管理:實現對domain和record記錄的增刪改查。DB數據結構就是更改PDNS 官方提供的Domain和record表。我還增加了一張record_type表。
Domain 展示
3. 日誌管理:主要記錄Domain和record操作的過程記錄下來。
4.用戶管理:對用戶權限管理,權限這一塊兒做的比較簡單。後期再進行更改吧~
有了DNS 平臺,就不用每次更新記錄時苦逼咧咧登入到每臺機器上去修改了(也有很多開源的自動化工具也可以實現~)。
使用dig可以看一下pdns和bind的性能:
pdns:
第一次查詢大概用了3msec時間,第二次是從Cache中直接獲取的0msec。
bind查詢:第一次用時1msec,第二次用時0msec。
pdns在dig 查詢時沒有AUTHORITY SECTION記錄,不知大家是否有注意。