1 OpenStack組件架構簡介
上圖 VM是虛擬機,圍繞 VM 的那些長方形代表 OpenStack 不同的模塊(OpenStack 叫服務,後面都用服務這個術語),下面來分別介紹。
- **Nova:**管理 VM 的生命週期,是 OpenStack 中最核心的服務;
- **Neutron:**爲 OpenStack 提供網絡連接服務,負責創建和管理L2、L3 網絡,爲 VM 提供虛擬網絡和物理網絡連接;
**- Glance:**管理 VM 的啓動鏡像,Nova 創建 VM 時將使用 Glance 提供的鏡像;
**- Cinder:**爲 VM 提供塊存儲服務。Cinder 提供的每一個 Volume 在 VM 看來就是一塊虛擬硬盤,一般用作數據盤;
**- Swift:**提供對象存儲服務。VM 可以通過 RESTful API 存放對象數據。作爲可選的方案,Glance 可以將鏡像存放在 Swift 中;Cinder 也可以將 Volume 備份到 Swift 中;
**- Keystone:**爲 OpenStack 的各種服務提供認證和權限管理服務。簡單的說,OpenStack 上的每一個操作都必須通過Keystone 的審覈;
**- Ceilometer:**提供 OpenStac k監控和計量服務,爲報警、統計或計費提供數據;
**- Horizon:**爲 OpenStack用戶提供一個 Web 的自服務 Portal;
2 核心組件內部架構
2.1Nova 組件內部架構
- API-nova API
1、負責接收和響應客戶的 API 調用,如:OpenStack API,Amazon EC2 API;
- Compute Core
1、Nova scheduler:虛擬機調度服務;
2、Nova compute :調用 Hypervisor API 實現虛機生命週期管理;
3、Hypervisor:虛機管理最底層,常用的 Hypervisor 有 KVM,Xen,VMWare 等;
4、Nova conductor:訪問數據庫,更新數據庫狀態;
-Console interface
1、Nova-console:訪問虛擬機控制檯;
2、Nova-consoleauth:請求token認證;
3、Nova-cert:提供x509證書支持;
-Database
1、通常使用mysql;
- Message Queue
1、Nova各個子服務之間通信;
2、默認是用 RabbitMQ
Cinder 包含如下幾個組件:
- cinder-api接收 API 請求,調用 cinder-volume 執行操作。
- cinder-volume管理 volume的服務,與 volume provider 協調工作,管理 volume 的生命週期。運行 cinder-volume服務的節點被稱作爲存儲節點。
- cinder-schedulerscheduler 通過調度算法選擇最合適的存儲節點創建volume。
- volume provider數據的存儲設備,爲 volume 提供物理存儲空間。
- cinder-volume支持多種 volume provider,每種 volume provider 通過自己的 driver 與cinder-volume協調工作。
- Message QueueCinder各個子服務通過消息隊列實現進程間通信和相互協作。因爲有了消息隊列,子服務之間實現瞭解耦,這種鬆散的結構也是分佈式系統的重要特徵。
- Database Cinder 有一些數據需要存放到數據庫中,一般使用MySQL。數據庫是安裝在控制節點上的,比如在我們的實驗環境中,可以訪問名稱爲“cinder”的數據庫。
2.2 組件間如何協同工作
下面以Nova爲例(其餘組件類似)介紹組件內部如何協同工作的:
- 客戶發送請求:“創建一個虛機”;
- API 向 Messaging發送“創建一個虛機”的消息;
- Scheduler從 Messaging獲取該消息後執行調度算法,選出節點 A;
- Scheduler 向 Messaging 發送一條消息:“在計算節點 A 上創建這個虛機”
- 節點 A 從 Messaging 中獲取 Scheduler 的消息,然後在本節點的 Hypervisor 上啓動虛機;
- 在創建過程中,Compute 需要查詢或更新數據庫信息,會通過 Messaging 向 Conductor發送消息,Conductor負責數據庫訪問。