理解 Nova 架構 - 每天5分鍾玩轉 OpenStack(23)


image135.5.png

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

image47.png

在上圖中可以看到,Nova 處於 Openstak 架構的中心,其他組件都為 Nova 提供支持:
Glance 為 VM 提供 image
Cinder 和 Swift 分別為 VM 提供塊存儲和對象存儲
Neutron 為 VM 提供網絡連接

Nova 架構如下

image136.png

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” 的數據庫。

image137.png

Message Queue

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

image138.png

OpenStack 默認是用 RabbitMQ 作為 Message Queue。 MQ 是 OpenStack 的核心基礎組件,我們后面也會詳細介紹。

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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM