李 磊,高 巖,呂念玲,鄧洪波,王 云,秦慧平,梁志明
(1.華南理工大學(xué) 電子與信息學(xué)院,廣州 510641;2.工業(yè)和信息化部電子第五研究所 軟件質(zhì)量工程研究中心,廣州 510610)
近些年,隨著云計算在教育中的應(yīng)用和普及,很多高校都構(gòu)建了面向教學(xué)和科研的云計算平臺,降低了投資和運營成本,簡化了應(yīng)用程序的部署和管理,提高了應(yīng)用程序和基礎(chǔ)設(shè)施的靈活性,優(yōu)化了教學(xué)和科研的資源環(huán)境[1-3]。然而,面對不同類型的服務(wù)和計算資源的需求,如何能充分發(fā)揮云計算基礎(chǔ)設(shè)施即服務(wù)(IaaS)在實驗開發(fā)環(huán)境方面的快速部署、平臺即服務(wù)(PaaS)在計算實驗環(huán)境的快速擴展和實現(xiàn)軟件即服務(wù)(SaaS)在教學(xué)資源共享平臺彈性構(gòu)建的優(yōu)點,從而能進一步提高資源環(huán)境的使用效率和服務(wù)質(zhì)量,成為云計算在教學(xué)應(yīng)用中的關(guān)注點之一[4-5]。
前期構(gòu)建的OpenStack教學(xué)科研云計算平臺[6]已經(jīng)具備了彈性資源和按需使用等優(yōu)點,利用OpenStack Neutron服務(wù)組件實現(xiàn)了對網(wǎng)絡(luò)資源的共享和隔離,可按照不同的實驗項目對虛擬機資源進行二層網(wǎng)絡(luò)資源隔離,提高了計算資源服務(wù)的可管理性[7]。然而,在面對不同層次的實驗教學(xué)資源服務(wù)需求時,傳統(tǒng)架構(gòu)的OpenStack云平臺[6,8-10]無法實現(xiàn)硬件的配置與服務(wù)所需資源的匹配,難以保證計算資源服務(wù)的質(zhì)量和使用效率,無法實現(xiàn)云平臺服務(wù)的異構(gòu)化[11]。因此,在基于前期構(gòu)建的OpenStack教學(xué)科研云計算平臺[6]的基礎(chǔ)上,實驗教學(xué)云平臺的構(gòu)建應(yīng)該針對實驗教學(xué)服務(wù)的多層次(IaaS、PaaS和SaaS)類型進行資源的按需劃分和規(guī)劃,多層次服務(wù)實驗教學(xué)云平臺的結(jié)構(gòu)如圖1所示。
圖1 多層次服務(wù)實驗教學(xué)云平臺結(jié)構(gòu)圖
在計算資源服務(wù)的部署上,對比于傳統(tǒng)的OpenStack實驗教學(xué)平臺[6,8-10],多層次服務(wù)實驗教學(xué)云平臺充分利用了OpenStack多區(qū)域(Region)結(jié)構(gòu)對不同層次服務(wù)進行區(qū)域劃分[12],包括了IaaS、PaaS和SaaS 3個層次服務(wù)區(qū)域;同時在基礎(chǔ)組件服務(wù)的基礎(chǔ)上,將用戶信息和權(quán)限管理功能組件Keystone、虛擬機鏡像服務(wù)組件Glance和基于Djiango架構(gòu)的Web網(wǎng)頁接入服務(wù)Horizon組件統(tǒng)一部署并整合為OpenStack公共組件服務(wù)。因此,多層次服務(wù)實驗教學(xué)云平臺結(jié)構(gòu)不僅實現(xiàn)了對不同類型服務(wù)的資源劃分,也為針對性的硬件配置優(yōu)化奠定了基礎(chǔ);同時也保留對用戶信息認證、網(wǎng)絡(luò)接入和虛擬機鏡像服務(wù)的統(tǒng)一管理,實現(xiàn)了資源異構(gòu)服務(wù)。
依據(jù)IaaS、PaaS和SaaS服務(wù)所面向不同層次教學(xué)服務(wù)的特點,3個層次區(qū)域內(nèi)計算節(jié)點的硬件資源配置和規(guī)劃如表1所示。
IaaS服務(wù)主要是提供實驗環(huán)境的快速構(gòu)建,硬件配置需要兼顧計算和存儲能力??紤]以最大配置為8個vCPU(虛擬CPU)、8GB RAM虛擬機為例,其中每個虛擬CPU需要一個獨立線程進行處理,每臺虛擬機一般為50%的使用概率[13],最大可提供30臺虛擬機。在表1的配置中,IaaS區(qū)域的每個計算節(jié)點可同時滿足3臺虛擬機對CPU的需求,并綜合考慮內(nèi)存容量,其計算節(jié)點數(shù)量為:
(1)
PaaS服務(wù)主要是提供云端實驗計算環(huán)境的快速擴展,如Hadoop和Spark[14-15]實驗計算平臺。一般而言,PaaS服務(wù)計算節(jié)點的CPU和內(nèi)存配置要高于IaaS服務(wù)的硬件資源配置。以每個實驗提交的計算任務(wù)數(shù)據(jù)為100 MB,每個CPU處理任務(wù)一般為50%的使用概率[13],同時可提交60個計算任務(wù)和支持10個實驗課程為例。在表1的配置中,綜合考慮CPU計算能力和內(nèi)存容量,PaaS區(qū)域的計算節(jié)點數(shù)量為:
(2)
SaaS服務(wù)主要是提供在線的教學(xué)服務(wù),如資料下載、在線教學(xué)視頻播放等。其中在線教學(xué)視頻一般為FLV視頻格式,播放時CPU占用率較低[16]。因此,SaaS服務(wù)的CPU和內(nèi)存的配置可低于IaaS服務(wù)的硬件資源配置??紤]以單個視頻播放CPU負載為25%,同時最大可支持150個教學(xué)視頻播放為例。在表1配置中,SaaS區(qū)域服務(wù)的計算節(jié)點數(shù)量為:
(3)
IaaS和SaaS服務(wù)為了保證實驗數(shù)據(jù)和教學(xué)相關(guān)資料存儲的安全性,其計算節(jié)點采用了2塊硬盤作為RAID配置,提供相關(guān)數(shù)據(jù)的冗余存儲和備份;PaaS服務(wù)主要是面對數(shù)據(jù)流的計算服務(wù),為了節(jié)省硬件的成本,采用單硬盤存儲可滿足需求。綜上所述,通過不同層次服務(wù)的資源配置和規(guī)劃,使得云平臺在面對不同的服務(wù)時可按需進行物理資源的配置和劃分,提高資源的可管理性和硬件使用的效用比,實現(xiàn)服務(wù)的異構(gòu)化。
按照3個層次區(qū)域的硬件資源配置規(guī)劃,多層次服務(wù)實驗教學(xué)云平臺的每個區(qū)域由一套完整的Nova、Cinder和Neutron組件服務(wù)負責(zé)該區(qū)域內(nèi)虛擬機、網(wǎng)絡(luò)存儲和網(wǎng)絡(luò)資源的管理和調(diào)度,主要的部署流程如圖2所示。
圖2 多區(qū)域服務(wù)組件部署的主要流程
在前期工作的基礎(chǔ)上[6],按照相同的過程在3個區(qū)域內(nèi)完成Nova、Cinder和Neutron服務(wù)組件的部署后,基于OpenStack平臺的多層次服務(wù)云平臺部署流程包括:①在公共組件服務(wù)的Keystone服務(wù)內(nèi)分別為3個區(qū)域創(chuàng)建Nova、Cinder和Neutron服務(wù)組件的Endpoint(服務(wù)端點)名稱;②將區(qū)域內(nèi)的服務(wù)組件權(quán)限認證地址修改為公共組件Keystone服務(wù)的地址和端口;③修改區(qū)域內(nèi)服務(wù)組件對應(yīng)的配置文件,使得區(qū)域內(nèi)的服務(wù)能接入到平臺的公共組件Keystone、Glance和Horizon服務(wù)中;④統(tǒng)一各個區(qū)域內(nèi)各個服務(wù)的管理密碼內(nèi)容;⑤修改各個區(qū)域內(nèi)的Nova服務(wù)的鏡像配置為公共服務(wù)的Glance API地址。完成部署后,多層次服務(wù)實驗教學(xué)云平臺內(nèi)區(qū)域的結(jié)構(gòu)如圖3所示。
圖中每個區(qū)域內(nèi)的網(wǎng)絡(luò)節(jié)點具備3個網(wǎng)絡(luò)端口,分別用于管理網(wǎng)絡(luò)、虛擬機內(nèi)網(wǎng)和外網(wǎng)的接入。其中管理網(wǎng)絡(luò)負責(zé)和區(qū)域內(nèi)不同服務(wù)組件之間管理和控制信息的交互;虛擬機內(nèi)網(wǎng)利用Neutron服務(wù)的2層網(wǎng)絡(luò)隔離實現(xiàn)區(qū)域內(nèi)不同實驗資源之間的網(wǎng)絡(luò)資源隔離,使得不同實驗的虛擬機集群的IP可以重復(fù),避免了不同教學(xué)實驗項目虛擬機資源的相互干擾;外網(wǎng)接入使得每個實驗虛擬機集群可通過獨立的公網(wǎng)IP訪問公網(wǎng),提供云計算資源的對外接入訪問。
圖3 區(qū)域內(nèi)的服務(wù)組件結(jié)構(gòu)原理圖
區(qū)域管理節(jié)點負責(zé)運行Nova、Cinder和Neutron的管理服務(wù)組件,負責(zé)和公共組件服務(wù)進行通信,實現(xiàn)云平臺對資源調(diào)度的統(tǒng)一管理;存儲節(jié)點通過運行LVM服務(wù)提供網(wǎng)絡(luò)卷存儲服務(wù),使用iSCSI網(wǎng)絡(luò)協(xié)議和Cinder服務(wù)提供虛擬機在線網(wǎng)絡(luò)存儲的掛載,實現(xiàn)數(shù)據(jù)存儲的擴展和備份[17];計算節(jié)點運行nova-compute和neutron-server服務(wù)對該節(jié)點啟動的虛擬機和網(wǎng)絡(luò)資源進行調(diào)度和管理。
由于網(wǎng)絡(luò)是云平臺的資源訪問的重要途徑,因此為了提高網(wǎng)絡(luò)接入的高可用性,每個區(qū)域網(wǎng)絡(luò)節(jié)點采用了高可用性結(jié)構(gòu)進行部署,即采用多臺服務(wù)器同時運行neutron-l3-agent服務(wù),實現(xiàn)多節(jié)點的網(wǎng)絡(luò)接入的負載均衡,避免網(wǎng)絡(luò)單點化故障。
根據(jù)不同層次服務(wù)(IaaS、PaaS和SaaS)的特點,多層次服務(wù)云平臺的虛擬機鏡像制作面向不同服務(wù)需求的虛擬機鏡像提供不同的資源服務(wù),其配置如表2所示。
表2 虛擬機鏡像配置表
為了實現(xiàn)計算資源的按需使用,云平臺規(guī)劃了多種CPU、內(nèi)存和硬盤的虛擬機配置組合,滿足不同服務(wù)資源的需求,使得計算資源可以按需進行使用,配置如表3所示。
表3 虛擬機配置組合列表
在實驗教學(xué)的應(yīng)用方面,實驗課程管理員(主要是課程或者實驗室的相關(guān)負責(zé)人)作為一個OpenStack操作的租戶(Tenant),每個租戶按照實驗課程的資源和服務(wù)類型構(gòu)建所需的IaaS、PaaS和SaaS資源提供實驗教學(xué)所需的環(huán)境。
4.2.1 面向IaaS服務(wù)的實驗教學(xué)應(yīng)用
在面對不同的實驗教學(xué)項目時,管理員可按需快速地啟動已安裝好開發(fā)軟件的虛擬機提供在線實驗環(huán)境的快速部署。以嵌入式系統(tǒng)課程為例,管理員按照實驗所需的資源配置快速創(chuàng)建一定數(shù)量的虛擬機,包括具備gcc、Eclipse和Intellij idea開發(fā)環(huán)境的虛擬機,并在實驗課程開始前將虛擬機按需分配給參與實驗教學(xué)的學(xué)生,虛擬機管理界面如圖4所示。其中實驗開發(fā)環(huán)境主要是滿足計算和編譯服務(wù),因此需要同時考慮CPU的計算能力和內(nèi)存的容量,虛擬機的配置一般為M1.medium和M1.large。
圖4 IaaS服務(wù)虛擬機管理界面
4.2.2 面向PaaS服務(wù)的實驗教學(xué)應(yīng)用
在面對數(shù)據(jù)分析、分布式計算和機器學(xué)習(xí)等相關(guān)實驗課程時,管理員可利用云平臺快速地擴展實驗課程需要的PaaS實驗計算環(huán)境。在實驗課程開始前,管理員按照實驗教學(xué)所需的計算能力啟動一定數(shù)量的Hadoop或者Spark服務(wù)鏡像虛擬機,并按照網(wǎng)絡(luò)的實際參數(shù)修改鏡像的配置,例如修改Hadoop的Master和Slave虛擬機的IP、端口以及集群管理模式等參數(shù),實現(xiàn)PaaS實驗計算環(huán)境的快速擴展。同時利用Neutron服務(wù)的2層網(wǎng)絡(luò)隔離功能,使得多個實驗計算環(huán)境集群在彈性擴展時,計算集群內(nèi)的IP獨立、可連續(xù)并且不受其他集群配置的干擾,提高資源的可管理性。
其中Hadoop和Spark是不同類型的計算框架,Hadoop主要是考慮CPU的計算能力和硬盤的存儲,虛擬機的配置一般為M1.small和M1.large;Spark是內(nèi)存計算類型,主要考慮到CPU的計算能力和內(nèi)存容量,虛擬機的配置一般為M1.medium和M1.xlarge。PaaS服務(wù)計算資源結(jié)構(gòu)示意圖如圖5所示。
圖5 PaaS服務(wù)計算資源結(jié)構(gòu)示意圖
4.2.3 面向SaaS實驗教學(xué)的應(yīng)用
SaaS服務(wù)主要是提供實驗課程的在線學(xué)習(xí)服務(wù),云平臺采用了Moodle軟件提供在線教學(xué)服務(wù)的快速構(gòu)建[18]。每個實驗課程管理員可直接按需啟動表2中的SaaS服務(wù)虛擬機鏡像,包括了負載均衡、Apache PHP網(wǎng)頁服務(wù)和MySQL數(shù)據(jù)庫服務(wù)鏡像,按照在線教學(xué)服務(wù)的需求快速構(gòu)建一套完整的Moodle在線服務(wù)集群。在完成服務(wù)集群的構(gòu)建后,參與課程的學(xué)生和老師可直接利用Moodle軟件提供的功能實現(xiàn)在線教學(xué)服務(wù),包括課程的講義、題庫、實驗代碼和在線教學(xué)視頻服務(wù)等。
由于Moodle軟件是將配置信息存儲于數(shù)據(jù)庫內(nèi),為了保證集群在不同時段的服務(wù)處理能力,Apache PHP網(wǎng)頁服務(wù)可以利用云計算的彈性特點實現(xiàn)在線的擴容,即當(dāng)Apache PHP網(wǎng)頁服務(wù)端負載較高時,可由管理員新啟動一個虛擬機,并修改相關(guān)的數(shù)據(jù)庫信息配置,將該虛擬機增加到所屬負載均衡服務(wù)的后端內(nèi)完成服務(wù)計算能力的擴展。以嵌入式系統(tǒng)實驗課程為例,SaaS在線學(xué)習(xí)服務(wù)資源結(jié)構(gòu)示意圖如圖6所示。
圖6 SaaS在線學(xué)習(xí)服務(wù)資源結(jié)構(gòu)示意圖
云計算的應(yīng)用不僅能改善實驗資源的環(huán)境,也降低了實驗室的維護成本?;贠penStack構(gòu)建了多層次服務(wù)實驗教學(xué)云平臺,并對其進行了設(shè)計與應(yīng)用;該平臺通過對不同層次服務(wù)(IaaS、PaaS和SaaS)區(qū)域資源的劃分和規(guī)劃,不僅實現(xiàn)了不同層次服務(wù)實驗資源的快速、彈性和按需使用,同時也進一步提高了硬件資源的效用比,提高了服務(wù)的質(zhì)量,實現(xiàn)了資源的異構(gòu)化,優(yōu)化了實驗資源的使用,是面向?qū)嶒灲虒W(xué)云計算平臺構(gòu)建和應(yīng)用的一次成功嘗試。