XenServer架構(gòu)之XAPI-創(chuàng)新互聯(lián)

一、XAPI對資源池的管理

作為XenServer的管理工具集,XAPI管理XenServer的主機,網(wǎng)絡(luò)和存儲。不管是OpenStack還是CloudStack,如果使用XenServer作為虛擬化底層,其對XenServer的調(diào)用必然使用XAPI。真正意義上的XAPI在XenServer中主要提供XenCenter以及資源池中各個XenServer主機的通信的接口。

公司專注于為企業(yè)提供網(wǎng)站制作、做網(wǎng)站、微信公眾號開發(fā)、購物商城網(wǎng)站建設(shè)微信小程序開發(fā),軟件按需開發(fā)網(wǎng)站等一站式互聯(lián)網(wǎng)企業(yè)服務(wù)。憑借多年豐富的經(jīng)驗,我們會仔細(xì)了解各客戶的需求而做出多方面的分析、設(shè)計、整合,為客戶設(shè)計出具風(fēng)格及創(chuàng)意性的商業(yè)解決方案,成都創(chuàng)新互聯(lián)更提供一系列網(wǎng)站制作和網(wǎng)站推廣的服務(wù)。

首先,資源池中的所有XenServer主機的操作請求都是通過XAPI傳遞給Dom0的,同時在池中的所有XenServer主機間的通信也是通過XPAI進(jìn)行傳遞。例如:資源池中數(shù)據(jù)庫(XenServer配置數(shù)據(jù)庫)會通過XAPI在所有的XenServer主機之間進(jìn)行同步,以便在資源池Master宕機之后,其他XenServer主機能夠正確而迅速的取代Master,并維持資源池的功能和服務(wù)。其簡要示意圖如下所示:

XenServer架構(gòu)之XAPI

 如上圖所示,在創(chuàng)建XenServer資源池的時候,默認(rèn)會選定一臺XenServer主機作為Master,即所謂的資源池主。Master的作用是協(xié)調(diào)和鎖定資源池內(nèi)的各種資源。默認(rèn)情況下在創(chuàng)建資源池的時候,加入資源池的第一臺XenServer主機被默認(rèn)推選為Master。當(dāng)資源池的Master主機出現(xiàn)故障不在可用時,Master是可以進(jìn)行角色轉(zhuǎn)移的。其轉(zhuǎn)移的情況有兩種:一是進(jìn)行手動轉(zhuǎn)移,二是在開啟資源池高可用的情況下進(jìn)行自動轉(zhuǎn)移。

   在一個資源池中雖然所所有的XenServer主機都有XAPI,并在XML / RPC接口上運行了HTTP 80端口和TLS / SSL的443端口,但控制操作只會在Master主機上進(jìn)行處理。如果將一個控制操作指令發(fā)送給資源池的Slave主機,Slave主機上的XAPI將會將該控制指令重定向到Master主機,并且Slave主機上的XAPI將會產(chǎn)生一個XAPI重定向的錯誤消息并將其存儲在日志中。為了提高效率以下操作被允許在Slave主機進(jìn)行:

  • 查詢性能計數(shù)器(以及主機的歷史)

  • 連接到VNC控制臺

  • 導(dǎo)入/導(dǎo)出(特別是本地存儲上的磁盤時)

由于Master主機充當(dāng)協(xié)調(diào)和鎖管理器,其他主機在需要調(diào)用資源的時候就會經(jīng)常和Master產(chǎn)生大量的交互。當(dāng)然Slave主機之間也會進(jìn)行彼此的交互,比如說:

  • 轉(zhuǎn)移VM的內(nèi)存映像(虛擬機遷移)

  • 鏡像磁盤(存儲遷移)

其次,XenCenter通過XAPI來讀取XenServer主機的配置、管理、License信息、數(shù)據(jù)庫信息等,同時XAPI也通過和上篇文章我們所講述的XenServer核心運行的toolstack系列工具,包括如Xenopsd、Xcp-rrdd、Xcp-networkd、SM、perfmon、mpathalert、snapwatchd、stunnel、xenconsoled和xenstored等所有的組件進(jìn)行交互,這些組件通過和XAPI進(jìn)行通信并監(jiān)控XAPI的命令接口,根據(jù)XAPI發(fā)送過來的命令執(zhí)行相應(yīng)的功能控制。

