云計(jì)算的提出為信息技術(shù)學(xué)術(shù)界和產(chǎn)業(yè)界的發(fā)展提供了一個(gè)全新的思路。虛擬化作為云計(jì)算Iaas層的關(guān)鍵技術(shù),近年來也得到了迅速發(fā)展。20世紀(jì)60年代,IBM就開始研究虛擬化技術(shù),使得大型機(jī)的資源能得被多用戶使用。經(jīng)過幾十年的發(fā)展,虛擬化技術(shù)已經(jīng)日漸成熟,誕生了如VMware,virtual PC,Xen和KVM(kernel based virtualmachine)等一批成熟的虛擬化產(chǎn)品。與其他虛擬化產(chǎn)品相比,KvM的最大優(yōu)勢(shì)是完全開源。KVM是基于內(nèi)核的完全虛擬化,在與其他虛擬化產(chǎn)品效率對(duì)比中表現(xiàn)出色,但是其管理系統(tǒng)仍然只有C/S架構(gòu)的,C/S架構(gòu)本身的缺點(diǎn)造成了系統(tǒng)資源的浪費(fèi)。而且用戶進(jìn)行管理工作之前,需要預(yù)先安裝管理軟件;而且不同的管理軟件對(duì)操作系統(tǒng)和硬件資源還有不同的要求。相比起來,B/S模式的管理系統(tǒng)就靈活很多,只要有瀏覽器的終端都可以用來進(jìn)行管理工作,提高了管理效率,節(jié)省了客戶端資源占用。
本文實(shí)現(xiàn)了一個(gè)基于KVM虛擬化產(chǎn)品的B/S架構(gòu)的虛擬化管理系統(tǒng)。通過調(diào)用KVM的libvirt開發(fā)接口,利用J2EE技術(shù),系統(tǒng)管理員可在任何地方通過瀏覽器登陸系統(tǒng),進(jìn)行虛擬機(jī)和虛擬存儲(chǔ)的管理工作。最后通過實(shí)際測(cè)試表明B/S架構(gòu)的優(yōu)越性。
1.系統(tǒng)組成部分
基于KVM的虛擬化管理系統(tǒng),主要包括客戶端、web服務(wù)器、虛擬化服務(wù)器集群和共享存儲(chǔ)服務(wù)器4個(gè)模塊。其中客戶端是具有瀏覽器的上網(wǎng)設(shè)備,操作系統(tǒng)可以是Linux、windows甚至嵌入式操作系統(tǒng);web服務(wù)器上安裝web容器tomcat,操作系統(tǒng)采用“nux或windows,將完成管理工作的J2EE工程放在web容器里;虛擬化服務(wù)器集群上統(tǒng)一安裝Linux操作系統(tǒng),KVlⅥ虛擬化軟件和lib—virt接口,并與web服務(wù)器建立ssh無密碼連接;共享存儲(chǔ)服務(wù)器是一個(gè)磁盤陣列,安裝freenas后通過IP網(wǎng)絡(luò)向虛擬化集群提供數(shù)據(jù)存儲(chǔ)服務(wù)。
用戶通過jsp頁面登陸后進(jìn)行相關(guān)操作,操作參數(shù)傳遞給web服務(wù)器,web服務(wù)器與管理目標(biāo)服務(wù)器建立ssh連接,通過調(diào)用libvirt接口進(jìn)行虛擬化集群的管理工作,并將操作結(jié)果通過jsp頁面呈現(xiàn)給用戶。用戶還可以通過調(diào)用spice插件,用圖形界面的方式查看虛擬機(jī)的工作情況。整個(gè)系統(tǒng)結(jié)構(gòu)如圖1所示。
圖1 系統(tǒng)架構(gòu)
1.1 KVM(Kernel based virtual machine)
KVM即基于內(nèi)核的虛擬化,依賴于“Linux內(nèi)核,其性能優(yōu)越,接近單機(jī)操作系統(tǒng)。由于其優(yōu)越的性能和開源性,得到業(yè)界的一致認(rèn)可并在近年來取得很大的發(fā)展。KVM使用軟件模擬的方式實(shí)現(xiàn)完全虛擬化,通過將客戶操作系統(tǒng)的I/0指令提交給宿主操作系統(tǒng)(即Linux操作系統(tǒng))上的QEMU,QEMU將操作指令轉(zhuǎn)換為對(duì)宿主機(jī)的I/0操作這種方式來實(shí)現(xiàn)虛擬化,然后宿主操作系統(tǒng)調(diào)用驅(qū)動(dòng)程序訪問硬件。通過這種方式對(duì)硬件進(jìn)行了模擬,實(shí)現(xiàn)起來比較簡潔,而且效率較高|。
1.2 SPICE(simple procotol for independent computing environment)
spice是一個(gè)開源的遠(yuǎn)程桌面協(xié)議,可以用于在服務(wù)器、遠(yuǎn)程計(jì)算機(jī)和瘦客戶端等設(shè)備上部署虛擬桌面,與微軟的Remote Desktop Protocol相似,支持windows和Linux操作系統(tǒng)。
spice包括兩部分:spice server和spice client。通過在虛擬機(jī)里安裝spice Server進(jìn)行相應(yīng)的配置后,就可以在客戶端通過spice client插件遠(yuǎn)程鏈接該虛擬機(jī),以圖形界面形式進(jìn)行操作。
1.3 Libvirt接口
Libvirt是一套開源的、用C語言開發(fā)的支持虛擬化函數(shù)庫編程接口,用一種單一方式管理不同的虛擬化提供方式和管理工具,適用于主流虛擬化工具包括Xen、KVM和vmware等,支持與Java、python、C/C++等開發(fā)語言的綁定。Linux下常用的虛擬化管理工具Virt-manager和virt—install都是基于libvirt開發(fā)。
1.4 Freenas
Freenas是一款免費(fèi)的NAS(網(wǎng)絡(luò)附加存儲(chǔ))服務(wù)器軟件,它能將普通PC或服務(wù)器的硬盤資源變成網(wǎng)絡(luò)存儲(chǔ)服務(wù)器。該軟件基于FreeBSD,Samba及PHP,支持FTP/NFS/RSYNC/CIFS/AFP/UNISON/SSH協(xié)議及web界面的設(shè)定工具。Freems還可以被安裝在移動(dòng)存儲(chǔ)設(shè)備中,使用方便靈活,在組建網(wǎng)絡(luò)存儲(chǔ)服務(wù)器方面應(yīng)用廣泛。
2.J2EE工程架構(gòu)
系統(tǒng)實(shí)現(xiàn)的核心是完成管理工作并和用戶交互的J2EE工程。J2EE工程架構(gòu)如圖2所示。
圖2 J2EE工程架構(gòu)
客戶層實(shí)現(xiàn)用戶和系統(tǒng)的交互,用戶通過Web瀏覽器登錄系統(tǒng),并通過頁面提交操作參數(shù)。瀏覽器負(fù)責(zé)用戶請(qǐng)求接收和服務(wù)器返回信息的顯示。
struts控制器負(fù)責(zé)接收和處理用戶請(qǐng)求,并將相應(yīng)請(qǐng)求轉(zhuǎn)發(fā)到業(yè)務(wù)邏輯層,然后從業(yè)務(wù)邏輯層接收結(jié)果并返回給客戶層進(jìn)行顯示。
業(yè)務(wù)邏輯層是J2EE工程的核心,負(fù)責(zé)接收stmts傳遞的用戶請(qǐng)求,調(diào)用底層libvirt API完成相應(yīng)的操作,并將處理結(jié)果經(jīng)Web層展現(xiàn)給用戶。
將管理虛擬化的J2EE工程放在中心服務(wù)器(即web服務(wù)器)的tomcat容器里,這臺(tái)web服務(wù)器應(yīng)該與虛擬化集群在同一局域網(wǎng)中以保證連接速度。用戶通過前臺(tái)jsp頁面登陸管理系統(tǒng),web服務(wù)器接收到用戶的請(qǐng)求參數(shù)后,與管理目標(biāo)服務(wù)器通過ssh建立連接,用戶即可進(jìn)行相關(guān)的管理操作。在web服務(wù)器接收到用戶管理操作參數(shù)后,將參數(shù)轉(zhuǎn)換為libvirt接口認(rèn)可的xml格式文件的參數(shù),然后發(fā)送給管理目標(biāo)服務(wù)器,目標(biāo)服務(wù)器接收到參數(shù)后調(diào)用Libvirt接口,執(zhí)行相關(guān)操作。具體實(shí)現(xiàn)過程如下:
用戶提交請(qǐng)求參數(shù):用戶登錄成功后,可以進(jìn)行如下四方面管理:用戶管理、存儲(chǔ)磁盤、虛擬機(jī)管理和集群管理。通過用戶管理可以修改用戶登錄密碼,定期修改密碼可以增強(qiáng)安全性;通過存儲(chǔ)管理可以添加或刪除資源池,查看、刪除或者新建虛擬磁盤;通過虛擬機(jī)管理,可以查
看和修改虛擬機(jī)信息,并通過spice查看虛擬機(jī)圖形界面;集群管理可以查看集群中的物理機(jī)信息,并可以將虛擬機(jī)遷移到另一臺(tái)物理機(jī)上。用戶操作通過表單形式提交給Web服務(wù)器。
Web服務(wù)器轉(zhuǎn)換請(qǐng)求參數(shù)并發(fā)送給目標(biāo)服務(wù)器:web服務(wù)器通過servIet接收到用戶請(qǐng)求參數(shù),轉(zhuǎn)換為字符串,然后將參數(shù)組合為ml格式的libvirt配置文件,然后與目標(biāo)服務(wù)器建立ssh連接,通過配置文件將需要進(jìn)行的操作傳遞給目標(biāo)服務(wù)器。
目標(biāo)服務(wù)器進(jìn)行相關(guān)管理操作并向web服務(wù)器返回結(jié)果:目標(biāo)服務(wù)器收到配置文件參數(shù)后,調(diào)用libvirt接口將操作參數(shù)傳人,進(jìn)行相應(yīng)的操作。然后將操作結(jié)果返回給Web服務(wù)器。
Web服務(wù)器將操作結(jié)果返回給用戶:web服務(wù)器接收到返回結(jié)果后,進(jìn)行相應(yīng)的封裝后傳遞給前臺(tái)頁面,顯示給用戶。如果用戶的請(qǐng)求是圖形界面查看虛擬機(jī),則Web服務(wù)器將虛擬機(jī)的參數(shù)傳遞給客戶端后,客戶端與目標(biāo)服務(wù)器直接建立連接。
3.系統(tǒng)設(shè)計(jì)功能
用戶登錄后可以進(jìn)行如下四方面管理工作:用戶管理、存儲(chǔ)管理、虛擬機(jī)管理和集群管理。系統(tǒng)功能框圖如圖3所示。
圖3 系統(tǒng)功能結(jié)構(gòu)
3.1用戶管理
用戶名和密碼通過加密后寫在配置文件里,用戶提交登錄請(qǐng)求后web服務(wù)器讀取配置文件并進(jìn)行登錄驗(yàn)證,驗(yàn)證通過即可進(jìn)行權(quán)限內(nèi)的相關(guān)管理操作。用戶可以定期修改密碼,以增強(qiáng)安全性。超級(jí)用戶可以對(duì)用戶進(jìn)行管理,包括添加、刪除用戶,為用戶分配權(quán)限等,但是超級(jí)用戶本身不能對(duì)虛擬化集群直接進(jìn)行管理。通過這種權(quán)限分離的方式提高系統(tǒng)的安全性。
3.2虛擬存儲(chǔ)管理
創(chuàng)建虛擬磁盤之前需要先創(chuàng)建資源池,然后在資源池中創(chuàng)建虛擬磁盤。虛擬磁盤就是提供給虛擬機(jī)用的存儲(chǔ)空間,是位于共享存儲(chǔ)之上的虛擬邏輯磁盤空間。用戶登錄之后,存儲(chǔ)管理界面提供的管理操作包括:新建和刪除資源池,新建和刪除虛擬磁盤。新建和刪除虛擬磁盤的時(shí)候,將虛擬磁盤名作為參數(shù)傳遞給web服務(wù)器,創(chuàng)建虛擬磁盤時(shí)提交表單包括磁盤名稱和磁盤大小。表單提交給servlet進(jìn)行處理。
3.3虛擬機(jī)管理
創(chuàng)建虛擬機(jī)之后,KVM會(huì)給每個(gè)虛擬機(jī)分配一個(gè)UUD(universally unique identifier),用于唯一標(biāo)識(shí)該虛擬機(jī)。KVM每次啟動(dòng)的時(shí)候,都會(huì)為每個(gè)虛擬機(jī)分配一個(gè)ID。通過UUID或者ID都可以唯一找到該虛擬機(jī)。虛擬機(jī)管理進(jìn)行的操作包括:新建和刪除虛擬機(jī),查看和修改虛擬機(jī)配置信息,啟動(dòng)、掛起和關(guān)閉虛擬機(jī),導(dǎo)出虛擬機(jī)模板,從模板創(chuàng)建虛擬機(jī),顯示虛擬機(jī)界面(spice)。本系統(tǒng)將虛擬機(jī)的ID作為參數(shù)進(jìn)行傳遞。首先用戶將操作指令和虛擬機(jī)ID傳遞給web服務(wù)器,web服務(wù)器封裝后傳遞給目標(biāo)服務(wù)器,然后接受目標(biāo)服務(wù)器執(zhí)行后的返回結(jié)果,再傳遞給用戶顯示。
在調(diào)用spice通過圖形界面方式查看虛擬機(jī)中,首先檢測(cè)spice插件是否正確安裝,如果沒有正確安裝,提示用戶下載并安裝。如果正確安裝,在攔截到查看指令后,從網(wǎng)頁啟動(dòng)spice插件。并將虛擬機(jī)參數(shù)傳遞給spice,輸入密碼即可查看虛擬機(jī)的界面。
3.4 集囂管理
集群管理包括物理主機(jī)管理和集群調(diào)度。物理機(jī)管理包括向虛擬化集群添加和刪除物理機(jī),通過SNMP(simplenetwork management protocol)協(xié)議收集物理機(jī)信息,維護(hù)活動(dòng)物理機(jī)列表;集群調(diào)度采用虛擬機(jī)遷移來實(shí)現(xiàn),采用中心任務(wù)調(diào)度算法,根據(jù)管理節(jié)點(diǎn)服務(wù)器(即Web服務(wù)器)通過SNⅧ協(xié)議收集到的主機(jī)狀態(tài)信息,在物理機(jī)負(fù)載過高時(shí),將其上的部分虛擬機(jī)遷移到其他物理機(jī)上,也可以將負(fù)載量很小的物理機(jī)上的虛擬機(jī)遷移到其他主機(jī)上,然后關(guān)閉該物理機(jī)以節(jié)省電能!
4.關(guān)鍵技術(shù)
4.1 封裝ssh連接類
系統(tǒng)中用到建立ssh連接的地方比較多,因此通過對(duì)連接類進(jìn)行封裝可以有效減少代碼量,提高可讀性。
封裝ssh連接類需要用到兩個(gè)類:org. libvirt包下的Connect和LibvirtException類。實(shí)現(xiàn)封裝的類如下:
public class SSHConnect{
private static final String SSHURLl=“
qemu+ssh://”;
private static final String SSHURL2=“/system”;
public static Connect getSSHConnect(String userIp,
boolean flag){
Connect conn=null;
try{
conn = new Connect (SSHURL1+userIp+
SSHURL2,fIag);
}catch(LibvirtException e){
e.printstackTrace();
System.out.println(e.getError());
return:
}
return conn:
}
public static void close(Connect conn){
if(conn!=null){
try{
conn.close();
}catch(LibvirtException e){
e.printStackTrace();
Systern.out.println(e_getError());
}
}
}
}
4.2 Ajax(Asynchronous JavaScript and XML)技術(shù)
考慮到不同的用戶同時(shí)對(duì)一臺(tái)服務(wù)器進(jìn)行管理的可能性,本系統(tǒng)在向服務(wù)器讀取數(shù)據(jù)的時(shí)候都是實(shí)時(shí)讀取的,這就要用到Ajax技術(shù)。
Ajax即異步JavaScript和XML,是一種創(chuàng)建交互式網(wǎng)頁應(yīng)用的網(wǎng)頁開發(fā)技術(shù)。其工作原理是,在用戶和服務(wù)器之間增加了了一個(gè)中間層——Ajax引擎.使用戶操作與服務(wù)器響應(yīng)異步化,部分操作由Ajax直接完成,無需向服務(wù)器提交數(shù)據(jù)。在用戶需要從服務(wù)器讀取新數(shù)據(jù)時(shí)由Ajax引擎代為向服務(wù)器提交請(qǐng)求,然后將讀取結(jié)果發(fā)送給用戶。在使用Ajax擎后,用戶從感覺上幾乎所有的操作都會(huì)很快響應(yīng)沒有頁面重載的等待,也沒有頁面跳轉(zhuǎn)。其工作原理如圖5所示。
圖4 Ajax工作原理
4.3用spice查看虛擬機(jī)
在創(chuàng)建虛擬機(jī)的時(shí)候,將圖形設(shè)備選擇為spice,添加spice server并設(shè)置端口號(hào),將顯卡設(shè)備選擇為視頻卡QXL設(shè)備。Web服務(wù)器在接收到查看圖形界面請(qǐng)求后,首先進(jìn)行客戶操作系統(tǒng)的判斷,并檢測(cè)用戶是否正確安裝spice,如果沒有安裝則根據(jù)用戶操作系統(tǒng)提示用戶下載安裝spice包。
如果spice正確安裝,則通過網(wǎng)頁啟動(dòng)spice,并將相應(yīng)參數(shù)傳人,即可打開虛擬機(jī)的圖形界面。
4.4 提供類應(yīng)用軟件試圖
為了使管理的步驟更加清晰和兼顧用戶使用習(xí)慣,本系統(tǒng)設(shè)計(jì)類似應(yīng)用軟件的用戶交互界面。首先將操作拆分成各個(gè)步驟,并為每一步驟設(shè)計(jì)一個(gè)jsp頁面,然后使用Css+div建立一個(gè)可拖動(dòng)的層,然后采用ifr鋤e技術(shù)將操作步驟對(duì)應(yīng)的jsp頁面加載到層中顯示,用Javascript控制層中內(nèi)容的切換和數(shù)據(jù)的緩存,需要與服務(wù)器及時(shí)交互的數(shù)據(jù)則采用Ajax技術(shù)實(shí)時(shí)獲取。在一個(gè)操作完成后將表單數(shù)據(jù)整合并提交。
5.系統(tǒng)性能測(cè)試
以VMware的vCenter server/vClient為例,與本系統(tǒng)性能做一個(gè)比較,測(cè)試環(huán)境為包含6臺(tái)服務(wù)器的集群。用pc做客戶端進(jìn)行測(cè)試,CPU為雙核2.9GHz,內(nèi)存為2G,Windows Xp系統(tǒng)使用內(nèi)存約350M。使用的系統(tǒng)資源情況分別如圖6和圖7所示。
圖5 VMware 客戶端資源使用
圖6 B/S架構(gòu)客戶端資源使用
由圖可見,C/S架構(gòu)客戶端CPU利用率約為50%,內(nèi)存使用為350M左右,而使用B/S架構(gòu)系統(tǒng)的客戶端CPU平均使用率約為20%,內(nèi)存使用為190M左右。管理節(jié)點(diǎn)采用的是2個(gè)64位CPU,主頻2.5GHz,內(nèi)存8G,硬盤100G。安裝hyper_V和作web服務(wù)器時(shí)系統(tǒng)資源使用情況見表1。
表1 管理節(jié)點(diǎn)消耗的系統(tǒng)資源對(duì)比
由此可見,B/S架構(gòu)管理系統(tǒng)能極大降低系統(tǒng)資源的消耗。這一特點(diǎn)在集群規(guī)模增大時(shí)會(huì)體現(xiàn)的更加明顯,因此對(duì)大規(guī)模虛擬化集群部署有重要的參考價(jià)值。
6.結(jié)束語
基于KVM的B/S架構(gòu)虛擬化管理系統(tǒng),將虛擬化管理工作由C/S模式轉(zhuǎn)向了B/S模式,用戶在管理虛擬化集群之前不用先安裝客戶端,直接通過瀏覽器登陸即可進(jìn)行管理,管理工作不用限定在特定的客戶機(jī)上,也不用限定在特定的網(wǎng)絡(luò)環(huán)境中。由于web服務(wù)器取代了管理中心服務(wù)器,使系統(tǒng)的資源消耗更少,管理方式更加靈活。本系統(tǒng)在WindowS和Linux下經(jīng)過測(cè)試,運(yùn)行良好。
核心關(guān)注:拓步ERP系統(tǒng)平臺(tái)是覆蓋了眾多的業(yè)務(wù)領(lǐng)域、行業(yè)應(yīng)用,蘊(yùn)涵了豐富的ERP管理思想,集成了ERP軟件業(yè)務(wù)管理理念,功能涉及供應(yīng)鏈、成本、制造、CRM、HR等眾多業(yè)務(wù)領(lǐng)域的管理,全面涵蓋了企業(yè)關(guān)注ERP管理系統(tǒng)的核心領(lǐng)域,是眾多中小企業(yè)信息化建設(shè)首選的ERP管理軟件信賴品牌。
轉(zhuǎn)載請(qǐng)注明出處:拓步ERP資訊網(wǎng)http://www.ezxoed.cn/
本文標(biāo)題:基于KVM的B/S架構(gòu)虛擬化管理系統(tǒng)
本文網(wǎng)址:http://www.ezxoed.cn/html/support/11121511142.html