摘要:節點并不是完全不能接受任何操作。這種協調目前由完成,因此不可能在資源池之間共享這種存儲。工具堆棧通常在特權初始域中運行其所有組件,也稱為控制域。如果不使用在刷新之前取消則可能會丟失最近的更新。
概述
Xapi是Xen Server中的一組管理接口的統稱,是Xen Server管理的核心,由一系列的toolstack組成。
Xapi主要提供各客戶端以及Pool中各主機通信的接口。 客戶端可以通過Xapi來讀取Xen Server的配置、管理、License的管理、數據庫的維護等等,同時也包括如存儲、虛機、虛擬網卡、HA等資源的功能管理及控制。Xapi接口必須保持向后兼容,允許較老版本的客戶端可以正常工作。
其具有代表性的客戶端有XenCenter、Xen Orchestra、Openstack 和CloudStack 等。
基礎概念
在Xen中最基礎的概念是資源池(Pool)--整體集群作為單個實體進行管理。即使單個Xen Host的非集群環境,Xapi對資源對象的管理也是通過Pool 來完成的。Xapi運行在主機集群中,他們共享著部分存儲集群。這部分共享存儲也是建立高可用集群(HA)的前提保證。下圖展示的是運行著Xapi的主機集群環境。
在任何時候,最多只有一個主機可以被稱為Pool Mater,它用來負責協調和鎖定資源池的資源。首次創建Pool時,需要指定一臺機器為Pool Master,這臺機器則稱為Master Host(主節點),其他節點我們可以稱之為Slave Host(從節點)。Pool Master角色也并非一成不變的。我們可以通過XenCenter等客戶端手動調整Master Host節點;也可配置HA的集群通過Xen自身的HA機制在Master Host宕機時,自動選舉新的節點為Master Host。
所有主機都會提供兩種協議的接口,一個是使用80端口的HTTP和XML/RPC協議接口以及使用443端口的TLS/SSL協議接口。雖然存在著這兩種接口協議,但并不是所有主機都能夠通過Xapi來下發操作請求的,在集群中僅Master Host具有著接受Xapi操作請求的權限。
如若嘗試將控制操作的請求發送到另一臺Slave Host的機器,將導致XenAPI重定向返回一個錯誤消息,該錯誤消息包含有這臺機器所處集群的Master Host的地址,以及詳細錯誤提示。
作為Pool Master除了上文提及配置HA后的自動遷移還會以有序的方式處理或轉發用戶請求(xe pool-designate-new-master)以及處理或轉發在緊急情況下的用戶請求(xe pool-emergency-transition-to-master)。
Slave Host節點并不是完全不能接受任何操作。為了提高效率,在Slave Host上允許進行以下操作:
查詢性能計數器(及其歷史記錄)
連接到VNC控制臺
導入/導出(特別是當磁盤在本地存儲上時)
由于Master Host充當協調器和鎖定管理器的角色,因此其他主機通常會與Master Host通信。Slave Host也會相互通信(通過相同的HTTP和XMLRPC通道)來完成以下功能
傳輸VM內存映像(VM遷移)
鏡像磁盤(存儲遷移)
要注意的是,某些類型的共享存儲(特別是所有使用vhd的存儲)需要協調磁盤GC和合并。這種協調目前由Xapi完成,因此不可能在資源池之間共享這種存儲。
工具集/toolstack
Xapi工具集需要主機在x86或ARM上運行Xen 4.4或更高版本。Xen管理程序將主機劃分為多個域(Domain),其中一些域可以具有特權硬件訪問權限,其余部分是非特權客戶機(DomainU)。xapi工具堆棧通常在特權初始域Domain 0中運行其所有組件,也稱為“控制域”。然而,有一些實驗代碼支持“驅動域(driver domains)”,允許存儲和網絡驅動程序在其各自的域中隔離。
下圖顯示了在單主機上運行Xen Server的情況。在一個集群環境中所有主機都運行相同版本的Xen Server,除非Xen Server正處于版本迭代期間則不一定是完全相同的軟件版本。
工具集包含有一組協作守護程序,它們構建在所有Xen主機通用的基本集之上。他們主要包含有:
Xapi:管理主機群集,協調對共享存儲和網絡的訪問。
Xenopsd:一個低級“域管理器”,負責通過libxc和libxl與Xen交互來創建、掛起、恢復、遷移、重新引導域。
Xcp-rrdd:一個性能計數器監視守護程序,它聚合通過插件API定義的“數據源”并記錄每個守護程序的歷史記錄。
Xcp-networkd:主機網絡管理器,負責配置接口,網橋和OpenVSwitch實例
SM:Storage Manager插件,用于將Xapi的內部存儲接口連接到外部存儲系統的控制API。
perfmon:監視性能計數器的守護程序,如果值超過某個預定義的閾值,則發送“警報”。
mpathalert:監視“存儲路徑”的守護程序,如果路徑出現故障并需要修復則發送“警報”。
snapwatchd:一個守護進程,它響應通過guest 虛擬機VSS代理(對于Windows)發送的快照請求。
stunnel:一個守護程序,它解碼TLS / SSL并將流量轉發到Xapi。
xenconsoled:允許訪問客戶機控制臺。這對所有Xen主機都是通用的。
xenstored:用于連接VM磁盤和網絡接口的鍵值對配置數據庫。這對所有主機也很常見。
工作機制
Xapi分為以下類別:
master-only:這些是當前主要的API請求類型。客戶端API請求Master節點,Master節點轉發請求到相應的機器并鎖定相應資源。
normal-local:這些是對性能有著特殊要求的情況,允許從節點去調用的API。例如磁盤導入/導出和控制臺連接等,它們直接發送到對數據到相關主機,不必經過Master節點的轉發。
emergency:是處理Master Host離線這種緊急情況下使用的API請求類型。
主機在接受到API請求后,先判斷本機可以接受該類型的請求,如果可以執行,API調用就會進入“消息轉發”層。消息轉發層將會:
鎖定資源(通過current_operations機制實現)
選擇需要執行請求的主機
如果請求應在本地運行,則使用直接函數調用; 否則,消息轉發代碼會對特定的Slave Host進行同步API調用。需注意的是Xapi目前使用“thread per request”(一個線程處理一個請求)模型,該模型會為每個請求創建一個完整的POSIX線程。即使僅轉發請求,這個線程仍然會被創建,并會一直阻塞直至相關Slave Host返回結果。
如果XenAPI請求內容是VM生命周期相關的操作,它將轉換為Xenopsd API調用并通過Unix域套接字進行轉發。Xapi和Xenopsd都有類似的task的概念,當前的Xapi task(所有操作在task的上下文中運行)會被綁定到Xenopsd task上,之后Xapi還會用來傳遞取消操作和更新task進度。
如果XenAPI請求內容為存儲操作,則將消息轉發至“存儲訪問”層。存儲訪問層需:
驗證存儲對象是否處于正確狀態(驗證SR掛載狀態;VDI掛載、激活 以及VDI是否具有讀寫權限)
調用Storage Manager API(SMAPI)v2接口中的相關操作
使用SMAPIv2到SMAPIv1轉換器生成必要的命令行來與SMAPIv1插件(EXT,NFS,LVM等)通信并執行
將存儲對象的狀態(包括VDI.attach調用的結果)持久化
在內部,smapiv1插件通過對xapi數據庫的特權訪問來直接設置字段(例如VDI.virtual_size),這些字段將被視為對其他客戶端是只讀的。SMAPIv1插件也依賴于Xapi
了解可能訪問存儲的所有主機
鎖定資源池中的磁盤
通過“Xapi插件”機制在其他主機上安全地執行代碼
Xapi數據庫包含主機和VM的元數據,并共享給整個Pool。Master Host會在內存中緩存一份副本,所有其他節點在使用時會查詢Master Host中緩存的數據。數據庫將每個對象都會有一個事件計數器,生成計數器用于實現XenAPI中event.next和event.from的相關操作。如果啟用了“redo-log”, 那么所有數據庫寫入操作都會以增量的形式同步寫入共享塊設備。如果不使用redo-log”在刷新之前取消Xapi則可能會丟失最近的更新。
總結
Xapi為程序開發者提供一個靈活,穩定,方便,快捷的Xen Server管理接口,使得用戶可以根據自身需求進行量身定制。但是由于使用“thread per request”模式會給Master Host帶來較大的資源開銷,使用時可盡量合并請求操作,減少并發數量,來降低Xapi對Master節點資源消耗。
作者:啟迪云-高級開發工程師 盧柳
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/5367.html
摘要:旨在發生單點故障后,消除單點故障的影像,盡可能在剩余資源池上運行業務。首先需要找出屬于最大全連接組以下簡稱的,用選擇一個,重啟丟失連接的。是通過在每個主機中進行配置,高可用集群中,每個主機上該配置文件都必須保持一致,如果不一致將導致不可用。概述隨著云計算市場的快速發展,用戶對服務的實時性需求越來越高,系統的穩定性和可用性顯得尤為重要。高可用性HA(High Availability)可以做到...
摘要:關于跟國內基本用的少,質料基本都是英文的,中文的也就只有繁體的一些少少的資料。安裝其實很簡單,就是一些小東西麻煩而已,還有一點就是頁面是英文的不要怕英語考五分的渣現在在狂補英文。準備工作,安裝數據庫。 此LRS團隊出了最新版的LRS,是node寫的。運行速度是本文寫的這個版本的無數倍,待我整理好再發出來。關于lrs跟xapi國內基本用的少,質料基本都是英文的,中文的也就只有繁體的一些少...
摘要:關于跟國內基本用的少,質料基本都是英文的,中文的也就只有繁體的一些少少的資料。安裝其實很簡單,就是一些小東西麻煩而已,還有一點就是頁面是英文的不要怕英語考五分的渣現在在狂補英文。準備工作,安裝數據庫。 此LRS團隊出了最新版的LRS,是node寫的。運行速度是本文寫的這個版本的無數倍,待我整理好再發出來。關于lrs跟xapi國內基本用的少,質料基本都是英文的,中文的也就只有繁體的一些少...
摘要:的首次公開發行是在年。年,得到了廣泛的采用,和都將添加進他們的虛擬化解決方案。收購之后將其產品整合,統一更名為。奠定了在服務器虛擬化市場的地位。年月日,項目被宣布作為一個合作項目移至基金會下。前言XenServer是一個由Citrix發起和管理的開源項目和社區。該項目開發的開源軟件實現了虛擬化的多種功能,允許在硬件設備上安全地運行多個操作系統和應用程序,完成硬件整合和自動化;將靜態、復雜的I...
閱讀 2528·2021-10-12 10:12
閱讀 1707·2019-08-30 15:52
閱讀 2443·2019-08-30 13:04
閱讀 1734·2019-08-29 18:33
閱讀 961·2019-08-29 16:28
閱讀 451·2019-08-29 12:33
閱讀 2057·2019-08-26 13:33
閱讀 2360·2019-08-26 11:36