摘 要: 使用Eucalyptus作為私有云的實(shí)現(xiàn)平臺(tái),并利用KVM制作VM鏡像實(shí)例,搭建了一個(gè)適合實(shí)驗(yàn)室資源管理控制的實(shí)驗(yàn)云計(jì)算平臺(tái)。
關(guān)鍵詞: 實(shí)驗(yàn)云;虛擬化;鏡像實(shí)例
目前實(shí)驗(yàn)室管理中面臨著大量的用戶系統(tǒng)需求和設(shè)備需求。這些需求包括:日常的教學(xué)工作需求、學(xué)生實(shí)訓(xùn)的需求,老師對(duì)科研和實(shí)驗(yàn)的需求,實(shí)驗(yàn)室部署各種管理系統(tǒng)(如設(shè)備資產(chǎn)管理系統(tǒng)、排課系統(tǒng)、開放實(shí)驗(yàn)室預(yù)約系統(tǒng)等)的需求等。如何將有限的實(shí)驗(yàn)設(shè)備資源進(jìn)行最大化的、科學(xué)合理的分配利用是當(dāng)前急需解決的一項(xiàng)重要課題。
隨著云計(jì)算的快速發(fā)展,相關(guān)云技術(shù)及產(chǎn)品的廣泛應(yīng)用,可以借助云計(jì)算的開源產(chǎn)品搭建實(shí)驗(yàn)室(實(shí)訓(xùn)中心)的私有云平臺(tái),幫助解決實(shí)驗(yàn)資源日益增長的需求問題。利用云計(jì)算的虛擬化技術(shù)可以構(gòu)建多樣化的虛擬資源,將個(gè)人桌面系統(tǒng)、服務(wù)器系統(tǒng)等操作系統(tǒng)及設(shè)備進(jìn)行虛擬化和實(shí)例化,為不同的用戶提供彈性計(jì)算系統(tǒng)架構(gòu)和設(shè)備,滿足用戶的需求。
當(dāng)前利用開源云計(jì)算產(chǎn)品搭建專用的私有云計(jì)算平臺(tái)是一個(gè)研究熱點(diǎn)。目前已有的開源云計(jì)算產(chǎn)品有 Eucalyptus、OpenNebula、Nimbus、ECP和OpenStack 。參考文獻(xiàn)[1-2]對(duì)這些產(chǎn)品的VM管理、集群管理、狀態(tài)監(jiān)控、資源調(diào)度和網(wǎng)絡(luò)管理等方面的進(jìn)行比較分析[1-2],從技術(shù)和應(yīng)用范圍來看Eucalyptus開源產(chǎn)品比較適合用于構(gòu)建所需的實(shí)驗(yàn)云計(jì)算平臺(tái)。本文采用Eucalyptus作為實(shí)驗(yàn)云的實(shí)現(xiàn)平臺(tái),并利用KVM技術(shù)進(jìn)行VM管理,搭建了一個(gè)適合實(shí)驗(yàn)室(實(shí)訓(xùn)中心)資源管理控制的私有云計(jì)算平臺(tái)。
1 相關(guān)技術(shù)
1.1 Eucalyptus
Eucalyptus是由Nurmi D 等人開發(fā)的一個(gè)開源的云計(jì)算基礎(chǔ)設(shè)施服務(wù)(IaaS),與Amazon EC2的服務(wù)接口兼容[3]。Eucalyptus采用模塊化的設(shè)計(jì),由節(jié)點(diǎn)控制器(Node Controller)、集群控制器(Cluster Controller)、云控制器(Cloud Controller)、存儲(chǔ)控制器(Storage Controller)和Walrus組成。這些組件可以進(jìn)行替換和升級(jí),具有容易擴(kuò)展、安裝和維護(hù) 的特點(diǎn)。Eucalyptus能夠工作在Linux/Ubuntu,Red Hat Enterprise Linux,CentOS等多種操作系統(tǒng)上,并且支持VMware, Xen和KVM hypervisors等虛擬化技術(shù),幫助用戶搭建所需的云基礎(chǔ)設(shè)施平臺(tái)[4-5]。
1.2 KVM虛擬化
KVM(Kernel-based Virtual Machine)是由以色列的一個(gè)開源組織Qumranet所開發(fā),是一種開源的系統(tǒng)虛擬化模塊[6]。從LinuxV2.6.20版起KVM內(nèi)嵌在Linux內(nèi)核中,將 Linux 主機(jī)變成一個(gè)虛擬機(jī)監(jiān)視器,使它擁有本地虛擬化能力,能夠方便地使用Linux內(nèi)核提供的內(nèi)存管理、多處理器支持等功能,易于實(shí)現(xiàn)。KVM是采用基于x86硬件虛擬化技術(shù),可以運(yùn)行在Intel VT-x和AMD SVM所支持的設(shè)備上[7]。KVM的虛擬化實(shí)現(xiàn)是采用宿主機(jī)(Host based)模型,并提供了一個(gè)虛擬化框架,需要QEMU作為平臺(tái)虛擬化的協(xié)助工具,能夠?qū)μ幚砥?、顯卡、磁盤、網(wǎng)絡(luò)設(shè)備等外設(shè)虛擬成完整的計(jì)算機(jī)系統(tǒng)。另外,KVM還需使用Libvirt管理虛擬機(jī)、API庫、deamon和virsh命令行工具協(xié)同工作,才能完全實(shí)現(xiàn)云計(jì)算平臺(tái)的虛擬化工作[8-9]。
2 實(shí)驗(yàn)云拓?fù)湓O(shè)計(jì)
在Eucalyptus的體系結(jié)構(gòu)設(shè)計(jì)中,云控制器是整個(gè)Eucalyptus系統(tǒng)的核心,負(fù)責(zé)高層次的資源調(diào)度。Walrus是一個(gè)類似于Amazon S3的存儲(chǔ)服務(wù),用于存儲(chǔ)虛擬機(jī)映像和用戶數(shù)據(jù)。集群控制器是一個(gè)集群的前端,負(fù)責(zé)協(xié)調(diào)一個(gè)集群內(nèi)的計(jì)算資源,并且管理集群內(nèi)的網(wǎng)絡(luò)流量。存儲(chǔ)控制器是一個(gè)與Amazon EBS類似的存儲(chǔ)塊設(shè)備,可以用來存儲(chǔ)業(yè)務(wù)數(shù)據(jù)。節(jié)點(diǎn)控制器是最終的計(jì)算節(jié)點(diǎn),通過調(diào)用操作系統(tǒng)層的虛擬化技術(shù)來啟動(dòng)和關(guān)閉虛擬機(jī)[10]。在同一個(gè)集群內(nèi)的所有計(jì)算節(jié)點(diǎn)必須在同一個(gè)子網(wǎng)內(nèi)。在一個(gè)集群內(nèi)通常需要部署一臺(tái)存儲(chǔ)服務(wù)器,為該集群內(nèi)的計(jì)算節(jié)點(diǎn)提供數(shù)據(jù)存儲(chǔ)服務(wù)。
根據(jù)Eucalyptus的體系設(shè)計(jì)結(jié)構(gòu)和實(shí)驗(yàn)(實(shí)訓(xùn))中心現(xiàn)有的設(shè)備資源,將云控制器和Walrus部署到一臺(tái)服務(wù)器上作為實(shí)驗(yàn)云的控制中心;集群控制器和存儲(chǔ)器安裝到一臺(tái)服務(wù)器上作為實(shí)驗(yàn)云的集群管理中心;每個(gè)接入節(jié)點(diǎn)由4臺(tái)高性能工作站組成,并在每臺(tái)工作站上實(shí)施KVM虛擬化,安裝需要的多個(gè)VM(Virtual Machines)系統(tǒng)。實(shí)驗(yàn)(實(shí)訓(xùn))中心的任何一臺(tái)PC都可以作為客戶端訪問實(shí)驗(yàn)云上的虛擬實(shí)例,進(jìn)行相關(guān)的業(yè)務(wù)操作。實(shí)驗(yàn)云的網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)如圖1所示,云的所有組成部分均部署在同一個(gè)局域網(wǎng)中,便于實(shí)驗(yàn)員對(duì)云平臺(tái)的管理維護(hù)和安全控制。
3 實(shí)驗(yàn)云實(shí)現(xiàn)
3.1 Eucalyptus平臺(tái)搭建
根據(jù)實(shí)驗(yàn)云網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)設(shè)計(jì),進(jìn)行網(wǎng)絡(luò)IP地址規(guī)劃,合理分配設(shè)備需要的IP地址,具體的分配如表1所示。
?。?)系統(tǒng)安裝
為控制中心、集群管理和接入節(jié)點(diǎn)的服務(wù)器安裝Ubunutu Server系統(tǒng)。在控制中心的服務(wù)器上安裝云控制器和Walrus模塊,集群管理的服務(wù)器上安裝cluster controller和strorage controller模塊。每臺(tái)接入節(jié)點(diǎn)的工作站除了安裝Node節(jié)點(diǎn)模塊外,還需安裝bridge-util、kvm和openssh-server3個(gè)額外的軟件包。bridge-util用于建立網(wǎng)橋,kvm用于VM管理,openssh-server為Node提供ssh服務(wù)。
在安裝的過程中需要設(shè)置好云控制器的主機(jī)名稱、虛擬機(jī)內(nèi)網(wǎng)模式、網(wǎng)段、子網(wǎng)掩碼和DNS以及集群管理的cluster name等參數(shù)內(nèi)容。在Node系統(tǒng)中需要配置以太網(wǎng)接口為橋接模式,所有的VM系統(tǒng)的虛擬網(wǎng)絡(luò)接口將接入到這個(gè)橋上,使用“sudo passwd <password>”命令設(shè)置臨時(shí)的Eucalyptus用戶密碼方便接入節(jié)點(diǎn)與控制中心建立連接。
(2)系統(tǒng)模塊注冊(cè)
在控制中心的云控制器中需要對(duì)Walrus、Cluster Controller和Strorage Controller進(jìn)行注冊(cè),實(shí)現(xiàn)云控制器與各個(gè)模塊的連接。具體實(shí)現(xiàn)命令如下。
euca_conf --register-walrus 10.34.35.10
euca_conf --register-cluster ClusterAIBLab 10.34.35.11
euca_conf --register-sccluster 10.34.35.11
注冊(cè)成功后系統(tǒng)會(huì)自動(dòng)啟動(dòng)這3個(gè)模塊的服務(wù)。然后需要注冊(cè)Node節(jié)點(diǎn),Node用于運(yùn)行VM實(shí)例。先配置云控制器與Node的時(shí)間同步,利用“sudo -u eucalyptus ssh-copy-id -i,eucalyptus/.ssh/id_rsa.pub,eucalyptus@10.34.35.12”命令將ssh公鑰傳輸?shù)礁鱾€(gè)Node中。在Node中啟動(dòng)Eucalyptus-nc服務(wù)后,控制中心的云控制器執(zhí)行“euca_conf --register-nodes 10.34.35.12”命令,依次找到云拓?fù)渲?個(gè)Node節(jié)點(diǎn)的計(jì)算機(jī)并進(jìn)行注冊(cè)。
(3)系統(tǒng)配置
在控制中心的服務(wù)器瀏覽器中輸入“https://10.34.35.10:8443”地址,進(jìn)入云控制器平臺(tái)下載(x509)安全證書,運(yùn)行Eucalyptus系統(tǒng)。第一次登錄時(shí)利用系統(tǒng)提供的默認(rèn)用戶名和密碼(均為admin)進(jìn)入系統(tǒng),更改管理員密碼、設(shè)置管理員的電子郵件地址、確認(rèn)云控制器主機(jī)的IP和查看各個(gè)注冊(cè)模塊。為了便于用戶管理云平臺(tái)的虛擬機(jī)映像文件(EMI)資源,需要在服務(wù)器上安裝EC2 API and AMI管理工具。利用AMI管理工具上載Eucalyptus系統(tǒng)默認(rèn)的Linux系統(tǒng)鏡像系統(tǒng)實(shí)例和綁定AMI-ID等,借助EC2工具進(jìn)行虛擬機(jī)映像實(shí)例管理。所有連接到控制中心的客戶端必須下載安裝(x509)安全證書才能使用實(shí)驗(yàn)云的各種資源。
3.2 VM鏡像制作
完成Eucalyptus實(shí)驗(yàn)云平臺(tái)的搭建工作后需要向云平臺(tái)添加鏡像系統(tǒng),通過鏡像的實(shí)例化(系統(tǒng)虛擬化)為用戶提供科研服務(wù)和實(shí)驗(yàn)服務(wù)。利用Win2008R2的ISO安裝文件在KVM中創(chuàng)建接入節(jié)點(diǎn)需要的VM,具體實(shí)現(xiàn)步驟如下。
(1)創(chuàng)建虛擬系統(tǒng)
在接入節(jié)點(diǎn)的系統(tǒng)下創(chuàng)建存放鏡像文件需要的目錄,命名為virtualsys。使用“$dd if=/dev/zero of=~/virtualsys/ windows.win2008.img bs=1M count=20000”命令創(chuàng)建一個(gè)文件大小為20 GB的Windows Server 2008虛擬機(jī)磁盤文件。執(zhí)行“qemu-kvm -drive file= ~/virtualsys//windows.win2008.img,If=scsi,boot=on -cdrom Win2008R2.iso -m 1024 -boot d”命令進(jìn)行系統(tǒng)安裝,Win2008在qume的環(huán)境下完成安裝后進(jìn)行遠(yuǎn)程桌面配置和建立遠(yuǎn)程桌面用戶。
?。?)創(chuàng)建ramdisk文件
安裝syslinux并在/usr/lib/syslinux目錄下找到memdisk文件,將其復(fù)制到~/virtualsys目錄下。利用“$dd if=/dev/zero of=~/virtualsys/win28-boot.img bs=512 count=2880”命令創(chuàng)建floppy鏡像文件win28-boot.img。重啟Win2008虛擬機(jī),將floppy加載到虛擬機(jī)中。進(jìn)入Windows Server 2008系統(tǒng),為C盤下的boot.ini文件添加Windows系統(tǒng)啟動(dòng)信息,然后將ntldr、ntdetect.com、sym_hi.sys和boot.ini文件復(fù)制到已經(jīng)格式化的floppy中。復(fù)制后將floppy中的sym_hi.sys改名為Ntbootdd.sys,完成Win2008虛擬機(jī)啟動(dòng)引導(dǎo)盤制作。
(3)上傳虛擬鏡像
memdisk對(duì)應(yīng)kernel,win28-boot.img對(duì)應(yīng)ramdisk,windows.win2008.img對(duì)應(yīng)rootfs,分別將這3個(gè)文件進(jìn)行上傳,并同時(shí)利用“euca-bundle-image -i”命令將rootfs與kernel和ramdisk綁定,完成接入節(jié)點(diǎn)的VM創(chuàng)建。
3.3 啟動(dòng)VM實(shí)例
鏡像上傳后,在云控制中使用“euca-describe-images”命令查看虛擬機(jī)是否已經(jīng)成功。上傳后進(jìn)行鏡像實(shí)例注冊(cè),開放22端口并以規(guī)劃好的VM地址段分配IP,系統(tǒng)會(huì)為每個(gè)鏡像實(shí)例分配一個(gè)“emi-ID”編號(hào),通過執(zhí)行“euca-run-instances -t c1.large emi-ID”命令,依次啟動(dòng)Eucalyptus中的鏡像實(shí)例。
在云控制器中執(zhí)行“watch -n5 euca-describe-instances”命令查看虛擬機(jī)實(shí)例的運(yùn)行情況,如圖2所示。為了便于對(duì)VM的管理,在接入節(jié)點(diǎn)上安裝了KVM的圖形管理工具軟件,如圖3所示。根據(jù)虛擬系統(tǒng)管理軟件可以幫助實(shí)驗(yàn)員查看虛擬實(shí)例的運(yùn)行情況,掌握實(shí)例對(duì)資源的占用情況,便于動(dòng)態(tài)調(diào)節(jié)實(shí)例。
實(shí)驗(yàn)(實(shí)訓(xùn))中心的客戶端可以使用“$ rdesktop -u username -p passwd 172.16.1.3 -f”命令遠(yuǎn)程登錄IP地址為172.16.1.3的接入節(jié)點(diǎn)上的一臺(tái)運(yùn)行中的VM系統(tǒng)。
3.4 防火墻配置
為保證實(shí)驗(yàn)(實(shí)訓(xùn))中心的客戶端與實(shí)驗(yàn)云上的VM能夠互相訪問,需要對(duì)Eucalyptus的包過濾系統(tǒng)進(jìn)行設(shè)置。
在iptables包過濾防火墻中先清除原則的規(guī)劃,然后添加允許INPUT和FORWARD鏈規(guī)則,用于向內(nèi)和向外轉(zhuǎn)發(fā)數(shù)據(jù)包,并設(shè)置172.16.1.3~254的網(wǎng)段都能通過控制中心的eth0(連接外網(wǎng))接口向外發(fā)送數(shù)據(jù)包。另外,還需要設(shè)置校園網(wǎng)用戶對(duì)實(shí)驗(yàn)云上的VM服務(wù)器的訪問,以訪問IP為172.16.1.3的網(wǎng)站服務(wù)器為例,在iptables中添加如下命令:
iptables -t nat -a PREROUTING -i eth0 -p tcp -m tcp -dport 22 -j DNAT -to-destination 172.16.1.3:22
iptables -t nat -a PREROUTING -i eth0 -p tcp -m tcp -dport 8089 -j DNAT -to-destination 172.16.1.3:8089
執(zhí)行以上兩條命令后,校園網(wǎng)的客戶端用戶可以訪問到實(shí)驗(yàn)(實(shí)訓(xùn))中心的網(wǎng)站服務(wù)器實(shí)例。
本文通過對(duì)開源云計(jì)算產(chǎn)品的研究,選擇Eucalyptus作為實(shí)驗(yàn)云計(jì)算的實(shí)現(xiàn)平臺(tái)。利用Eucalyptus的系統(tǒng)架構(gòu)設(shè)計(jì)了實(shí)驗(yàn)云的網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu),在各個(gè)拓?fù)涔?jié)點(diǎn)上安裝所需的操作系統(tǒng),注冊(cè)各個(gè)組成模塊和配置網(wǎng)絡(luò)參數(shù);然后利用KVM虛擬化技術(shù)進(jìn)行實(shí)驗(yàn)云的鏡像系統(tǒng)制作、上傳、綁定和啟動(dòng)實(shí)例;最后配置云平臺(tái)的iptables包過濾防火墻,實(shí)現(xiàn)校園網(wǎng)用戶對(duì)實(shí)驗(yàn)云上運(yùn)行實(shí)例的訪問,完成實(shí)驗(yàn)云計(jì)算平臺(tái)的搭建。未來的研究重點(diǎn)是利用已搭建好的實(shí)驗(yàn)云平臺(tái)設(shè)計(jì)開發(fā)實(shí)驗(yàn)室虛擬桌面系統(tǒng)和建設(shè)虛擬實(shí)驗(yàn)室,拓展實(shí)驗(yàn)云的服務(wù)提供能力,更好地解決校園用戶與實(shí)驗(yàn)室資源的供需問題。
參考文獻(xiàn)
[1] 林利,石文昌.構(gòu)建云計(jì)算平臺(tái)的開源軟件綜述[J].計(jì)算機(jī)科學(xué),2012,39(11):1-7.
[2] 陳吉榮.構(gòu)建私有云計(jì)算平臺(tái)的EUCALYPTUS架構(gòu)分析[J].電腦知識(shí)與技術(shù),2010,6(15):3973-3975.
[3] 崔巍, 李益發(fā), 斯雪明.基于Eucalyptus的基礎(chǔ)設(shè)施即服務(wù)云框架協(xié)議設(shè)計(jì)[J].電子與信息學(xué)報(bào),2012,34(7):1748-1754.
[4] 陳仲.基于EUCALYPTUS的虛擬云改進(jìn)研究[J].現(xiàn)代情報(bào),2011,31(5):152-157.
[5] 方薇.Eucalyptus開源框架下云平臺(tái)的構(gòu)建與性能分析[J].計(jì)算機(jī)系統(tǒng)應(yīng)用,2012,12(6):1-5.
[6] 崔澤永.基于KVM的虛擬化研究及應(yīng)用[J].計(jì)算機(jī)技術(shù)與發(fā)展,2011,21(6):108-111.
[7] 黃煜.KVM虛擬化技術(shù)中處理器隔離的實(shí)現(xiàn)[J].計(jì)算機(jī)系統(tǒng)應(yīng)用,2012,12(1):179-182.
[8] 姚華超,王振宇.基于KVM_QEMU與Libvirt的虛擬化資源池構(gòu)建[J].計(jì)算機(jī)與現(xiàn)代化,2013(7):26-33.
[9] 李斌.基于KVM的服務(wù)器虛擬化環(huán)境實(shí)現(xiàn)[J].洛陽理工學(xué)院學(xué)報(bào)(自然科學(xué)版),2013,23(2):66-69.
[10]張帆.基于Eucalyptus構(gòu)建私有云計(jì)算平臺(tái)[J].電信科 學(xué),2011(11):57-61.