三分鐘帶你入門瞭解openstack的Nova專案

一往無前,未來可期發表於2020-11-06

三分鐘帶你入門瞭解openstack的Nova專案

前言

一:Nova專案

1.1:什麼是Nova?有什麼作用?

  • Nova是負責提供計算資源的模組,也是OpenStack中的核心模組。OpenStack使用計算服務來託管和管理雲端計算系統
  • 主要功能是負責虛擬機器例項的生命週期管理、網路管理、儲存卷管理、使用者管理以及其他的相關雲平臺管理功能。

1.2:Nova有哪些重要服務元件?

  • Nova-api服務

    • 接收和響應來自終端使用者的計算API請求,對外提供一個與雲基礎設施互動的介面,也是外部可用於管理基礎設施的唯一元件
  • Nova-api-metadata服務

    接收來自虛擬機器傳送的後設資料請求,Nova-api-metadata服務一般在安裝Nova-Network服務的多主機模式下使用

  • Nova-Compute服務

    一個持續工作的守護程式,通過 Hypervisor的API來建立和銷燬虛擬機器例項

  • Nova- placement-api服務

    • 用於追蹤記錄資源提供者目錄和資源使用情況,這些資源包括計算、儲存以及IP地址池等。
  • Nova-Conductor模組

    用於Nova- Compute服務與資料庫之間,避免了由Nova- Compute服務對雲資料庫的直接訪問。它可以橫向擴充套件。但是,不要將它部署在執行Nova- Compute服務的主機節點上

  • Nova- Scheduler服務

    • 接收到一個來自佇列的執行虛擬機器例項請求,然後決定在哪臺計算伺服器主機來執行該虛擬機器。通過恰當的排程演算法從可用資源池獲得一個計算服務。Nova- Scheduler服務將根據負載、記憶體、可用域的物理距離、CPU構架等資訊,並執行排程演算法,最終做出排程決策
    • 最終OpenStack計算模組Nova中的各個元件是以資料庫和佇列為中心進行通訊的

1.3:Nova的後設資料工作機制是怎樣的?

mark

工作機制

  • 1、例項通過專案網路將後設資料請求傳送到neutron-ns-metadata-proxy,此時在請求中新增router-id和network-id

  • 2、neutron-ns-metadata-proxy通過unix domain socket將請求傳送給neutron-metadata-agent。此時根據請求中的router-id、network-id和IP,獲取埠資訊,從而獲得instance-id和project-id(tenant-id)並加入到請求中

  • 3、Neutron-metadata-agent通過內部管理網路將請求轉發給Nova-api-metadata。此時利用instance-id和project-id(tenant-id)獲取例項的後設資料

  • 4、將獲取的後設資料原路返回給發出請求的例項

  • 虛擬機器例項訪問後設資料服務

    計算節點為虛擬機器例項使用後設資料服務來獲取指定例項的後設資料

    後設資料和使用者資料都可以由例項訪問。只有頂–user-data選項和包含使用者內容的檔案被傳入到openstack server create命令,或者在圖形介面通過配置驅動器注入使用者資料時,才回出現像user_data這樣的使用者資料檔案,不過user_data不是JSON格式

1.4:VM例項化流程

  • 1、首先使用者執行Nova client提供的用於建立虛擬機器的命令
  • 2、Nova-api服務監聽到來自Nova client的HTTP請求,並將這些請求轉換為AMQP訊息之後加入訊息列隊
  • 3、通過訊息佇列呼叫Nova-conductor服務
  • 4、nova-conductor服務從訊息列隊中接收到虛擬機器例項化請求訊息後,進行一些準備工作
  • 5、nova-conductor服務通過訊息列隊告訴nova-scheduler服務去選擇一個合適的計算節點來建立虛擬機器,此時nova-scheduler會獲取資料庫的內容
    去選擇一個合適的計算節點來建立虛擬機器,此時nova-scheduler會獲取資料庫的內容
  • 6、nova-conductor服務從nova-scheduler服務得到了合適的計算節點的資訊後,在通過訊息佇列通知nova-compute服務實現虛擬機器的建立
    服務從nova-scheduler服務得到了合適的計算節點的資訊後,在通過訊息佇列通知nova-compute服務實現虛擬機器的建立

相關文章