文章目錄
前言:
本篇博客爲OpenStack—Nova組件基礎理論,之後會持續更新其他組件理論部分
一、Nova計算服務基本概念
- Nova主要負責計算資源的模塊,同時支持、處理openstack雲中的實例生命週期的所有活動,這樣使得nova成爲一個負責管理計算資源、網絡、認證、所需可擴展性的平臺。
- nova服務是由多個子服務構成,子服務是通過RPC(遠程過程調用)實現通信。服務之間有很鬆的耦合性。
- PS 解耦:耦合是指兩個或兩個以上的體系或兩種運動形式間通過相互作用而彼此影響以至聯合起來的現象。 解耦就是用數學方法將兩種運動分離開來處理問題,常用解耦方法就是忽略或簡化對所研究問題影響較小的一種運動,只分析主要的運動。
二、Nova主要功能與工作流程
2.1 Nova 主要功能
- ① 實現實例的生命週期的管理
- ② 調動管理平臺的網絡、存儲等資源
- ③ 支持KVM、VMware等同名的hypervisor(虛擬機監視器)
- ④ hypervisor 提供軟件來管理虛擬機對底層硬件的訪問
- ⑤ 異步的一致性通信
2.2 Nova虛擬機創建工作流程圖
2.2.1 詳細工作流程
- 請求nova boot --image ttylinux --flavor 1 i-01
- 接收nova-api 接受請求(tcp REST請求)
- nova-api 發送一個創建虛擬機的請求到消息隊列,並會存儲到數據庫,產生uuid.
- nova-scheduler 接受到請求後進行過濾,調度器會根據請求的虛擬資源,即flavor的信息,選擇出最優的計算節點A(裝有nova-computer的物理主機)
- nova-scheduler發送消息到nova-network,進入下一步(配置網絡),此過程虛擬機處於scheduling任務狀態。
- nova-network 接收到消息後,從fixed IP表(數據庫)裏拿出一個可用IP,設置dnsmsq(DHCP server),確保此IP可以與生成的MAC地址對應
- nova-network對fixed IP 進行地址轉換,使虛擬機可以訪問外網
- network設置完成後,nova-network發消息到消息隊列,scheduler選擇的計算節點服務器A會收到創建虛擬機的消息
- 計算節點A接收到消息後,開始創建虛擬機,首先會從glance上下載鏡像,然後會根據之前生成的uuid、MAC,鏡像位置、創建一個啓動虛擬機的xml文件,同時調用libvirt接口,根據xml配置創建虛擬機,
- 虛擬機創建完後,把虛擬機狀態改成ACTIVE
- 以上,虛擬機發布完成
三、Nova組件及功能
3.1 主要組件
-
nova-api
HTTP服務,對內接收處理客戶端發送的HTTP請求 對外提供一個雲基礎設施的接口,也是外部可用於管理基礎設施的唯一組件
-
nova-scheduler
① 在接收到一個來自消息隊列的創建虛擬機實例請求時,根據配置從計算節點集羣中選擇最優節點,並將請求轉給該節點,最終將虛擬機部署創建在該節點上,類似於負載均衡
② Nova-Scheduler服務將根據負載,內存,可用域的物理距離,CPU架構等信息,並運行調度算法,最終做出調度決策,同時負責Nova主機選擇,提供決策,配置在contron下的noca.conf中
③ /Contron/nova.conf中配置:
scheduler_default_filter默認的過濾器
scheduler_avavilable_filter 可用的過濾器
④ 工作在邏輯控制層
-
nova-compute
nova-compute是一個非常重要的守護進程,負責創建和終止虛擬機實例,即管理虛擬機實例的生命週期
上層發來的請求通過compute去管理虛擬化組件,kvm、qemu去創建虛擬機實例,通過 Hypervisor 的 API來創建 和銷燬虛擬機
-
nova-network daemon
安裝在compute節點上,功能與nova-compute類似,管理IPtables規則和網卡
-
nova-conductor
RPC(遠程過程調用)服務,主要提供數據查詢功能
工作於Nova-Compute服務與數據庫之間,避免了Nova-Compute服務對雲數據庫的直接訪問,但是,不能將它部署在運行Nova-Compute服務的主機節點上
-
Nova-api-metadata
接收來自虛擬機發送的源數據請求,一般在安裝Nova-Network 服務的所主機模式下使用
-
Nova-placement-api
用於追蹤記錄資源提供者目錄和資源使用情況,這些資源包括計算,存儲以及IP地址池等。
3.2 其他組件簡介
-
nova-consoleauth daemon
身份驗證的一個進程,用戶的授權令牌.
Noca-consoleauth 守護進程,由用戶的console控制檯代理提供授權tokens,兩種模式nova-novncproxy和nova-xvpnvcproxy
-
nova-novncproxy daemon
通過vnc(虛擬網絡控制檯)連接來訪問運行的虛擬機實例的代理。
-
nova client
是指使用 Neutron服務的應用程序,可以是命令行工具(腳本)、 Horizon( OpenStack圖形操作界面)和Nova計算服務等
-
the queue
消息隊列rabbitmq。進程之間傳遞消息的中心
-
sql database
數據庫(默認使用 Maria DB)用於存放 OpenStack的網絡狀態信息、包括網絡、子網端口、路由器等等
-
Nova-conductor——數據庫訪問代理
負載均衡,可擴展性高
防止計算節點直接訪問數據庫