OpenStack入門之核心組件梳理(2)——Nova篇-創(chuàng)新互聯(lián)

OpenStack入門之核心組件梳理(2)——Nova篇

前言

? 上篇文章我們從概念到原理,層層遞進(jìn)深入講述了Keystone項(xiàng)目,而本文旨在繼續(xù)介紹OpenStack核心組件之一的Nova組件項(xiàng)目。

創(chuàng)新互聯(lián)公司是專業(yè)的唐山網(wǎng)站建設(shè)公司,唐山接單;提供網(wǎng)站建設(shè)、網(wǎng)站設(shè)計(jì),網(wǎng)頁設(shè)計(jì),網(wǎng)站設(shè)計(jì),建網(wǎng)站,PHP網(wǎng)站建設(shè)等專業(yè)做網(wǎng)站服務(wù);采用PHP框架,可快速的進(jìn)行唐山網(wǎng)站開發(fā)網(wǎng)頁制作和功能擴(kuò)展;專業(yè)做搜索引擎喜愛的網(wǎng)站,專業(yè)的做網(wǎng)站團(tuán)隊(duì),希望更多企業(yè)前來合作!

? 相對于Keystone項(xiàng)目,Nova項(xiàng)目是作為OpenStack這個大開源項(xiàng)目最早也是最成熟的項(xiàng)目,從這一層面上也體現(xiàn)出Nova項(xiàng)目所提供的計(jì)算服務(wù)從始至終都是OpenStack最為核心的部分,筆者在之前的文章中談到OpenStack這一開源項(xiàng)目所提供和管理的三大資源就是計(jì)算、網(wǎng)絡(luò)和管理。這同樣也是云計(jì)算的核心部分。

? 從筆者個人理解和觀點(diǎn)來看的話,對于OpenStack而言,其真正的靈魂(可以理解為OpenStack中組件的復(fù)雜程度、使用概率以及故障出現(xiàn)概率等方面)一是在于宏觀(這里“宏觀的意思是相對早期版本的OpenStack平臺而言”)的Nova(計(jì)算服務(wù)),二是在于相對其他服務(wù)最為復(fù)雜的Neutron網(wǎng)絡(luò)服務(wù)(之后的文章也會針對該組件進(jìn)行詳細(xì)介紹),這里不包括CEPH分布式存儲,因?yàn)镃EPH本身就是可以認(rèn)為是一個獨(dú)立的大項(xiàng)目,其作用不僅僅是OpenStack中Swift(對象存儲服務(wù))的高效分布式集群存儲的替代,還包括與其他技術(shù)的結(jié)合和支持等作用。但是無論在實(shí)驗(yàn)環(huán)境還是生產(chǎn)環(huán)境部署OpenStack云平臺基本上選擇CEPH作為分布式存儲服務(wù),當(dāng)然在此個人補(bǔ)充一下,若是要進(jìn)行OpenStack實(shí)驗(yàn)環(huán)境部署的話,對PC所配的硬件資源要求還是比較高的,包括CPU、內(nèi)存、存儲(最好是SSD),筆者所配的基礎(chǔ)硬件資源是i79代CPU、32G內(nèi)存(三級緩存達(dá)到9M)、1T的SSD M.2接口的固態(tài)盤,網(wǎng)絡(luò)是家用百兆寬帶,當(dāng)然在實(shí)驗(yàn)環(huán)境中未必需要過高的配置,可以相對降低一些要求,不過如果要想體驗(yàn)感較好的話還是高配比較好,如果是決定從事這一方向的工作人員,可以購置服務(wù)器來模擬生產(chǎn)環(huán)境,這對初學(xué)者并不推薦哈。

?閑話就不再多說了,接下來筆者將從其概念概述、主要組件、架構(gòu)模式、工作原理四個方面介紹Nova項(xiàng)目。

一、Nova概述與發(fā)展

1.1 Nova概念介紹

? Nova項(xiàng)目,作為OpenStack核心項(xiàng)目,提供著十分重要的計(jì)算服務(wù),雖說在其發(fā)展過程中,部分核心組件在后來獨(dú)立成為其他的核心項(xiàng)目及服務(wù),但是Nova自身的核心地位也是非常之高的,因?yàn)榱私釵penStack基礎(chǔ)理論的朋友都知道OpenStack作為一種IaaS(基礎(chǔ)設(shè)施即服務(wù))的云計(jì)算服務(wù),其最為核心的服務(wù)資源就是計(jì)算、存儲和網(wǎng)絡(luò),而計(jì)算服務(wù)居于首位,在OpenStack云平臺部署上,則正是通過Nova項(xiàng)目實(shí)現(xiàn)其計(jì)算服務(wù)的。

