黃超
(柳州城市職業學院,廣西柳州 545036)
隨著高校信息化建設程度越來越高,計算機在各學科教學中的應用越來越普遍,機房使用越來越頻繁,機房實驗室作為教學實踐場所在高校發揮著重要作用。在互聯網IT技術飛速發展的背景下,高校的科研、教學等各項業務工作的信息化、智能化需求急劇擴張,對實驗平臺的數據存儲、彈性伸縮、及時響應等能力提出了升級轉型的需求[1]。云計算作為新的信息服務架構模式,通過虛擬化技術將計算、存儲、網絡等基礎設施統一成云平臺的動態資源池,為用戶提供統一界面的動態、智能化服務,可滿足高校信息化建設在自助化服務、降低運維成本、提高部署效率等方面的需求。研究應用虛擬化技術構建機房實驗云平臺,是當前高校信息化建設的迫切任務。
部分高校采用VMware Workstation進行實驗教學,其基于個人電腦的桌面虛擬化技術受限于單機資源的配置,無法完成中大型的實驗任務。也有部分高校采用OpenStack、VMware Vsphere技術,通過對集中管理的服務器資源進行虛擬化,進而實現了支持多種操作系統、性能靈活擴充、主機按需分配的實驗教學平臺。該平臺可對用戶按需分配硬件資源,靈活彈性的調配實驗環境與配置,極大的方便了師生實驗教學任務的開展[2]。采用OpenStack、VMware等傳統虛擬化技術構建的實驗平臺雖然具備按需分配、彈性伸縮、響應及時等特點,但也存在比較突出的問題:
(1)資源分配不靈活:實驗任務少時,為該實驗室配置的部分硬件資源閑置,整體利用率低;實驗任務繁重時,整體硬件資源的計算能力有限,開發效率受影響;服務器一旦出現重大硬件故障,虛擬機難以完成遷移并迅速啟動,影響需要提供不間斷服務的實驗任務的完成。整體的資源分配不夠靈活。
(2)資源利用率不高:基于服務器的虛擬機都是嵌套模擬pc環境,應用程序不能直接訪問主機的硬件資源,服務器虛擬化系統及模擬pc系統環境都需要占用消耗部分硬件資源。進而造成資源利用率不高。
(3)數據存儲成本較高:虛擬環境的數據只適用于特定的虛擬基礎結構,數據的存儲是不能跨平臺的;而服務器虛擬化需要的存儲容量比較大,存儲資源又是比較昂貴的。
Docker是一種輕量級的虛擬化技術,可隔離進程和資源,能夠將服務器或者虛擬機的硬件資源進行劃分,快速地為應用創建一個輕量級的、可移植的容器,每個容器都能夠獨立的運行并且相互之間不會影響。Docker技術以應用程序為中心,將一個應用程序所需的相關代碼、環境配置文件等都打包一個容器,可以脫離操作操作系統環境而運行,從而跨越了開發者的機器到生產環境機器的環境異構性,從開發到部署實現流暢發布,便于后續的開發測試運維工作的開展。與傳統的虛擬操作系統的虛擬化技術相比,Docker容器技術具有更快速的應用啟動時間、更高效的資源利用、更好的環境兼容特性。
OpenStack是一個開源的云計算管理平臺項目,由一系列開源組件組合起來完成具體工作。OpenStack支持所有類型的云環境,能提供實施簡單、豐富、標準統一的云計算管理平臺。高校通過建立、運行自己的OpenStack云計算和存儲設施平臺,可為師生提供基于數據中心級別的計算、存儲和網絡資源,滿足按需分配硬件資源,靈活彈性的調配實驗環境的需求。OpenStack通過各種互補的服務提供了基礎設施即服務(IaaS)的解決方案,每個服務提供API以進行集成。Nova提供計算服務,用于管理虛擬機實例的整個生命周期,根據用戶需求來提供虛擬機服務,包括虛擬機創建、開機、關機、遷移、重啟、銷毀等操作。Swift提供存儲服務,通過內置冗余及高容錯機制實現對象存儲的系統,允許進行存儲或者檢索文件。Glance提供虛擬機鏡像服務,支持多種虛擬機鏡像格式的查找檢索,有創建、上傳、刪除、編輯鏡像基本信息的功能。
采用Docker容器技術對實驗平臺底層架構進行部署和管理,實現硬件資源的融合管理,為上層的云終端系統用戶提供云服務。OpenStack是IaaS私有云服務的標準,包括安全認證服務(Keystone)、鏡像服務(Glance)、計算控制服務(Nova)、網絡控制服務(Neutron)等服務組件[3]。將各服務組件容器化,通過容器編排管理系統Kubernetes對容器集群的部署和管理,實現IaaS與PaaS的組合服務,構建高效統一的高校實驗云平臺。基于容器技術的實驗平臺主要分為基礎設施層、資源管理層、應用層,整體架構如圖1所示。
基礎設施層是計算、網絡、存儲設備等硬件資源,為云平臺提供虛擬資源池的物理設備。將大規模的物理資源虛擬化,對物理資源進行抽象,為云計算服務提供硬件資源統一的管理邏輯和接口,以全局統一的資源池的方式進行管理并呈現給用戶。
資源管理層通過Docker技術實現容器對、計算、網絡和存儲資源的管理和調度,是整個容器化平臺的核心和性能關鍵。通過Kubernetes編排部署Docker容器化的OpenStack各服務組件,向上層的應用層提供OpenStack云計算服務。Docker容器化的OpenStack各服務具有輕便靈活、資源利用率高、可跨平臺的特性。借助Kubernetes對各容器的集群編排,高校實驗云平臺可快速靈活部署。
應用層根據實驗平臺的業務需求,包括用戶、資源、實驗管理模塊的功能,為用戶提供便捷友好的操作接口,方便上層用戶對容器化的實驗平臺進行靈活的訪問[4]。

