又一次開發DNS管理平臺,去年開發過兩個版本。來到新公司,又來了這樣的需求。好吧~ 那就再開發一個版本。
前端
去年第一個版本底層是bind,給予文件管理,這樣管理起來比較複雜,並且每次發佈持續時間特別長。第二個版本使用bind dlz,給予數據庫管理,穩定性太差。因此此次底層改成powerDns,也是給予數據庫管理,通過測試穩定性挺好,就是首次查詢效率和bind相比略慢。pdns也支持Cache,當第二次查詢的時候,速度基本和bind不差上下。python
這裏就很少介紹Pdns了,若是想了解,能夠查看pdns 官方手冊。dns管理平臺大概拓撲以下:jquery
> 經過DNS 管理平臺管理domain、record等記錄,將數據寫入到DB Serversql
> 當Client 查詢record時,Pdns Server 從DB Server 獲取數據,若是沒有記錄,使用pdns-recursor 模塊,forward到根服務器,進行遞歸查詢。
數據庫
DNS管理平臺主要由如下組件開發完成:django
後端語言:python Django
bootstrap
數據庫: 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記錄,不知你們是否有注意。