天天看點

了解 Nova 架構 - 每天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-conductornova-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 的核心基礎元件,我們後面也會詳細介紹。

繼續閱讀