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