? 之所以前言部分從宏觀角度說Nova項(xiàng)目對于OpenStack是最核心也的項(xiàng)目之一是有其具體原因的。在早期的OpenStack版本中,項(xiàng)目并不是一次規(guī)劃好的,而Nova項(xiàng)目在初期就將存儲和網(wǎng)絡(luò)包含于自身,及nova-volume和nova-network模塊,即后期獨(dú)立出的Cinder(塊存儲服務(wù))和Neutron(網(wǎng)絡(luò)服務(wù))。

1.2 Nova發(fā)展歷程及具體作用

? Nova項(xiàng)目從最初為云供應(yīng)商提供實(shí)現(xiàn)IaaS服務(wù)的解決方案的初衷,到如今聚焦于大規(guī)??蓴U(kuò)展、高可用、可彈性伸縮服務(wù)和自助服務(wù)的目標(biāo),Nova一直在被優(yōu)化改進(jìn)升級。在2010年OpenStack項(xiàng)目成立之初,Nova項(xiàng)目主要分為Nova-Compute、Nova-volume和Nova-network三大功能模塊。在2012年9月OpenStack的Folsom版本發(fā)行時,OpenStack社區(qū)才將Nova-volume和Nova-network獨(dú)立出來分別構(gòu)建了Cinder和Quantum項(xiàng)目(后因商標(biāo)原因更名為Neutron項(xiàng)目)。

? 綜上而言,Nova作為核心項(xiàng)目,在Linux服務(wù)器上作為一組守護(hù)程序運(yùn)行。當(dāng)然也需要依賴其他服務(wù)從而實(shí)現(xiàn)功能,下面講解原理會著重介紹。其具體的功能主要是:負(fù)責(zé)管理實(shí)例虛擬機(jī)的生命周期、網(wǎng)絡(luò)管理、存儲卷管理。Nova支持創(chuàng)建虛擬機(jī)、裸機(jī)服務(wù)器(通過使用ironic),并且Nova計(jì)算資源的使用限額以項(xiàng)目為單位進(jìn)行限制。

?

二、Nova的主要組件

? Nova同Keystone一樣,有組成自身的功能模塊。其是由負(fù)責(zé)不同功能的服務(wù)進(jìn)程構(gòu)成,Nova對外提供的服務(wù)接口為REST API,其內(nèi)部組件模塊之間的通信基于RPC(遠(yuǎn)程過程調(diào)用)消息傳遞機(jī)制的。

? 下面來看一下組成Nova的一些主要組件:

2.1 Nova-API

? Nova API服務(wù)組件。接收并響應(yīng)最終用戶的計(jì)算API調(diào)用請求,當(dāng)其接收到請求后,通常將請求轉(zhuǎn)發(fā)給Nova的其他組件進(jìn)行處理,例如Nova-scheduler。

? 其遵循特定的策略并初始化大部分的編排操作,例如創(chuàng)建實(shí)例。

2.2 Nova-API-Metadata

? Nova API服務(wù)組件。Nova-API-Metadata服務(wù)主要是用于接收來自實(shí)例的元數(shù)據(jù)請求。

2.3 Nova-Compute

? Nova核心服務(wù)組件。Nova-Compute是一個通過Hypervisor API創(chuàng)建和終止實(shí)例的工作進(jìn)程(在后面的架構(gòu)中將涉及Hypervisor)。先前筆者對OpenStack節(jié)點(diǎn)類型介紹過程中有所提及,當(dāng)時考慮到理解程度問題,沒有細(xì)說。這里做一下詳細(xì)說明。

? 在我們部署OpenStack的計(jì)算服務(wù)時,通常選擇將Nova-Compute單獨(dú)部署在支持虛擬化的物理服務(wù)器上,我們將這個物理服務(wù)器稱作為計(jì)算節(jié)點(diǎn)。而常見的Hypervisor API有支持KVM/QEMU虛擬化引擎的Libvirt API、適用于XenServer / XCP虛擬化引擎的XenAPI以及支持VMware虛擬化引擎的VMware API。一般情況下,OpenStack默認(rèn)使用的是KVM虛擬化引擎,因此在Nova-Compute中最常用的還是Libvirt API。

