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