黃超
(柳州城市職業(yè)學(xué)院,廣西柳州 545036)
隨著高校信息化建設(shè)程度越來越高,計算機(jī)在各學(xué)科教學(xué)中的應(yīng)用越來越普遍,機(jī)房使用越來越頻繁,機(jī)房實驗室作為教學(xué)實踐場所在高校發(fā)揮著重要作用。在互聯(lián)網(wǎng)IT技術(shù)飛速發(fā)展的背景下,高校的科研、教學(xué)等各項業(yè)務(wù)工作的信息化、智能化需求急劇擴(kuò)張,對實驗平臺的數(shù)據(jù)存儲、彈性伸縮、及時響應(yīng)等能力提出了升級轉(zhuǎn)型的需求[1]。云計算作為新的信息服務(wù)架構(gòu)模式,通過虛擬化技術(shù)將計算、存儲、網(wǎng)絡(luò)等基礎(chǔ)設(shè)施統(tǒng)一成云平臺的動態(tài)資源池,為用戶提供統(tǒng)一界面的動態(tài)、智能化服務(wù),可滿足高校信息化建設(shè)在自助化服務(wù)、降低運(yùn)維成本、提高部署效率等方面的需求。研究應(yīng)用虛擬化技術(shù)構(gòu)建機(jī)房實驗云平臺,是當(dāng)前高校信息化建設(shè)的迫切任務(wù)。
部分高校采用VMware Workstation進(jìn)行實驗教學(xué),其基于個人電腦的桌面虛擬化技術(shù)受限于單機(jī)資源的配置,無法完成中大型的實驗任務(wù)。也有部分高校采用OpenStack、VMware Vsphere技術(shù),通過對集中管理的服務(wù)器資源進(jìn)行虛擬化,進(jìn)而實現(xiàn)了支持多種操作系統(tǒng)、性能靈活擴(kuò)充、主機(jī)按需分配的實驗教學(xué)平臺。該平臺可對用戶按需分配硬件資源,靈活彈性的調(diào)配實驗環(huán)境與配置,極大的方便了師生實驗教學(xué)任務(wù)的開展[2]。采用OpenStack、VMware等傳統(tǒng)虛擬化技術(shù)構(gòu)建的實驗平臺雖然具備按需分配、彈性伸縮、響應(yīng)及時等特點,但也存在比較突出的問題:
(1)資源分配不靈活:實驗任務(wù)少時,為該實驗室配置的部分硬件資源閑置,整體利用率低;實驗任務(wù)繁重時,整體硬件資源的計算能力有限,開發(fā)效率受影響;服務(wù)器一旦出現(xiàn)重大硬件故障,虛擬機(jī)難以完成遷移并迅速啟動,影響需要提供不間斷服務(wù)的實驗任務(wù)的完成。整體的資源分配不夠靈活。
(2)資源利用率不高:基于服務(wù)器的虛擬機(jī)都是嵌套模擬pc環(huán)境,應(yīng)用程序不能直接訪問主機(jī)的硬件資源,服務(wù)器虛擬化系統(tǒng)及模擬pc系統(tǒng)環(huán)境都需要占用消耗部分硬件資源。進(jìn)而造成資源利用率不高。
(3)數(shù)據(jù)存儲成本較高:虛擬環(huán)境的數(shù)據(jù)只適用于特定的虛擬基礎(chǔ)結(jié)構(gòu),數(shù)據(jù)的存儲是不能跨平臺的;而服務(wù)器虛擬化需要的存儲容量比較大,存儲資源又是比較昂貴的。
Docker是一種輕量級的虛擬化技術(shù),可隔離進(jìn)程和資源,能夠?qū)⒎?wù)器或者虛擬機(jī)的硬件資源進(jìn)行劃分,快速地為應(yīng)用創(chuàng)建一個輕量級的、可移植的容器,每個容器都能夠獨(dú)立的運(yùn)行并且相互之間不會影響。Docker技術(shù)以應(yīng)用程序為中心,將一個應(yīng)用程序所需的相關(guān)代碼、環(huán)境配置文件等都打包一個容器,可以脫離操作操作系統(tǒng)環(huán)境而運(yùn)行,從而跨越了開發(fā)者的機(jī)器到生產(chǎn)環(huán)境機(jī)器的環(huán)境異構(gòu)性,從開發(fā)到部署實現(xiàn)流暢發(fā)布,便于后續(xù)的開發(fā)測試運(yùn)維工作的開展。與傳統(tǒng)的虛擬操作系統(tǒng)的虛擬化技術(shù)相比,Docker容器技術(shù)具有更快速的應(yīng)用啟動時間、更高效的資源利用、更好的環(huán)境兼容特性。
OpenStack是一個開源的云計算管理平臺項目,由一系列開源組件組合起來完成具體工作。OpenStack支持所有類型的云環(huán)境,能提供實施簡單、豐富、標(biāo)準(zhǔn)統(tǒng)一的云計算管理平臺。高校通過建立、運(yùn)行自己的OpenStack云計算和存儲設(shè)施平臺,可為師生提供基于數(shù)據(jù)中心級別的計算、存儲和網(wǎng)絡(luò)資源,滿足按需分配硬件資源,靈活彈性的調(diào)配實驗環(huán)境的需求。OpenStack通過各種互補(bǔ)的服務(wù)提供了基礎(chǔ)設(shè)施即服務(wù)(IaaS)的解決方案,每個服務(wù)提供API以進(jìn)行集成。Nova提供計算服務(wù),用于管理虛擬機(jī)實例的整個生命周期,根據(jù)用戶需求來提供虛擬機(jī)服務(wù),包括虛擬機(jī)創(chuàng)建、開機(jī)、關(guān)機(jī)、遷移、重啟、銷毀等操作。Swift提供存儲服務(wù),通過內(nèi)置冗余及高容錯機(jī)制實現(xiàn)對象存儲的系統(tǒng),允許進(jìn)行存儲或者檢索文件。Glance提供虛擬機(jī)鏡像服務(wù),支持多種虛擬機(jī)鏡像格式的查找檢索,有創(chuàng)建、上傳、刪除、編輯鏡像基本信息的功能。
采用Docker容器技術(shù)對實驗平臺底層架構(gòu)進(jìn)行部署和管理,實現(xiàn)硬件資源的融合管理,為上層的云終端系統(tǒng)用戶提供云服務(wù)。OpenStack是IaaS私有云服務(wù)的標(biāo)準(zhǔn),包括安全認(rèn)證服務(wù)(Keystone)、鏡像服務(wù)(Glance)、計算控制服務(wù)(Nova)、網(wǎng)絡(luò)控制服務(wù)(Neutron)等服務(wù)組件[3]。將各服務(wù)組件容器化,通過容器編排管理系統(tǒng)Kubernetes對容器集群的部署和管理,實現(xiàn)IaaS與PaaS的組合服務(wù),構(gòu)建高效統(tǒng)一的高校實驗云平臺。基于容器技術(shù)的實驗平臺主要分為基礎(chǔ)設(shè)施層、資源管理層、應(yīng)用層,整體架構(gòu)如圖1所示。
基礎(chǔ)設(shè)施層是計算、網(wǎng)絡(luò)、存儲設(shè)備等硬件資源,為云平臺提供虛擬資源池的物理設(shè)備。將大規(guī)模的物理資源虛擬化,對物理資源進(jìn)行抽象,為云計算服務(wù)提供硬件資源統(tǒng)一的管理邏輯和接口,以全局統(tǒng)一的資源池的方式進(jìn)行管理并呈現(xiàn)給用戶。
資源管理層通過Docker技術(shù)實現(xiàn)容器對、計算、網(wǎng)絡(luò)和存儲資源的管理和調(diào)度,是整個容器化平臺的核心和性能關(guān)鍵。通過Kubernetes編排部署Docker容器化的OpenStack各服務(wù)組件,向上層的應(yīng)用層提供OpenStack云計算服務(wù)。Docker容器化的OpenStack各服務(wù)具有輕便靈活、資源利用率高、可跨平臺的特性。借助Kubernetes對各容器的集群編排,高校實驗云平臺可快速靈活部署。
應(yīng)用層根據(jù)實驗平臺的業(yè)務(wù)需求,包括用戶、資源、實驗管理模塊的功能,為用戶提供便捷友好的操作接口,方便上層用戶對容器化的實驗平臺進(jìn)行靈活的訪問[4]。
圖1 實驗平臺架構(gòu)圖
開發(fā)環(huán)境包括硬件和軟件設(shè)施。硬件是學(xué)校機(jī)房的基礎(chǔ)網(wǎng)絡(luò)、各服務(wù)器、存儲等基礎(chǔ)設(shè)施資源,將服務(wù)器分為控制節(jié)點(1臺)、計算節(jié)點(1臺)、工作節(jié)點(多臺),確保各硬件可正常運(yùn)行并能相互訪問。軟件是安裝在服務(wù)器上的應(yīng)用程序或鏡像包,包括CentOS、Kubernetes、OpenStack、Docker、Ceph等,均選擇穩(wěn)定開源的版本,安裝方式為CentOS系統(tǒng)上yum install源碼安裝平臺中各服務(wù)[5]。
基礎(chǔ)設(shè)施層完成虛擬化資源池的部署。通過Kubern etes集群編排管理Docker容器化的OpenStack 各服務(wù)組件完成資源管理層部署。應(yīng)用層實現(xiàn)基于用戶的實驗教學(xué)任務(wù)的管理。整個平臺的實現(xiàn)主要在資源管理層的搭建,其部署工作主要包括部署服務(wù)集群及其容器化。
3.2.1 Kubernetes集群的部署
配置yum倉庫,設(shè)置時間同步,在所有節(jié)點上安裝docker、kubelet、kubeadm、kubectl。kubelet運(yùn)行在集群所有節(jié)點上,負(fù)責(zé)啟動Pod和容器。kubeadm用于初始化集群。kubectl是命令行工具。在控制節(jié)點上運(yùn)行kubeadm init進(jìn)程進(jìn)行初始化集群,添加網(wǎng)絡(luò)組件使各Pod容器通信正常。各工作節(jié)點修改kubelet的address和hostnameoverride參數(shù)為本機(jī)IP,加入集群中,最后通過kubectl get pods命令檢查驗證。
3.2.2 OpenStack集群的部署
將OpenStack所有服務(wù)組件容器化,在計算節(jié)點服務(wù)器上對kubernetes集群進(jìn)行訪問,安裝部署kubernetes的包管理工具h(yuǎn)elm,OpenStack-helm可以支持松散耦合的OpenStack服務(wù)及其依賴項的部署、維護(hù)和升級,通過helm開發(fā)搭建chart倉庫,快速部署協(xié)同工作,并應(yīng)對容器復(fù)雜應(yīng)用的管理。在控制節(jié)點上安裝helm服務(wù)端tiller和客戶端,對目標(biāo)集群通過values.yaml賦值生成chart實例。在工作節(jié)點上下載容器運(yùn)行tiller鏡像包,更新yaml文件后通過kubectl get pods-n kube-system命令驗證是否部署成功。
Docker高性能虛擬化技術(shù)的應(yīng)用,使高校實驗云平臺的部署更加靈活、快速、高效[6]。利用OpenStack-helm將OpenStack各服務(wù)組件封裝到容器鏡像中,實現(xiàn)各服務(wù)組件的容器化,通過容器編排管理系統(tǒng)Kubernetes對容器集群的部署和管理,實現(xiàn)IaaS與PaaS的組合服務(wù),為構(gòu)建高效統(tǒng)一的實驗平臺建設(shè)提供可行的技術(shù)解決方案。