1. 程式人生 > >每天5分鐘玩轉 OpenStack(23)

每天5分鐘玩轉 OpenStack(23)

Compute Service Nova 是 OpenStack 最核心的服務,負責維護和管理雲環境的計算資源。
OpenStack 作為 IaaS 的雲作業系統,虛擬機器生命週期管理也就是通過 Nova 來實現的。

在上圖中可以看到,Nova 處於 Openstak 架構的中心,其他元件都為 Nova 提供支援:
Glance 為 VM 提供 image
Cinder 和 Swift 分別為 VM 提供塊儲存和物件儲存
Neutron 為 VM 提供網路連線

Nova 架構如下

Nova 的架構比較複雜,包含很多元件。
這些元件以子服務(後臺 deamon 程序)的形式執行,可以分為以下幾類:

API

nova-api
接收和響應客戶的 API 呼叫。
除了提供 OpenStack 自己的API,nova-api 還支援 Amazon EC2 API。
也就是說,如果客戶以前使用 Amazon EC2,並且用 EC2 的 API 開發了些工具來管理虛機,那麼如果現在要換成 OpenStack,這些工具可以無縫遷移到 OpenStack,因為 nova-api 相容 EC2 API,無需做任何修改。

Compute Core

nova-scheduler
虛機排程服務,負責決定在哪個計算節點上執行虛機

nova-compute
管理虛機的核心服務,通過呼叫 Hypervisor API 實現虛機生命週期管理

Hypervisor
計算節點上跑的虛擬化管理程式,虛機管理最底層的程式。
不同虛擬化技術提供自己的 Hypervisor。
常用的 Hypervisor 有 KVM,Xen, VMWare 等

nova-conductor
nova-compute 經常需要更新資料庫,比如更新虛機的狀態。
出於安全性和伸縮性的考慮,nova-compute 並不會直接訪問資料庫,而是將這個任務委託給 nova-conductor,這個我們在後面會詳細討論。

Console Interface

nova-console
使用者可以通過多種方式訪問虛機的控制檯:
nova-novncproxy,基於 Web 瀏覽器的 VNC 訪問
nova-spicehtml5proxy,基於 HTML5 瀏覽器的 SPICE 訪問
nova-xvpnvncproxy,基於 Java 客戶端的 VNC 訪問

nova-consoleauth
負責對訪問虛機控制檯請親提供 Token 認證

nova-cert
提供 x509 證書支援

Database

Nova 會有一些資料需要存放到資料庫中,一般使用 MySQL。
資料庫安裝在控制節點上。
Nova 使用命名為 “nova” 的資料庫。

Message Queue

在前面我們瞭解到 Nova 包含眾多的子服務,這些子服務之間需要相互協調和通訊。
為解耦各個子服務,Nova 通過 Message Queue 作為子服務的資訊中轉站。
所以在架構圖上我們看到了子服務之間沒有直接的連線,它們都通過 Message Queue 聯絡。

OpenStack 預設是用 RabbitMQ 作為 Message Queue。
MQ 是 OpenStack 的核心基礎元件,我們後面也會詳細介紹。

下一節我們討論這些 Nova 元件如何協調工作。