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

12.4.3 邏輯架構

圖12-11展示了Barbican的邏輯架構。

圖12-11 Barbican的邏輯架構

外部請求首先到達API節點,對於可以同步響應的請求(如GET請求),API節點可以直接與數據庫交互並返回,否則API節點需要通過隊列,將請求交由工作者節點進行異步處理。異步處理模式則可以與第三方組織如數字證書認證機構進行交互。如圖12-11所示,在Barbican架構中,可以通過網絡添加和刪除多個API和工作者節點,以此支持自動伸縮等高級特性。數據庫需要跨數據中心部署多份,以支持對用戶屏蔽區域獲取保密信息,同時減少數據同步帶來的時延。

Barbican系統中使用了一些Oslo公共項目組件,如配置、消息和日誌等。圖12-12展示了Barbican內部組件間的交互。

圖12-12 Barbican內部組件間的交互

圖12-12中覆蓋了一些潛在的REST接口客戶端,包括Castellan。Castellan向其他OpenStack項目提供通用密鑰管理接口,而Barbican是Castellan的一個插件。

API節點是WSGI服務器。和Glance相同,Barbican利用Paste模塊支持可配置中間件,如與Keystone交互進行認證。Pecan是受CherryPy、TurboGears和Pylons啟發研發出的一個輕量級Python Web框架。Barbican採用Pecan將資源路由並映射到Rest請求。這些資源包括控制業務邏輯,以及與通過Crypto組件與加密、解密進程交互,通過Repository組件與數據存儲交互,通過Queue組件執行異步任務等。

Crypto組件中以插件形式,包含了密鑰管理互操作協議(KMIP)和硬件安全模塊(HSM)等。通過多種加密機制和解密後端,Crypto提供對信息的加解密。

Repository組件提供數據存儲接口以及數據庫會話上下文。Repository中還包含了表徵實體的模型組件,例如Secrets用於存儲數據加密密鑰等加密後的信息。Repository用SQLAlchemy作為數據庫的對象關係模型層,包括MySQL和PostgreSQL。

Barbican引入Oslo Messaging與RabbitMQ等隊列交互,執行異步處理。工作者節點處理來自隊列的任務。任務組件與API資源類似,執行業務邏輯的同時,與數據存儲進行交互。異步任務可以與數字證書認證機構等外部系統進行交互。