Nova

一:簡介

    一、概念

       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、密匙和配額管理