? 總之,Nova-Compute主要功能就是接收來自消息隊(duì)列的請求,然后執(zhí)行對應(yīng)的系統(tǒng)命令的。例如啟動KVM實(shí)例并更新其在數(shù)據(jù)庫中的狀態(tài)。

2.4 Nova-Scheduler

? Nova核心服務(wù)組件。主要負(fù)責(zé)從隊(duì)列中獲取虛擬機(jī)實(shí)例請求,并確定其在哪臺計(jì)算節(jié)點(diǎn)主機(jī)上運(yùn)行。其采用的是過濾計(jì)算節(jié)點(diǎn)算法,即根據(jù)計(jì)算節(jié)點(diǎn)的CPU、內(nèi)存和磁盤等參數(shù)進(jìn)行篩選過濾。用戶也可以通過自定義編輯nova.conf文件來指定過濾算法。

2.5 Nova-Conductor

? Nova核心服務(wù)組件。Nova-Conductor 主要是為了使Nova-Compute服務(wù)與數(shù)據(jù)庫(云數(shù)據(jù)庫)之間進(jìn)行交互。也就是說,有了Nova-Conductor,在實(shí)際運(yùn)行中,消除了Nova-Compute服務(wù)對云數(shù)據(jù)庫的直接訪問,而是通過Nova-Conductor實(shí)現(xiàn)對數(shù)據(jù)庫的訪問。

? 此外,該組件支持水平擴(kuò)展到多個節(jié)點(diǎn)上同時運(yùn)行(Nova在水平擴(kuò)展時采用的是Cell的部署方式),但是不能將之部署到運(yùn)行Nova-Compute的計(jì)算節(jié)點(diǎn)上,否則無法實(shí)現(xiàn)Nova-Compute與數(shù)據(jù)庫之間的隔離。

2.6 Nova-Cert

? Nova核心服務(wù)組件。Nova-Cert是服務(wù)器守候進(jìn)程,主要為基于X509認(rèn)證的Nova Cert提供服務(wù)。

2.6 Nova-NoVNCproxy

? 屬于虛擬機(jī)控制臺服務(wù)。主要是提供用于通過VNC連接訪問正在運(yùn)行的實(shí)例的代理。支持基于瀏覽器的NoVNC客戶端。

2.7 Nova-Spicehtml5proxy

? 屬于虛擬機(jī)控制臺服務(wù)。主要提供用于通過SPICE連接訪問正在運(yùn)行的實(shí)例的代理。支持基于瀏覽器的HTML5客戶端。Spice是Redhat開源虛擬化桌面的主要組件之一,能夠提供與物理桌面完全相同的最終用戶體驗(yàn),Open-Stack官方文檔默認(rèn)使用的虛擬機(jī)桌面訪問方式為NoVNC,如果用戶需要開啟SPICE協(xié)議,則需要將NoVNC關(guān)閉。

2.8 QUEUE

? Nova之外的核心組件。組件進(jìn)程間消息交換傳遞的中心,一般用RabbitMQ實(shí)現(xiàn)。

2.9 Datebase

? Nova之外的核心組件。存儲基礎(chǔ)架構(gòu)中對象的創(chuàng)建時和運(yùn)行時的狀態(tài),包括:

  • 可用的實(shí)例類型;
  • 使用中的實(shí)例;
  • 可用網(wǎng)絡(luò);
  • 項(xiàng)目。

? 從理論上講,OpenStack Compute可以支持SQLAlchemy支持的任何數(shù)據(jù)庫。常見的數(shù)據(jù)庫是用于測試和開發(fā)工作的SQLite3,MySQL,MariaDB和PostgreSQL。

? 溫馨提示:對于初學(xué)者理解Nova組件,重點(diǎn)在于理解前面的6個組件。

三、Nova的架構(gòu)理解

3.1 Nova邏輯架構(gòu)圖梳理

? 上兩小節(jié)主要介紹了Nova項(xiàng)目的概念作用以及組成,本小節(jié)來看一下這些組成之間的聯(lián)系,即Nova的邏輯架構(gòu)示意圖。

OpenStack入門之核心組件梳理(2)——Nova篇

? 該架構(gòu)圖表示的是OpenStack 提供的計(jì)算服務(wù),該服務(wù)是由Nova項(xiàng)目的各個功能組件模塊一起支持的。