下圖顯示了一臺XenServer主機上運行的軟件。所有的主機上運行相同的軟件。我們可以看到XAPI和其他的Toolstack所處的一個關(guān)系。

XenServer架構(gòu)之XAPI

二、XAPI架構(gòu)及運行機制解析

下面的關(guān)系圖顯示了xapi內(nèi)部運行關(guān)系及架構(gòu):

XenServer架構(gòu)之XAPI

圖的頂部顯示連接XenAPI客戶端:XenCenter、XenOrchestra、OpenStack以及CloudStack。這些客戶端都是通過XenAPI(XenAPI的XMLRPC通過HTTP POST)和HTTP GET/PUT在端口80和443與XAPI建立通訊。并且雙方之間建立互信是通過使用PAM認(rèn)證(默認(rèn)情況下使用本地passwd和group文件)或通過Active Directory進(jìn)行認(rèn)證。

其中XAPI中的Xen API又細(xì)分為三類:

* master-only:這是最重要的API也是最常用的API類型,顧名思義,這種類型的API只有Master能夠接受并進(jìn)行執(zhí)行。

* normally-local:這些API是為了提高性能的前提下,允許Slave主機執(zhí)行的特殊API,其往往和主機以及虛擬機的性能相關(guān)。如磁盤輸入/輸出和虛擬機控制臺連接這些接口控制的API,這些API直接有Slave主機在本地就進(jìn)行控制執(zhí)行,不需要再有Master記下來轉(zhuǎn)發(fā),提高了訪問速度和性能。

* emergency:這些API歸類為緊急情況下的API處理方案,例如當(dāng)Master主機脫機的情況下,對資源池的緊急修復(fù)等。

對于API的執(zhí)行,在資源池正常的情況下,XAPI會首先判斷API的類型。如果用戶在XenCenter中對Slave的操作是需要通過Master來執(zhí)行的API,那么Slave主機的XAPI就會將該API重定向到Master主機,交由Master主機進(jìn)行執(zhí)行控制。在確認(rèn)了API類型之后,即通過了初步檢查,API調(diào)用就會進(jìn)入“消息轉(zhuǎn)發(fā)”層—控制、鎖定資源(通過current_operations機制) -決定哪些主機應(yīng)該執(zhí)行該請求。如果請求是在本地執(zhí)行,主機直接調(diào)用函數(shù)或者進(jìn)程使用功能即可;否則消息轉(zhuǎn)發(fā)層就會將該請求同步給其他需要一同執(zhí)行的主機上。

注:XAPI目前使用“每個請求一個獨立線程”的模式,導(dǎo)致將為每個請求創(chuàng)建一個完整的POSIX線程。甚至當(dāng)這個請求在這臺主機上創(chuàng)建后被轉(zhuǎn)發(fā)給其他的主機,這個創(chuàng)建的線程仍然存在在第一次被創(chuàng)建的主機上,毫無疑問,這種模式的弊端必然是在請求數(shù)量較多時,導(dǎo)致XenServer主機的處理阻塞,影響虛擬機的性能。

接下來API具體如何執(zhí)行調(diào)用呢?如果XenAPI的調(diào)用是關(guān)于VM生命周期操作,那么它將會通過JSON-RPC(類似Unix域套接字)轉(zhuǎn)換成具體的負(fù)責(zé)VM生命周期管理的組件Xenopsd的API調(diào)用。XAPI和Xenopsd組件之間,對于每一個調(diào)用采用類似異步消息隊列的概念,XAPI的每一個調(diào)用不需要Xenopsd立即返回執(zhí)行結(jié)果。所以目前XAPI將每一個任務(wù)(所有操作在任務(wù)的上下文中運行)都綁定到Xenopsd任務(wù)上,XAPI在接受到調(diào)用時將其所對應(yīng)的任務(wù)扔給對應(yīng)綁定的Xenopsd之后就不在過問了。具體有無執(zhí)行成功需要等待Xenopsd給它的反饋,所以我們在XenCenter中執(zhí)行一個命令之后看見任務(wù)的進(jìn)度條在走,但是什么時候走完進(jìn)度條需要底層的執(zhí)行組件給XAPI反聵,XAPI再其狀態(tài)更新在狀態(tài)數(shù)據(jù)庫中,XenCenter會與XAPI進(jìn)行不斷的通訊以收取狀態(tài)更新。如果Xenopsd組件執(zhí)行命令出錯,會返回相應(yīng)的錯誤信息并存儲在日志中。

