OpenStack(四)——Nova组件
生活随笔
收集整理的這篇文章主要介紹了
OpenStack(四)——Nova组件
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
OpenStack(四)——Nova組件
- 一、Nova計算服務
- 二、Nova的架構
- 三、Nova組件介紹
- 1、API
- 2、Scheduler
- ①、Nova調度器類型
- ②、調度器調度過程
- 3、Compute
- ①、主要功能
- ②、工作過程
- 4、Conductor
- 5、PlacementAPI
- 四、Nova的Cell架構
- 1、單cell架構
- 舉例:創建虛擬機
一、Nova計算服務
- 計算服務是openstack最核心的服務之一,負責維護和管理云環境的計算資源,它在openstack項目中代號是nova。
- Nova自身并沒有提供任何虛擬化能力,它提供計算服務,使用不同的虛擬化驅動來與底層支持的Hypervisor(虛擬機管理器)進行交互。所有的計算實例(虛擬服務器)由Nova進行生命周期的調度管理(啟動、掛起、停止、刪除等)
- Nova需要keystone、glance、neutron、cinder和swift等其他服務的支持,能與這些服務集成,實現如加密磁盤、裸金屬計算實例等。
二、Nova的架構
- DB:用于數據存儲的sql數據庫
- API:用于接收HTTP請求、轉換命令、通過消息隊列或HTTP與其他組件通信的nova組件
- Scheduler:用于決定哪臺計算節點承載計算實例的nova調度器
- Network:管理IP轉發、網橋或虛擬局域網的nova網絡組件
- Compute:管理虛擬機管理器與虛擬機支架你通信的nova計算組件
- Conductor:處理需要協調(構建虛擬機或調整虛擬機大小)的請求,或處理對象轉換
三、Nova組件介紹
1、API
- API是客戶訪問nova的http接口,它由nova-api服務實現,nova-api服務接收和響應來自最終用戶的計算api請求。作為openstack對外服務的最主要接口,nova-api提供了一個集中的可以查詢所有api的端點。
- 所有對nova的請求都首先由nova-api處理。API提供REST標準調用服務,便于與第三方系統集成。
- 最終用戶不會直接改送RESTful API請求,而是通過openstack命令行、dashbord和其他需要跟nova交換的組件來使用這些API。
- 只要跟虛擬機生命周期相關的操作,nova-api都可以響應
- Nova-api對接收到的HTTP API請求做以下處理:
- 檢查客戶端傳入的參數是否合法有效
- 調用nova其他服務來處理客戶端HTTP請求
- 格式化nova其他子服務返回結果并返回給客戶端
- Nova-api是外部訪問并使用nova提供的各種服務的唯一途徑,也是客戶端和nova之間的中間層
2、Scheduler
- Scheduler可譯為調度器,由nova-scheduler服務實現,主要解決的是如何選擇在哪個計算節點上啟動實例的問題。它可以應用多種規則,如果考慮內存用率、cpu負載率、cpu構架(intel/amd)等多種因素,根據一定的算法,確定虛擬機實例能夠運行在哪一臺計算服務器上。Nova-scheduler服務會從隊列中接收一個虛擬機實例的請求,通過讀取數據庫的內容,從可用資源池中選擇最合適的計算節點來創建的虛擬機實例。
- 創建虛擬機實例時,用戶會提出資源需求,如cpu、內存、磁盤各需要多少。Openstack將這些需求定義在實例類型中,用戶只需指定使用哪個實例類型就可以了
①、Nova調度器類型
- 隨機調度器(chance scheduler):從所有正常運行nova-compute服務的節點中隨機選擇。
- 過濾器調度器(filter scheduler):根據指定的過濾條件以及權重選擇最佳的計算節點。Filter又稱為篩選器
- 緩存調度器(caching scheduler):可看作隨機調度器的一種特殊類型,在隨機調度的基礎上將主機資源信息緩存在本地內存中,然后通過后臺的定時任務定時從數據庫中獲取最新的主機資源信息。
②、調度器調度過程
- 【1】通過指定的過濾器選擇滿足條件的計算節點,比如內存使用率小于50%,可以使用多個過濾器依次進行過濾。
- 【2】對過濾之后的主機列表進行權重計算并排序,選擇最他的計算節點來創建虛擬機實例。
3、Compute
①、主要功能
- Nova-compute在計算節點上運行,負責管理節點上的實例。通常一個主機運行一個Nova-compute服務,一個實例部署在哪個可用的主機上取決于調度算法。OpenStack對實例的操作,最后都是提交給Nova-compute來完成。
- Nova-compute可分為兩類,一類是定向openstack報告計算節點的狀態,另一類是實現實例生命周期的管理。
簡單來說:
1、負責執行具體的與實例生命周期/管理實例相關的工作
2、報告節點狀態(寫入數據庫,保證scheduler讀取數據庫,數據庫信息的實時性、celimetor,監控和管理openstack實例資源并匯入給用戶/openstack本身/運維人員)
②、工作過程
- 定期向OpenStack報告計算節點的狀態
- 每隔一段時間,nova-compute就會報告當前計算節點的資源使用情況和nova-compute服務狀態。
- nova-compute是通過Hypervisor的驅動獲取這些信息的。
- 實現虛擬機實例生命周期的管理
- OpenStack對虛擬機實例最主要的操作都是通過nova-compute實現的。
- 創建、關閉、重啟、掛起、恢復、中止、調整大小、遷移、快照
- 以實例創建為例來說明nova-compute的實現過程。
- 為實例準備資源
- 創建實例的鏡像文件
- 創建實例的XML定義文件
- 創建虛擬網絡并啟動實例
4、Conductor
- 由nova-conductor模塊實現,旨在為數據庫的訪問提供一層安全保障。Nova-conductor作為nova-compute服務與數據庫之間交互的中介,避免了直接訪問由nova-compute服務創建對接數據庫。
- Nova-compute訪問數據庫的全部操作都改到novaconductor中,nova-conductor作為對數據庫操作的一個代理,而且nova-conductor是部署在控制節點上的。
- Nova-conductor有助于提高數據庫的訪問性能,nova-compute可以創建多個線程使用遠程過程調用(RPC)訪問nova-conductor。
- 在一個大規模的openstack部署環境里,管理員可以通過增加nova-conductor的數量來應付日益增長的計算節點對數據庫的訪問量
5、PlacementAPI
- 以前對資源的管理全部由計算節點承擔,在統計資源使用情況時,只是簡單的將所有計算節點的資源情況累加起來,但是系統中還存在外部資源,這些資源由外部系統提供。如ceph、nfs等提供的存儲資源等。面對多種多樣的資源提供者,管理員需要統一的、簡單的管理接口來統計系統中資源使用情況,這個接口就是PlacementAPI。
- PlacementAPl由nova-placement-api服務來實現,旨在追蹤記錄資源提供者的目錄和資源使用情況。
- 被消費的資源類型是按類進行跟蹤的。如計算節點類、共享存儲池類、IP地址類等。
四、Nova的Cell架構
- 當openstack nova集群的規模變大時,數據庫和消息隊列服務就會出現瓶頸問題。Nova為提高水平擴展及分布式、大規模的部署能力,同時又不增加數據庫和消息中間件的復雜度,引入了Cell概念。
- Cell可譯為單元。為支持更大規模的部署,openstack較大的nova集群分成小的單元,每個單元都有自己的消息隊列和數據庫,可以解決規模增大時引起的瓶頸問題。在Cell中,Keystone、Neutron、Cinder、Glance等資源是共享的。
- API節點上的數據庫
- nova_api數據庫中存放全局信息,這些全局數據表是從nova庫遷過來的,如flavor (實例模型) 、 instance groups (實例組)、quota (配額)
- nova_cello數據庫的模式與nova一樣,主要用途就是當實例調度失敗時,實例的信息不屬于任何一個Cell,因而存放到nova_cell0數據庫中。
1、單cell架構
舉例:創建虛擬機
- Nova-api 接收、響應請求
- 交給conductor處理/協調
- conductor——》scheduler調度器——》最適合創建虛擬機的節點
- 如果scheduler調度失敗
- 將調度失敗的信息,存放在cell0中
- nova-api會讀取cell0數據庫,獲取到失敗的信息/原因,返回給客戶端
- 如果scheduler調度成功
- conductor就會將這個任務交給cell1處理(rabbitmq-cell接收、響應)
- rabbitmq-cell——》conductor-cell——》交給節點上的compute進行具體創建——》compute匯報給cell1數據庫——》響應給conductor-cell——》rabbitmq-cell——》nova的conductor
- nova-conductor接收到cell的返回之后,保存在api數據庫中(保存實例創建成功的信息)
- nova-api組件,會讀取api數據庫,返回/響應給客戶端
總結
以上是生活随笔為你收集整理的OpenStack(四)——Nova组件的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 硬盘、内存和速度:计算机性能的三大关键
- 下一篇: 内存问题?别慌,看我怎么解决