? 其中大部分組件在上一小節(jié)進(jìn)行了介紹,其中,nova-consoleauth也是屬虛擬機(jī)控制臺的服務(wù),主要為虛擬機(jī)控制臺連接提供認(rèn)證授權(quán)服務(wù)的,萬萬不要將其與右上角的nova-console混淆,nova-console是XenAPI風(fēng)格的控制臺服務(wù),對于多數(shù)VNC代理軟件,該組件幾乎不再使用。

? 針對上圖可能對其中右下角的Hypervisor有所迷惑。同上文提及的Cell一樣,這里不可能三言兩語將這兩者解釋清楚,筆者在這里主要針對其作用進(jìn)行說明。

? Hypervisor呢,是運(yùn)行于物理服務(wù)器和操作系統(tǒng)之間的軟件層,主要是調(diào)度客戶機(jī)系統(tǒng)對共享的物理硬件資源的使用請求,是虛擬化的基礎(chǔ),也是云計(jì)算的核心基礎(chǔ)。所以上述的Nova-Compute組件就是依賴于Hypervisor API的調(diào)用來實(shí)現(xiàn)實(shí)例的創(chuàng)建以及終止的。

? 而cell呢,該功能模塊主要是為了解決大規(guī)模Nova計(jì)算節(jié)點(diǎn)部署過程中的集群瓶頸問題,該問題涉及到傳統(tǒng)集群架構(gòu)與云計(jì)算架構(gòu)之間的區(qū)別了,有興趣的朋友可以進(jìn)行資料查閱。該問題就是共享消息隊(duì)列系統(tǒng)的性能在大規(guī)模的計(jì)算節(jié)點(diǎn)部署集群(上百個,500個以上)大大降低。而有了Cell模塊,就基具備支持OpenStack計(jì)算節(jié)點(diǎn)水平擴(kuò)展和大規(guī)模部署的能力,本文重點(diǎn)并不再次,關(guān)于Cell的具體原理和實(shí)現(xiàn)的過程在這里就不做詳細(xì)介紹了。

? 此外,通過該架構(gòu)邏輯圖,可以發(fā)現(xiàn),在Nova通過相應(yīng)的服務(wù)的時候,各個組件服務(wù)之間的通信都是經(jīng)過QUEUE實(shí)現(xiàn)的,一般默認(rèn)是RabbitMQ。其實(shí),通過前面的幾篇文章,不難發(fā)現(xiàn)一些規(guī)律(個人的理解或者說是發(fā)現(xiàn)),在OpenStack中,大多數(shù)情況下,通信一般默認(rèn)使用的的是消息隊(duì)列進(jìn)行的,數(shù)據(jù)庫默認(rèn)為Mariadb數(shù)據(jù)庫,調(diào)用接口一般基于REST風(fēng)格的RESTful API進(jìn)行調(diào)用。

? 上圖僅僅是Nova項(xiàng)目自身的架構(gòu)圖,那么Nova和其他服務(wù)是怎樣的架構(gòu)呢?其實(shí)上篇文章在講述Keystone工作響應(yīng)流程時所舉案例包含了Nova所提供的服務(wù)功能。這里不多敘述。

? 這里穿插一些關(guān)于Cinder和Neutron項(xiàng)目的結(jié)構(gòu)和組件來說明一下Nova與這兩者之間的邏輯架構(gòu)。

3.2 Nova與Cinder、Neutron之間的邏輯架構(gòu)

? 為什么將這三者的邏輯架構(gòu)在這里給出呢?一方面是加深對Nova的理解,理解其與其他一些項(xiàng)目之間的聯(lián)系,例如通信方式等等,另一方面就是Nova的發(fā)展了,前文說過最初的OpenStack項(xiàng)目,Nova是包含塊存儲和網(wǎng)絡(luò)的,如今將這二者獨(dú)立出來,成為兩個項(xiàng)目,分別對應(yīng)OpenStack Block Service 和 OpenStack Networking服務(wù)。

OpenStack入門之核心組件梳理(2)——Nova篇

? 如果對Cinder和Neutron組件不熟悉也沒關(guān)系,這邊主要理解上圖中的三根虛線的含義即可。第四小節(jié)將會通過案例來簡述Nova的工作原理。

? 其中,最上面的一條虛線表示的是Nova-Compute與網(wǎng)絡(luò)服務(wù)Neutron-server之間的通信關(guān)系,Neutron-server是OpenStack網(wǎng)絡(luò)服務(wù)提供相應(yīng)的API作為訪問Neutron的入口,這表示Nova需要使用Neutron提供的網(wǎng)絡(luò)服務(wù)為虛擬機(jī)實(shí)例之間和虛擬機(jī)實(shí)例與外網(wǎng)之間的通信提供服務(wù);

