隨著計算機技術的快速發展,移動網絡和開放平臺的急劇增長,云計算作為一種新興的網絡共享商業計算模型出現。云計算可以將計算任務分布在大量計算機構成的資源池上,使各種應用系統能夠根據需要獲取計算力、存儲空間和各種軟件服務。“云”中的這些資源在使用者看來是可以無限擴展的,并且可以隨時獲取,按需使用,隨時擴展,按使用付費。云計算包含三種不同服務類型:SaaS(Software as a Service,軟件即服務)、PaaS(Platform as a Service,平臺即服務)和IaaS(Infrastructure as a Service,基礎架構即服務),其中最重要也是最核心的技術就是IaaS。
IaaS 指的是以服務形式為使用者提供服務器、存儲和網絡硬件,在IaaS 服務中,資源是共享的,并根據用戶的請求進行預留。但用戶對資源的實際需求往往是不斷變化的,如果資源預留的過多或過少都會造成資源的不合理分配;另外,云計算平臺還需要根據應用和服務的實際負載,對用戶請求的資源進行調度。為了提供IaaS 服務的基礎架構,一般是利用虛擬化技術搭建云平臺的內部架構。虛擬化技術為云計算模型中的資源管理提供一種有效的解決辦法。虛擬化技術可以在一臺物理主機上劃分并創建出不同的虛擬機,虛擬機之間相互隔離。通過將應用和服務封裝在虛擬機中并根據負載的變化進行虛擬機和物理資源的調度來實現整個云平臺的管理。
在目前已有的云計算平臺中,服務商提供了不同處理能力的虛擬機實例供用戶選擇。例如亞馬遜的EC2 平臺,用戶可以根據自身需求選擇Small、Large、Extra Large 等若干種不同級別的虛擬機實例,能夠獨立地對所租用虛擬機的狀態進行啟動、停止、關閉等操作。但對于初級用戶而言,對于選擇何種級別的虛擬機實例缺乏經驗,選擇過低或過高勢必都造成云平臺資源的浪費和用戶使用成本的增加;而對于中級或高級用戶來說,用戶的實際需求也隨著應用和服務的不斷發展而迅速變化,他們需要對租用的云計算平臺提供的虛擬機資源享有更高的靈活度和更多的控制權。這就導致了云計算平臺下的虛擬化管理的兩個問題:虛擬機所分配的資源一般都為預先定義,但應用程序信息的不確定性以及物理主機處理能力的差異性容易導致云計算環境中的負載失衡。同時,當應用程序對于資源的需求增加或減少時,還需要選擇合適的物理主機對虛擬機進行遷移或釋放不必要的資源。這對云計算平臺的服務商而言可以將剩余資源回收并有效地分配給其他用戶;對虛擬機的使用者而言可以避免占有不必要的資源而增加云的使用成本。有研究表明,考慮虛擬機的放置策略能夠有效協調不同物理主機的負載、維持高效的資源使用率。
因此,文章提出一種對用戶和服務商而言更自動、可控、靈活的彈性云計算平臺架構,能夠根據應用程序和服務的負載使資源彈性分配,實現云計算環境中資源的合理優化和使用。該架構的主要優點包括:(1)能夠實時監控云計算環境中資源的使用情況,根據應用和服務對資源的占用情況實現可伸縮性的動態虛擬機的調度;(2)為使用者提供更靈活的管理方式;(3)有效降低使用成本,能夠對虛擬機所占用的資源量實時記錄,計費方式更加合理、透明。
1 Xen虛擬化技術
1.1 Xen 虛擬化結構
彈性云計算平臺的計算資源、存儲資源、網絡資源需要虛擬化技術的支持。虛擬化技術能夠將不同結構的物理資源整合為邏輯資源池來供整個云計算平臺使用。目前主流的開源虛擬化實現包括Xen 和KVM。其中Xen 可以工作在半虛擬化(Paravirtualization)和完全虛擬化兩種模式之下。半虛擬化又叫做超虛擬化技術,該技術通過對客戶操作系統做一些修改便可以在不支持虛擬化的硬件之上運行,無硬件依賴的特性使Xen 的應用范圍更加廣泛。同時由于直接運行在硬件之上,虛擬機的性能更接近真實硬件環境,因此Xen更容易達到高性能。Amazon EC2、GoGridXen 和Citrix的云平臺都采用Xen 虛擬化技術,文章的彈性云架構也采用Xen 虛擬化技術來實現。
Xen 的主要結構如下圖所示:
圖1 Xen 虛擬化結構
1.2 Xen Hypervisor
Xen Hypervisor 又叫做虛擬機監控器(VMM),實際上是一個軟件層,介于硬件和操作系統之間,直接運行在機器硬件上。Xen Hypervisor 對硬件層進行虛擬,對系統中的所有虛擬機(VM)執行調度和分配資源,并且驅動硬件外設控制虛擬機的運行。而XenHypervisor 的這些調度和分配工作對于客戶操作系統而言是透明的。
1.3 Domain 0
Domain 0 是一個經過修改的Linux 內核,也是唯一直接運行在Xen Hypervisor 之上的虛擬機。Domain 0在其它Domain 啟動前啟動,其他虛擬機需要和Domain 0 進行交互,通過Domain 0 來和物理網絡硬件通信、訪問物理I/O 資源等。
1.4 Domain U
在Xen Hypervisor 之上運行的所有虛擬機都位于Domain U,這些虛擬機獲取到的只是虛擬的硬件資源。客戶操作系統(Guest OS)安裝在虛擬機(VM)上,并通過Hypervisor 設定的特權等級運行在獨立的地址空間以相互隔離。
2 系統架構與設計
下圖描述了基于Xen 虛擬化的彈性云整體架構,包括虛擬化集群、管理控制中心和用戶三部分。用戶從客戶端連接管理控制中心獲取租用的虛擬機的運行狀態,并可以對虛擬機進行啟動、關閉等操作。管理控制中心將用戶和云內部的虛擬化集群隔離開,所有的管理任務都由管理控制中心的相應模塊執行。管理控制中心是整個彈性云平臺的核心,云計算平臺中所有的物理資源和虛擬資源的使用情況都在這里進行匯總,并按照用戶預先訂閱的條件,觸發預設策略按需進行虛擬機動態調度,保證云平臺的彈性。管理控制中心主要由監控模塊、調度模塊、日志模塊、計費模塊和用戶模塊五個部分組成。
圖2 基于Xen 虛擬化技術的彈性云架構
2.1 監控模塊
監控模塊的主要作用是和位于云平臺內部的虛擬機集群中的虛擬機監控器進行交互,獲得物理主機和虛擬機對于 CPU、內存和網絡的使用情況,并將數據匯總至管理控制中心以供其它模塊使用。
監控模塊包括兩部分,即位于每臺物理主機上的服務端和位于管理控制中心的客戶端。其中監控模塊的服務端負責監控物理主機和運行在它之上的虛擬機的資源使用情況,監控模塊的客戶端定期向服務端發出請求對這些數據進行匯總,這些功能主要通過Libvirt 庫[6]實現。Libvirt是提供虛擬化管理的一套API集合,它支持包括 Xen 、KVM 在內的多種虛擬機監控程序。監控模塊通過Libvirt 主要實現了以下功能:對虛擬機進行包括啟動、停止、暫停、保存、恢復及遷移在內的操作;獲取物理主機和虛擬機的運行狀態和資源使用信息。
通過Libvirt 進行監控的方式如下圖所示:
圖3 利用Libvirt 監控示意圖
在需要監控的虛擬機集群中的每臺物理主機上安裝Libvirt daemon(libvirtd),Libvirt daemon 運行在虛擬機的Domain 0 域,它負責收集物理主機及虛擬機對于CPU、內存、網絡等資源的使用情況,并與管理控制中心的libvirt 模塊通過API 定義的通用協議進行遠程通信來傳遞監控數據。為了獲取每臺物理主機和虛擬機的資源使用情況,定義了以下數據結構:
Struct DomainInfo
{
unsigned char state; //當前域的運行狀態
unsigned long maxMem; //支持的最大內存
unsigned long memory; //使用的內存
unsigned short nrVirtCpu; //虛擬CPU 數量
unsigned long long cpuTime; //虛擬CPU 運行時間
unsigned long network; //網絡帶寬
}
每個Domain 中虛擬機的資源占用情況獲取流程如下所示:
圖4 獲取虛擬機資源占用流程
其中Domain 0 反映的是物理主機的資源占用情況,其余Domain 的CPU 運行時間可以通過在某個時間段Δt 內的兩次DomainInfo 中虛擬CPU 運行時間的差來得到,若記Δt 前后Domain U 的DomainInfo 分別為Da,Db,那么虛擬CPU 運行時間VirtCPURuntime可以表示為:
2.2 調度模塊
調度模塊根據監控模塊獲取的資源使用情況,根據預先設定的策略,對虛擬機是否遷移以及遷移對象進行選擇。考慮到云平臺中虛擬機上運行的應用程序信息的差異,物理主機和虛擬機的負載有可能出現時高時低的跳躍,因此如果只根據某個時刻監控得到的峰值來進行資源重新分配或動態遷移則有可能造成整個虛擬機集群內的頻繁遷移,增加不必要的開銷,無法達到負載均衡的目的。為了避免這種情況,做出以下改進:當出現監控得到的負載值超過閾值時,進一步觀察接下來的 N 個監控值,當出現多于 M 個值超過閾值時再進行資源重新分配或動態遷移。其中N 的大小由云平臺自身決定,M 的大小以M/N 的比例形式由用戶通過客戶端預先給出,用戶也可以選擇將調度策略托管給云平臺來自動完成。如果用戶選擇的比例值越接近0,則說明用戶采用較為激進的調度策略,在出現峰值時就進行虛擬機調度;反之,如果用戶選擇的比例值越接近100%,則說明用戶采用較為保守的調度策略,在出現若干個峰值后才進行虛擬機調度。
在做出虛擬機調度的決策之后,調度模塊首先根據虛擬機所在物理主機上資源的使用情況判斷能否為虛擬機重新分配相應的資源,通過這種方式能夠減少虛擬機遷移所帶來網絡開銷。如果所在物理主機無法滿足虛擬機的資源請求,則需要進行虛擬機動態遷移。
遷移目的主機的選取考慮兩方面的因素:響應速度均衡和處理能力均衡。根據監控模塊獲取的集群內各物理主機對ping 請求的響應時間,以及物理主機CPU、內存的使用量進行加權。選擇權重值最高的物理主機作為目的主機。這種算法能較好地反映各物理主機的運行狀態,當觸發虛擬機遷移后,權重值最大的物理主機相應的網絡負載與可提供的處理能力都會有相應的下降,從而權重值也會變化。在這個過程中集群中處理能力與網絡負載次之的主機也會逐漸被選為接受虛擬機遷移的對象,相應的資源占用率也將提高,在整體上而言集群的負載也達到均衡。
2.3 計費模塊
計費模塊根據監控模塊獲取的資源使用數據,統計不同用戶對于各物理資源的占用情況。按照預先設定的資源使用價格以及用戶預先指定的閾值和調度策略計算出各用戶的使用費用,并將數據發送到用戶模塊。若每單位計算、存儲和網絡的費用為i C(i=1,2,3),用戶k 對于物理主機j(j=1,2,3,…,n)的使用量為kij X ,用戶為指定的閾值下界1 U 、上界2 U 和調度策略P 應支付的相應費用為f( 1 U , 2 U , P) (具體計費策略可由云平臺預先定義),那么該用戶應支付的總費用k C 為:
2.4 日志模塊
日志模塊主要根據監控模塊獲取的數據,記錄云平臺內各物理主機和虛擬機運行狀態、資源使用情況以及用戶對虛擬機進行的操作。
2.5 用戶模塊
用戶模塊包括服務端和客戶端兩部分。用戶可以通過客戶端向服務端發送請求,包括創建、啟動、停止、暫停、保存和恢復虛擬機,對虛擬機調度的閾值及策略(保守或激進)進行訂閱,同時可以獲取已租用的虛擬機的運行狀態及應支付的費用等;服務端收到關于虛擬機的操作請求后將其傳遞給監控模塊處理,并將用戶訂閱的閾值及策略傳遞給調度中心,同時將虛擬機的運行狀態及費用反饋給用戶。
3 實驗和分析
根據圖2 所描述的系統架構,使用3 臺PC 搭建實驗平臺,其中一臺作為管理控制中心安裝各模塊,另外兩臺PC 作為物理主機,每臺分別安裝Centos 5.3操作系統,Xen 3.0 和虛擬機控制器,并在每臺物理主機上創建2 個虛擬機,安裝Centos 5.3 操作系統。每臺PC 的CPU 為四核2.13GHz,硬盤大小為160G,轉速7200RPM,內存2G,每臺虛擬機分配兩個CPU,512M內存和20G 硬盤。本節對提出的彈性云架構的原型系統進行性能評測,主要測試系統在不同負載狀況下的調度情況和性能表現。實驗首先測試虛擬機的調度觸發條件,設定N=10,M=7,CPU 的閾值下界為15%,上界為80%,測試結果如圖5 所示。可以看到在最初的時刻雖然虛擬機的CPU 負載超過了80%,但是還未達到調度策略的條件,因此并沒有引發調度。在接下來的10 個監測結果中出現7 次以上超過負載的情況,因此引發對虛擬機的資源調度。在t=26 這個時刻觸發調度策略之后,虛擬機所在物理主機為其增加一個CPU 單元,之后的虛擬機CPU 的負載有較明顯的下降。
圖5 虛擬機調度監控圖
圖6 物理主機負載監控圖
如圖6 所示,當虛擬機的負載有明顯下降,達到閾值下界并觸發調度策略時,將對虛擬機進行調度,減少其所占用的資源量。在t=14 這個時刻,虛擬機的CPU 占用率在最近的10 次監控中超過7 次低于閾值下界,從而引發調度,物理主機將減少該虛擬機的物
理CPU 資源,回收可用的CPU 資源。在t=14 之后的階段,由于虛擬機所占有的物理資源減少,因此虛擬CPU 的占用率有了一定的增加。
從圖5、圖6 可以看出,采用彈性架構的云平臺原型系統,能夠對虛擬機的資源請求做出精確的響應,有效地利用物理資源。當虛擬機進入繁忙狀態時及時為其增加物理CPU 資源,保證了高可用性;當虛擬機進入空閑狀態時,降低物理CPU 的預分配,從而可將回收的CPU 資源分配給其他虛擬機,提高了物理資源的利用率。
4 結語
文章描述一種基于Xen 虛擬化技術的彈性云架構,能夠在一定程度上解決云計算平臺中不同用戶對租用虛擬機的彈性需求,適應應用和服務的不同負載,對其進行動態管理。實驗結果表明,該架構能夠較好地實現資源的動態分配,使應用和服務的負載得到均衡。
核心關注:拓步ERP系統平臺是覆蓋了眾多的業務領域、行業應用,蘊涵了豐富的ERP管理思想,集成了ERP軟件業務管理理念,功能涉及供應鏈、成本、制造、CRM、HR等眾多業務領域的管理,全面涵蓋了企業關注ERP管理系統的核心領域,是眾多中小企業信息化建設首選的ERP管理軟件信賴品牌。
轉載請注明出處:拓步ERP資訊網http://www.guhuozai8.cn/
本文標題:基于Xen虛擬化技術的彈性云架構