如果XenAPI的調(diào)用是存儲操作,那么“存儲訪問”層 --驗證存儲對象處于正確的狀態(tài)(SR連接/分離;VDI連接/活動狀態(tài)、只讀/讀寫),然后調(diào)用存儲管理API(SMAPI)V2接口中的相關(guān)操作;同時其中還存在著一個SMAPIv2到SMAPIv1轉(zhuǎn)換器,可以生成必要的命令去跟SMAPIv1插件(EXT,NFS,LVM等)并執(zhí)行它這些插件支持的存儲類型。

在對存儲進(jìn)行API調(diào)用的時候,其都是屬于Master類型的API調(diào)用,其Slave主機是沒有權(quán)限對磁盤進(jìn)行執(zhí)行操作的。因此在內(nèi)部,SMAPIv1插件使用特權(quán)訪問XAPI的數(shù)據(jù)庫,會將被視為只讀權(quán)限的客戶端直接設(shè)置只讀字段屬性(例如VDI.virtual_size)。同時由于共享的存儲同時在資源池內(nèi)被多個主機進(jìn)行訪問,為了保證數(shù)據(jù)的安全性,只能允許同一時刻只有一臺主機對其進(jìn)行對其進(jìn)行訪問。因此該SMAPIv1插件還協(xié)同XAPI對存儲的訪問進(jìn)行控制,其采用共享存儲常用的鎖機制來對多臺訪問共享存儲的主機進(jìn)行控制。

XAPI的數(shù)據(jù)庫包含主機和虛擬機元數(shù)據(jù)和資源池信息。該數(shù)據(jù)庫被資源池的Master主機將其副本加載到內(nèi)存中,與資源池的其他所有Slave進(jìn)行共享,其他Slave主機通過遠(yuǎn)程的方式訪問該數(shù)據(jù)庫,同時將其同步到本地主機。數(shù)據(jù)庫將每個API對象所實現(xiàn)的event.next和event.from的存儲在數(shù)據(jù)庫中。在接收到數(shù)據(jù)后是以XML格式并且是異步刷新的方式存儲到磁盤中的。如果“重做日志”被啟用,那么所有數(shù)據(jù)庫的寫入數(shù)據(jù)會被同步以增量的方式存儲到給出的共享的塊設(shè)備中。如果沒有啟用重做日志,那么XAPI在重啟之后,就可能會丟失最近的更新。

同時XAPI還在資源池內(nèi)實現(xiàn)主機的高可用。高可用性是在資源池內(nèi)當(dāng)其中的一臺主機發(fā)生故障時,還能保證資源池內(nèi)的正常運行意以外,還保證出現(xiàn)故障的主機上運行的虛擬機在其他主機上重啟。 XAPI和名為xhad的組件進(jìn)行緊密集成,實現(xiàn)XenServer資源池的高可用。Xhad是一個主機活躍度監(jiān)視器。當(dāng)xhad確認(rèn)主機發(fā)生故障時(其通過監(jiān)視超時時間和主機與存儲等該設(shè)備的連接狀態(tài)來判斷),那么XAPI將重新啟動出現(xiàn)故障并且已被HA標(biāo)記為 “受保護”的虛擬機。 XAPI還可以限制資源利用,以防止資源池變得過于超載,以應(yīng)對有多個主機故障時沒有資源運行HA。

最后XAPI還承載了實現(xiàn)XE CLI的任務(wù),其XE執(zhí)行效率和XAPI直接關(guān)聯(lián)。XE程序遠(yuǎn)程控制訪問XAPI命令行,XAPI則根據(jù)返回一Shell界面,顯示系列簡單的命令(提示輸入;打印屏幕;取文件;退出等等)。

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

名稱欄目:XenServer架構(gòu)之XAPI-創(chuàng)新互聯(lián)
鏈接地址:http://www.muchs.cn/article32/djjppc.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供用戶體驗、ChatGPT微信公眾號、服務(wù)器托管、靜態(tài)網(wǎng)站、標(biāo)簽優(yōu)化

廣告

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

成都網(wǎng)站建設(shè)公司