? 下面兩條虛線表示的是Nova服務(wù)與塊存儲服務(wù)之間的通信方式,由cinder中volume和scheduler提供接口與之通信,這表示Nova需要使用Cinder服務(wù)提供塊存儲服務(wù)作為虛擬機(jī)實(shí)例的磁盤。筆者后期持續(xù)更新對各個核心項(xiàng)目的文章中,將會詳細(xì)介紹Cinder以及Neutron項(xiàng)目等其他項(xiàng)目的相關(guān)知識。

?

溫馨提示:AMPQ :高級消息隊(duì)列協(xié)議,可以理解為一種通信協(xié)議。

四、Nova的工作原理

? 其實(shí)上文也多多少少涉及了Nova的工作流程以及些許原理,這里通過一個案例結(jié)合圖示來講述理解Nova內(nèi)部的工作機(jī)制。

? 假設(shè)需要用戶需要創(chuàng)建一個虛擬機(jī)的場景,這里涉及到的其他項(xiàng)目提供的服務(wù)就盡量跳過了,方便理解:

OpenStack入門之核心組件梳理(2)——Nova篇

  1. 用戶通過控制臺(也可以是命令行等其他方式)獲取認(rèn)證后向Nova服務(wù)中的Nova-api發(fā)送一個"請為我創(chuàng)建一個虛擬機(jī)實(shí)例"的請求;
  2. Nova-api接收到請求后進(jìn)行身份驗(yàn)證,之后進(jìn)行必要的處理,然后將創(chuàng)建虛擬機(jī)實(shí)例的消息存到隊(duì)列中;
  3. Nova-scheduler從消息隊(duì)列中接收到消息,開始進(jìn)行調(diào)度,從諸多個計(jì)算節(jié)點(diǎn)中選擇一個節(jié)點(diǎn),并且將"允許在計(jì)算節(jié)點(diǎn)1上創(chuàng)建虛擬機(jī)實(shí)例"的信息存放到隊(duì)列中;
  4. 計(jì)算節(jié)點(diǎn)1的Nova-compute獲取該信息后再自身節(jié)點(diǎn)上開始執(zhí)行創(chuàng)建虛擬機(jī)的操作;
  5. 創(chuàng)建虛擬機(jī)的同時,計(jì)算節(jié)點(diǎn)可以通過消息隊(duì)列向Nova-Conductor發(fā)送查詢數(shù)據(jù)庫的信息的消息,那么Conductor收到該信息后就會去訪問數(shù)據(jù)庫并給出回應(yīng)消息;

? 通過上面的案例將Nova的組件之間的關(guān)系梳理的同時,針對其內(nèi)部工作原理進(jìn)行理解。

? 不過在實(shí)際的OpenStack系統(tǒng)運(yùn)行過程中,Nova計(jì)算服務(wù)是需要和其他的服務(wù)進(jìn)行交互的,例如通過與認(rèn)證授權(quán)服務(wù)Keystone交互從而實(shí)現(xiàn)身份權(quán)限的識別認(rèn)證過程,并通過OpenStack的鏡像服務(wù)Glance為實(shí)例提供系統(tǒng)鏡像,而用戶和云管理員則通過OpenStack的控制面板服務(wù)Horizon與Nova進(jìn)行交互等等。

五、Nova理論總結(jié)

? 本文主要介紹了Nova項(xiàng)目的概念概述、發(fā)展歷程,詳細(xì)介紹了Nova中核心組件的概念以及作用,給出了Nova自身的邏輯架構(gòu)圖以及其與塊存儲服務(wù)和網(wǎng)絡(luò)服務(wù)的邏輯架構(gòu)關(guān)系,最后通過一個簡單案例介紹Nova內(nèi)部的工作原理和工作過程。

?

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)cdcxhl.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價比高”等特點(diǎn)與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。

本文題目:OpenStack入門之核心組件梳理(2)——Nova篇-創(chuàng)新互聯(lián)
文章分享:http://muchs.cn/article34/dodope.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站收錄、自適應(yīng)網(wǎng)站、做網(wǎng)站、虛擬主機(jī)微信小程序、App開發(fā)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

外貿(mào)網(wǎng)站建設(shè)