讀古今文學網 > OpenStack系統架構設計實戰 > 12.3.3 邏輯架構 >

12.3.3 邏輯架構

與Nova、Trove相似,Designate不是DNS服務器,而是對DNS服務器進行管理。

圖12-9給出了Designate的功能模塊圖,各模塊之間通過消息隊列進行通信。

圖12-9 Designate的功能模塊

Designate主要部件如下。

1.API

沿襲了OpenStack其他項目,Designate支持通過Rest API對DNS進行管理。API模塊接收用戶HTTP請求,在通過Keystone的用戶角色合法性認證後,HTTP/HTTPS請求經由AMQP消息總線被轉移到中心模塊。

儘管API也可以處理HTTPS請求,但是一般是由其他部件處理。例如在API前部署Nginx,或者由外部負載均衡器響應HTTPS請求。

2.中心(Central)

中心模塊是業務邏輯處理核心模塊,利用消息隊列響應RPC請求。中心模塊通過驅動或者Agents操控後端DNS服務器,並將業務邏輯處理所產生的數據進行持久化存儲。存儲以插件方式提供,目前主要支持SQLAlchemy,後續MongoDB等其他存儲驅動也會陸續支持。

3.池管理器(Pool Manager)

Designate從Kilo版本開始,軟件架構發生了重大變化,具體表現為Designate引入了池管理器機制,對DNS服務器進行池化管理。池管理器管理DNS服務器狀態。通過配置,池管理器知道哪些DNS服務器受其管轄,以及DNS服務器的後端驅動類型,如PowerDNS、BIND9等。對於後端驅動,池管理器支持完全的添加、刪除定制流程。池管理器將DNS服務器劃分到多個池中,以此對DNS服務器進行細粒度管理。此外,池管理器負責保證後端DNS服務器與Designate數據庫的最終一致性同步。

4.MiniDNS

MiniDNS是一個很小型的可水平擴展的DNS服務器,實現標準的DNS Notify和Zone Transfer處理。大部分情況下,MiniDNS扮演主人的角色,向DNS服務器發送DNS Notify和響應Zone Transfer(AXFR)請求,進行DNS區域和資源記錄同步。MiniDNS對Notify和AXFR協議的支持,使得Designate可以與任何支持標準通信方法的DNS服務器集成。MiniDNS也封裝了多種格式的DNS協議。例如,發送SOA查詢,驗證更改是否生效。

5.後端

每一個類型DNS服務器對應一款後端驅動。Designate目前已經支持多款DNS後端服務器,包括BIND、PowerDNS、NSD、DynECT等。用戶也可以根據需要實現新的驅動,或者對已有驅動進行擴展,以提供更豐富的功能。

6.Sink

Sink是一個可選的監聽服務,監聽來自Nova、Neutron以及其他發送事件的服務的通知信息。Sink將事件轉化為DNS操作,觸發域名資源記錄的自動創建、刪除或更新。事件所對應的DNS操作由通知處理器定義。例如,當監聽到Nova的compute.instance.create.end事件後,Designate自動創建一條對應於剛創建的實例的記錄;當監聽到Nuetron的floatingip.update.end事件通知後,Designate自動更新對應記錄。Sink也採用了可插拔結構,每個組織可以根據自己特定的使用場景編寫相應的插件。

7.存儲

Designate的存儲驅動,同時也是SQL/NOSQL數據庫服務器的驅動。Designate要求持久化數據存儲支持SQLAlchemy引擎,並推薦使用MySQL驅動。

Designate各模塊間採用AMQP消息隊列機制進行通信。AMQP作為消息中樞,消息隊列接收來自各個部件的RPC請求,並將其發送到各目標功能模塊。