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