Nova: 1 Nova基礎及其架構

目標:
弄清楚nova架構及其主要場景的實現原理

1 引言
nova的作用是管理虛機,提供計算資源抽象。

2 nova架構

        api-------------------------------
        |                |
        |                |
        V                |
        conductor------>scheduler    |
        |                |
        |                |
        V                |
        compute<--------------------------


3 子服務作用及其交互
3.1 api服務
作用: 將長時任務()發送到conductor服務,將短時任務發送給compute服務。

3.2 conductor服務
作用: 對任務進行跟蹤和調度。
典型場景: 新建虛機或遷移時,會向scheduler請求符合要求的計算節點,然後將請求發送到最終的計算節點。

3.3 scheduler服務
1)作用: 篩選出最符合要求的計算節點返回給conductor服務。
2)調度器
FilterScheduler:默認的過濾調度器,根據過濾條件以及權重挑選最佳節點。
CachingScheduler: 將主機資源信息還存在本地,通過定時任務從數據庫獲取最新信息。
......
3)調度器緩存更新
nova-compute服務對主機數據更新到數據庫,nova-scheduler從數據庫獲取主機數據。
選擇最佳主機需要在內存中保存先前決策情況,在調度器內存維護緩存實現。
HostState會從數據庫和緩存更新主機數據,服務狀態等信息。
4)過濾
用指定的Filters過濾不符合條件的主機。
Filter類型:
主機可用資源: 內存/磁盤/CPU等
主機狀態: CPU使用率/虛擬機啓動數量等
......
RamFilter:根據內存可用情況,選擇內存足夠多的主機
ComputeFilter:選擇所有處於Active狀態的主機
......
5)權重
對符合條件的主機計算權重得到最佳的。

3.4 compute服務
1)作用: 負責與Hypervisor通信,實現虛擬機管理。
典型場景: 刪除虛機時,api通過消息告訴compute刪除指定虛機。
2)Resource Tracker
compute服務需要在數據庫更新主機資源使用情況(內存/CPU/磁盤),以便
scheduler服務作爲選擇主機依據。
使用ComputeNode保存計算節點配置和資源使用情況。
啓動compute服務時會爲主機創建Resource Tracker對象來監視本主機資源變化,
並更新ComputeNode對應的表compute_nodes。
3)更新ComputeNode途徑
Resource Tracker的Claim機制: 創建前測試主機可用資源是否滿足需要,滿足更新數據庫將主機可用資源中減去申請資源;失敗則還原
週期性任務: 更新主機資源數據。保證數據庫信息準確。

4 nova服務通信機制
nova-conductor, nova-scheduler, nova-compute通信基於消息隊列的RPC遠程過程調用。
上述服務啓動會註冊RPC server。

5 nova創建虛機流程
s1: api服務監聽到創建虛機請求並轉換爲消息,校驗合法則分配虛機id,在數據庫中記錄狀態,調用conductor服務
s2: conductor服務接受該消息,彙總虛機參數,讓scheduler選擇最合適的主機
s3: conductor知道目標主機後,要求compute創建虛機。
s4: compute檢查主機是否有足夠資源,足夠則啓動虛機並更新數據庫虛機狀態,將主機資源使用情況
更新到數據庫;不符,則發送請求給conductor服務來重試整個調度過程。

6 冷遷移與Resize
6.1)概念
遷移: 將虛機從一個計算節點遷移到另一個節點。
冷遷移: 遷移過程中虛機可能時管及或不可用
熱遷移: 保證虛機運行
Resize: 調整虛機計算能力
Resize與冷遷移流程想通,Resize保證新的Flavor大於原來的Flavor,冷遷移則兩者想通。

6.2)Resize流程
s1: api將虛機狀態修改爲RESIZE_PREP,並通過rpc調用conductor
s2: conductor生成request_spec對象,調用scheduler選擇合適目標主機
s3: conductor調用目標主機compute,目標主機通過Resource Tracker的Claim
檢測主機是否滿足條件。
s4: 通過RPC回到源主機,由源主機的compute服務完成遷移。
源主機的compute獲取虛機磁盤/網絡,使用cp/scp複製待遷移資源到目標主機,修改虛機
狀態爲RESIZE_MIGRATED,通過RPC到目標主機上完成虛機RESIZE。

7 熱遷移
1) 概念
含義: 虛機在工作情況下從一個計算節點遷移到另外節點。
本質: 業務不中斷條件下將虛機內存複製到目標主機。遷移最後時刻,虛機短暫掛起,完成最後一次內存複製。
掛起虛機本質: 改變vcpu調度,不可虛機可用物理cpu時間片。

2)熱遷移流程
s1: api通過rpc調用conductor發送熱遷移消息
s2: conductor向scheduler服務發送rpc請求獲知目標主機,並進行
虛機是否活躍,host是否ip等檢查
s3: conductor向目標主機發送請求檢查是否可以熱遷移到目標主機
s4: 目標主機向宿主機發送請求是否可以熱遷移宿主機
s5: 宿主機進行熱遷移

8 掛起和恢復
Suspend: 會通知虛機,虛機內部進行掛起(例如掛起網卡/磁盤等), Resume:虛機主動恢復 
Pause: 虛機被動,Hypervisor直接從CPU調度掛起虛機,虛機感知不到。Unpause:恢復暫停。


9 重建和驅逐
rebuild:重建,系統重裝但是配置不變
evacuate: openstack高可用,節點宕機會將這個節點上運行的虛機轉移到另一個節點。

參考:
OpenStack設計與實現(第二版)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章