OpenStack組件架構及部分核心組件解析

1 OpenStack組件架構簡介

OpenStack架構圖
上圖 VM是虛擬機,圍繞 VM 的那些長方形代表 OpenStack 不同的模塊(OpenStack 叫服務,後面都用服務這個術語),下面來分別介紹。

  1. **Nova:**管理 VM 的生命週期,是 OpenStack 中最核心的服務;
  2. **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 組件內部架構

Nova組件架構
- 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 包含如下幾個組件:

  1. cinder-api接收 API 請求,調用 cinder-volume 執行操作。
  2. cinder-volume管理 volume的服務,與 volume provider 協調工作,管理 volume 的生命週期。運行 cinder-volume服務的節點被稱作爲存儲節點。
  3. cinder-schedulerscheduler 通過調度算法選擇最合適的存儲節點創建volume。
  4. volume provider數據的存儲設備,爲 volume 提供物理存儲空間。
  5. cinder-volume支持多種 volume provider,每種 volume provider 通過自己的 driver 與cinder-volume協調工作。
  6. Message QueueCinder各個子服務通過消息隊列實現進程間通信和相互協作。因爲有了消息隊列,子服務之間實現瞭解耦,這種鬆散的結構也是分佈式系統的重要特徵。
  7. Database Cinder 有一些數據需要存放到數據庫中,一般使用MySQL。數據庫是安裝在控制節點上的,比如在我們的實驗環境中,可以訪問名稱爲“cinder”的數據庫。

2.2 組件間如何協同工作

下面以Nova爲例(其餘組件類似)介紹組件內部如何協同工作的:
Nova組件間調用

  1. 客戶發送請求:“創建一個虛機”;
  2. API 向 Messaging發送“創建一個虛機”的消息;
  3. Scheduler從 Messaging獲取該消息後執行調度算法,選出節點 A;
  4. Scheduler 向 Messaging 發送一條消息:“在計算節點 A 上創建這個虛機”
  5. 節點 A 從 Messaging 中獲取 Scheduler 的消息,然後在本節點的 Hypervisor 上啓動虛機;
  6. 在創建過程中,Compute 需要查詢或更新數據庫信息,會通過 Messaging 向 Conductor發送消息,Conductor負責數據庫訪問。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章