何國民 王代君
摘要:本文主要采用云計算虛擬化技術(shù)在開放式操作系統(tǒng)Linux下,就虛擬化平臺基礎(chǔ)服務(wù)端、虛擬化連接管理中間件和Web管理平臺這三個主要組成部分的設(shè)計和配置,設(shè)計和構(gòu)建一個針對高校實驗室私有云服務(wù)平臺,能動態(tài)分配實驗室計算資源,高效率滿足實驗教學、開發(fā)、測試、管理等不同需求。
關(guān)鍵詞:云計算;虛擬化技術(shù);Linux;私有云
中圖分類號:TP393 文獻標識碼:A 文章編號:1009-3044(2016)23-0199-02
云計算是計算機科學和互聯(lián)網(wǎng)技術(shù)發(fā)展的產(chǎn)物,也是引領(lǐng)未來信息產(chǎn)業(yè)創(chuàng)新的關(guān)鍵戰(zhàn)略性技術(shù)和手段。它將帶來工作方式和商業(yè)模式的根本性改變,對我國發(fā)展高新技術(shù)產(chǎn)業(yè)具有重要的戰(zhàn)略意義。
虛擬化技術(shù)是實現(xiàn)云計算的關(guān)鍵技術(shù),它是一種調(diào)配計算資源的方法,它將不同層面——硬件、軟件、數(shù)據(jù)、網(wǎng)絡(luò)、存儲——隔離開來。它的運行完全像一臺物理服務(wù)器一樣,并在同一臺物理服務(wù)器上運行多臺虛擬機,可以節(jié)省硬件、存儲空間以及能耗。近年來,云計算技術(shù)發(fā)展如火如荼,國外的亞馬遜AWS云計算服務(wù)平臺、微軟的Microsoft Azure云以及Google的Cloud Platform引領(lǐng)著云計算技術(shù)的先鋒和浪潮。國內(nèi)的各個互聯(lián)網(wǎng)企業(yè)也紛紛推出各自的云服務(wù),如阿里巴巴的阿里云,新浪的SAE平臺,百度的BAE平臺等。在計算機業(yè)界,云計算可以說是現(xiàn)階段最熱門的技術(shù)之一。整個社會已經(jīng)進入到了互聯(lián)網(wǎng)+時代。
本文是基于Linux內(nèi)核虛擬化技術(shù)和Libvirt開源管理中間件以及Python語言開發(fā),實現(xiàn)了在實驗室機房環(huán)境中搭建私有云計算服務(wù)平臺,從而實現(xiàn)服務(wù)器的硬件虛擬化,提供多臺虛擬機給不同用戶以運行不同的服務(wù),給實驗教學、資源的共享等帶來了極為方便的應(yīng)用場景。
1 虛擬化云服務(wù)器平臺的主要功能設(shè)計
云服務(wù)平臺的虛擬化環(huán)境構(gòu)建采用基于Linux內(nèi)核的QEMU-KVM虛擬化技術(shù),服務(wù)平臺的Web管理端使用Python編程語言和Django框架來開發(fā),對于實驗室云計算服務(wù)平臺環(huán)境的搭建,主要完成以下的功能:
1)創(chuàng)建虛擬機,在創(chuàng)建時分配虛擬機的CPU、內(nèi)存、磁盤、網(wǎng)絡(luò)配置。
2)虛擬機的啟動與關(guān)閉。在虛擬機系統(tǒng)出錯無法正常關(guān)機的時候,能夠?qū)μ摂M機的進行強制關(guān)閉。
3)虛擬機克隆,通過虛擬機克隆,能夠快速的復(fù)制創(chuàng)建多個一樣的虛擬機,方便部署各種軟件環(huán)境。
4)遠程連接虛擬機,通過遠程桌面顯示虛擬機,能夠如本地主機一樣正常地用鍵盤和鼠標操作虛擬機,從而實現(xiàn)真正的“云計算”模式。
5)主機與虛擬機的資源占用監(jiān)控,能實時顯示虛擬機占用的物理主機的CPU、內(nèi)存、磁盤等資源信息,并顯示物理主機的總使用量。
2 采用libvirt虛擬化管理中間套件關(guān)鍵技術(shù),實現(xiàn)云計算平臺虛擬機管理
libvirt為編程人員提供了一組較為穩(wěn)定的接口,有了libvirt管理中間套件,令在云服務(wù)管理平臺開發(fā)中,實現(xiàn)物理宿主機與虛擬客戶機、虛擬客戶機相互之間的通信變得更加容易。并且它也集成了為遠程連接客戶機管理提供的加密和認證等安全服務(wù)。有了libvirt做為中間套件,對于上層用戶空間的管理工具來說,底層的KVM是完全隔絕的,因為libvirt提供了多數(shù)KVM底層調(diào)用,封裝了統(tǒng)一的、穩(wěn)定的API給上層管理程序。
libvirt的管理功能可以分為以下幾個主要部分:
1)遠程節(jié)點的管理。物理節(jié)點上運行l(wèi)ibvirtd這個deamon,就能夠令遠程的管理工具連接上此節(jié)點進行管理。
2)域的管理。包括對節(jié)點上的域的各個生命周期的管理。如虛擬機的啟動與關(guān)閉。
3)存儲的管理。主機運行l(wèi)ibvirtd這個deamon,用libvirt的接口就可以對多種不同的存儲進行管理,如建立各種格式的虛擬機鏡像管理。
4)網(wǎng)絡(luò)的管理。主機運行l(wèi)ibvirtd這個守護進程,用libvirt的接口就能夠?qū)壿嬀W(wǎng)絡(luò)接口或物理網(wǎng)絡(luò)接口進行管理。如分配虛擬網(wǎng)絡(luò)接口給客戶機等。
實際上,libvirt 本身并不是一種工具, libvirt 只是一種抽象的構(gòu)建概念,它主要用處就是給管理虛擬機提供穩(wěn)定的、高效的應(yīng)用程序接口。libvirt中將KVM的管理抽象成5個基本的部分,分別為連接、虛擬機、存儲池、網(wǎng)絡(luò)池和存儲卷,并通過XML來描述這幾個對象。通過libvirt客戶端發(fā)調(diào)用API時,將調(diào)用的各對象的參數(shù)保存在XML文件,再發(fā)送給libvirt 進行處理。
要操作虛擬機管理,只有建立了與 KVM的連接之后才能進行,所以調(diào)用其他所有API的前提條件是連接KVM的API。建立一個連接,可以調(diào)用virConnectOpen 函數(shù)實現(xiàn),調(diào)用之后,將得到一個virConnectPtr對象的返回值,如果該值返回成功,即表示到KVM的連接建立成功。
要使用libvirt API進行虛擬化管理,必須先建立到KVM的連接,有了連接,才能管理節(jié)點、域、存儲、網(wǎng)絡(luò)等虛擬化中的要素。libvirt的連接,可以解釋為客戶端/服務(wù)器(C/S)的構(gòu)架模式,一個服務(wù)器端運行著KVM,一個客戶端去連接服務(wù)器端的KVM,然后進行相應(yīng)的虛擬化管理。
3 通過libvirt管理KVM,實現(xiàn)對虛擬機的管理
1)創(chuàng)建虛擬機
創(chuàng)建虛擬機實際上就是創(chuàng)建libvirt的XML格式的虛擬機描述信息,再通過調(diào)用 libvirt API的 domainDefine 來完成創(chuàng)建。
2)啟動虛擬機
libvirt客戶端發(fā)送啟動虛擬機的請求,調(diào)用libvirt 的接口進行啟動虛擬機,然后libvirt再開啟QEMU-KVM 進程,一個進程就是一個虛擬機。
3)關(guān)閉虛擬機
libvirt客戶端發(fā)送關(guān)閉虛擬機的請求,調(diào)用 libvirt 的接口進行關(guān)閉虛擬機,libvirt發(fā)送關(guān)閉虛擬機的信號給 QEMU-KVM 進程,QEMU-KVM進程退出,虛擬機即關(guān)閉。
4)創(chuàng)建/刪除虛擬機鏡像
虛擬機的存儲在虛擬鏡像中,它一般是一個文件,包括虛擬機的磁盤數(shù)據(jù)和配置文件信息都在里面,創(chuàng)建虛擬機磁盤鏡像通過調(diào)用qemu-img create xxxx命令來實現(xiàn),刪除磁盤鏡像通過調(diào)用rm data.img 命令實現(xiàn)。
4 云服務(wù)平臺Web管理端開發(fā)與實現(xiàn)
虛擬化環(huán)境構(gòu)建好后,利用libvirt中間件提供的API,用Python語言開發(fā)一個Web端的管理平臺,以便管理人員進行管理。
1)Web平臺的技術(shù)框架
Web管理平臺的開發(fā)采用了Python語言開發(fā)和Django開發(fā)框架和Bootstrap前端框架,HTTP服務(wù)端采用Gunicorn+Nginx代理實現(xiàn)。
整體的頁面布局使用Bootstrap框架配合Django的template設(shè)計實現(xiàn)。
使用Python調(diào)用libvirt虛擬化管理中間件的API,實現(xiàn)對KVM虛擬化平臺的管理。Django負責處理URL的響應(yīng)和頁面的視圖呈現(xiàn)效果。
2)虛擬機連接實現(xiàn)
在用戶進入Web管理平臺時,首先需要連接上遠程或本地的節(jié)點主機。點擊新建連接的按鈕后,利用Django的URLconf判斷URL,再調(diào)用template中的Bootstrap modal控件,彈出網(wǎng)頁,將數(shù)據(jù)表單呈現(xiàn)在網(wǎng)頁,讓用戶填寫連接表單信息,點擊“添加”按鈕后,表單信息就保存在一個本地的sqlite數(shù)據(jù)庫中。
在頁面中點擊連接名后,利用Python代碼調(diào)用libvirt庫的virConnectPtr函數(shù),發(fā)送連接請求給節(jié)點主機中的libvirtd守護進程,主機中的libvirtd守護進程接收到連接請求,驗證用戶信息后,便建立起連接。最后轉(zhuǎn)入Web管理平臺的主界面。通過對上面Web界面的設(shè)置和操作,實現(xiàn)對云計算服務(wù)平臺的各項功能。
此實驗私有云服務(wù)平臺通過虛擬化技術(shù)實現(xiàn)了在服務(wù)器上的虛擬化環(huán)境構(gòu)建和Web管理端的開發(fā),能夠在虛擬化環(huán)境中對外提供多個虛擬機,對虛擬機進行遠程桌面連接,生成或恢復(fù)快照,快速克隆、動態(tài)遷移等高級管理功能。為推廣高效的實驗室資源管理和共享提供了良好的平臺。
參考文獻:
[1] Rajkumar Buyya.云計算:原理與范式[M].北京:機械工業(yè)出版社,2013:13-36.
[2] Stephen R.Smoot,Nam K.Tan.私有云計算:整合、虛擬化和面向服務(wù)的基礎(chǔ)設(shè)施[M].北京:機械工業(yè)出版社,2013:38-44.
[3] Dominic Betts.微軟云計算系列叢書:云遷移技術(shù)[M].北京:清華大學出版社.2013:41-49.
[4] 廣小明,胡杰,陳龍.虛擬化技術(shù)原理與實現(xiàn)[M].北京:電子工業(yè)出版社,2012:23-31.
[5] 孫麗麗,王偉峰.網(wǎng)絡(luò)存儲與虛擬化技術(shù)[M].北京:北京航空航天大學出版社,2013:24-38.
[6] 丁明一.Linux運維之道[M].北京:電子工業(yè)出版社,2014:66-74.
[7] Doug Hellmann.The Python Standard Library[M].北京:機械工業(yè)出版社,2012:44-52.
[8] Shantanu Tushar.Linux Shell Scripting Cookbook[M].北京:人民郵電出版社,2013:21-25.
[9] 顧炯炯.云計算架構(gòu)技術(shù)與實踐[M].北京:清華大學出版社,2014:136-144.
[10] 孫麗麗,王偉峰.網(wǎng)絡(luò)存儲與虛擬化技術(shù)[M].北京:北京航空航天大學出版社,2013:154-162.