圖1 實驗平臺架構圖
開發環境包括硬件和軟件設施。硬件是學校機房的基礎網絡、各服務器、存儲等基礎設施資源,將服務器分為控制節點(1臺)、計算節點(1臺)、工作節點(多臺),確保各硬件可正常運行并能相互訪問。軟件是安裝在服務器上的應用程序或鏡像包,包括CentOS、Kubernetes、OpenStack、Docker、Ceph等,均選擇穩定開源的版本,安裝方式為CentOS系統上yum install源碼安裝平臺中各服務[5]。
基礎設施層完成虛擬化資源池的部署。通過Kubern etes集群編排管理Docker容器化的OpenStack 各服務組件完成資源管理層部署。應用層實現基于用戶的實驗教學任務的管理。整個平臺的實現主要在資源管理層的搭建,其部署工作主要包括部署服務集群及其容器化。
3.2.1 Kubernetes集群的部署
配置yum倉庫,設置時間同步,在所有節點上安裝docker、kubelet、kubeadm、kubectl。kubelet運行在集群所有節點上,負責啟動Pod和容器。kubeadm用于初始化集群。kubectl是命令行工具。在控制節點上運行kubeadm init進程進行初始化集群,添加網絡組件使各Pod容器通信正常。各工作節點修改kubelet的address和hostnameoverride參數為本機IP,加入集群中,最后通過kubectl get pods命令檢查驗證。
3.2.2 OpenStack集群的部署
將OpenStack所有服務組件容器化,在計算節點服務器上對kubernetes集群進行訪問,安裝部署kubernetes的包管理工具helm,OpenStack-helm可以支持松散耦合的OpenStack服務及其依賴項的部署、維護和升級,通過helm開發搭建chart倉庫,快速部署協同工作,并應對容器復雜應用的管理。在控制節點上安裝helm服務端tiller和客戶端,對目標集群通過values.yaml賦值生成chart實例。在工作節點上下載容器運行tiller鏡像包,更新yaml文件后通過kubectl get pods-n kube-system命令驗證是否部署成功。
Docker高性能虛擬化技術的應用,使高校實驗云平臺的部署更加靈活、快速、高效[6]。利用OpenStack-helm將OpenStack各服務組件封裝到容器鏡像中,實現各服務組件的容器化,通過容器編排管理系統Kubernetes對容器集群的部署和管理,實現IaaS與PaaS的組合服務,為構建高效統一的實驗平臺建設提供可行的技術解決方案。