一:簡介
一、概念
1. Nova和Swift是OpenStack最早的兩個組件,nova分為控制節點和計算節點。
2. 計算節點通過Nova Computer進行虛擬機創建,通過libvirt調用kvm創建虛擬機,nova之間通信通過rabbitMQ隊列進行通信。
3. Nova位於Openstack架構的中心,其他服務或者組件(比如Glance、Cinder、Neutron等)對它提供支持,另外它本身的架構也比較復雜。
二、作用
1. Nova是OpenStack最核心的服務模塊,負責管理和維護雲計算環境的計算資源,負責整個雲環境虛擬機生命周期的管理。
2. Nova是OpenStack的計算服務,負責維護和管理的網絡和存儲,提供計算服務。
三、體系結構
二:組件
一、nova-api:實現了RESTful API功能,是外部訪問Nova的唯一途徑。接收外部的請求並通過Message Queue將請求發送給其他的服務組件,同時也兼容EC2 API,所以也可以用EC2的管理工具對nova進行日常管理。
二、nova-scheduler:決策虛擬機創建在哪個主機(計算節點)上。決策一個虛擬機應該調度到某物理節點,需要分為兩個步驟:
1. 過濾(filter):過濾出可以創建虛擬機的主機。
2. 計算權值(weight):根據權重大小進行分配,默認根據資源可用空間進行權重排序。
三、nova-compute:負責虛擬機的生命周期管理,創建並終止虛擬機實例的工作后台程序hypervisor api
四、nova-conductor:計算節點訪問數據的中間件,nova-compute服務和數據庫之間的中間件。它消除了對雲數據庫的直接訪問。
五、nova-api-metadata:從實例中接收元數據請求。nova-api-metadata服務通常在nova-network安裝時使用的是多宿主模式運行。
六、nova-placement-api:跟蹤每個計算提供者的倉庫和使用情況。
七、nova-consoleauth:用於控制台的授權驗證,授權控制台代理提供的用戶令牌。此服務必須運行用於控制台代理工作。您可以運行任何類型的代理,而不是集群配置中的單nova-consoleauth服務。
八、Queue:在守護進程之間傳遞消息的中心。通常使用RabbitMQ也可以用另一個基於AMQP的消息隊列,例如ZeroMQ。
三:工作流程
1. 界面或命令行通過RESTful API向keystone獲取認證信息。
2. keystone通過用戶請求認證信息,正確后生成token返回給對應的認證請求。
3. 界面或命令行通過RESTful API向nova-api發送一個創建虛擬機的請求(攜帶token)。
4. nova-api接受請求后向keystone發送認證請求,查看token是否為有效用戶。
5. keystone驗證token是否有效,如有效則返回有效的認證和對應的角色(注:有些操作需要有角色權限才能操作)。
6. 通過認證后nova-api檢查創建虛擬機參數是否有效合法后和數據庫通訊。
7. 當所有的參數有效后初始化新建虛擬機的數據庫記錄。
8. nova-api通過rpc.call向nova-scheduler請求是否有創建虛擬機的資源(Host ID)。
9. nova-scheduler進程偵聽消息隊列,獲取nova-api的請求。
10. nova-scheduler通過查詢nova數據庫中計算資源的情況,並通過調度算法計算符合虛擬機創建需要的主機。
11. 對於有符合虛擬機創建的主機,nova-scheduler更新數據庫中虛擬機對應的物理主機信息。
12. nova-scheduler通過rpc.cast向nova-compute發送對應的創建虛擬機請求的消息。
13. nova-compute會從對應的消息隊列中獲取創建虛擬機請求的消息。
14. nova-compute通過rpc.call向nova-conductor請求獲取虛擬機消息。
15. nova-conductor從消息隊隊列中拿到nova-compute請求消息。
16. nova-conductor根據消息查詢虛擬機對應的信息。
17. nova-conductor從數據庫中獲得虛擬機對應信息。
18. nova-conductor把虛擬機信息通過消息的方式發送到消息隊列中。
19. nova-compute從對應的消息隊列中獲取虛擬機信息消息。
20. nova-compute通過keystone的RESTfull API拿到認證的token,並通過HTTP請求glance-api獲取創建虛擬機所需要鏡像。
21. glance-api向keystone認證token是否有效,並返回驗證結果。
22. token驗證通過,nova-compute獲得虛擬機鏡像信息(URL)。
23. nova-compute通過keystone的RESTfull API拿到認證k的token,並通過HTTP請求neutron-server獲取創建虛擬機所需要的網絡信息。
24. neutron-server向keystone認證token是否有效,並返回驗證結果。
25. token驗證通過,nova-compute獲得虛擬機網絡信息。
26. nova-compute通過keystone的RESTfull API拿到認證的token,並通過HTTP請求cinder-api獲取創建虛擬機所需要的持久化存儲信息。
27. cinder-api向keystone認證token是否有效,並返回驗證結果。
28. token驗證通過,nova-compute獲得虛擬機持久化存儲信息。
29. nova-compute根據instance的信息調用配置的虛擬化驅動來創建虛擬機。
四:常用操作
一、生命周期和虛擬機管理
二、雲主機類型和安全組管理
三、網絡、浮動IP、密匙和配額管理