鄧永華,郭亮,李波
(三亞學院,三亞572022)
隨著信息技術的高速發展,云計算成為大眾普遍認可的計算模式,成為各大IT 企業爭奪用戶市場的核心技術。對企業而言,通過云計算技術能夠更加充分地利用現有的基礎架構,能夠簡化IT 基礎設施并提升資源管理效率;對高校而言,結合云計算技術實施在線學習及實訓,能夠滿足高校人才培養和科學研究的需求。高校通過云計算技術實現對計算資源的集中管控、高效管理,實現節能減排,計算資源的遠程使用打破了學生學習的資源限制和時空障礙,拓寬了學習通道[1]。教學過程中結合云計算方便了教學輔助工具的實施,有利于學習過程的數據收集和分析,更好地進行教育研究的開展。本文設計的在線編程試驗環境是高校教育管理和云計算技術結合的一種嘗試。
云計算實質是大型分布式系統,其中虛擬化技術是構建云基礎架構的關鍵技術之一[2]。通過在一個物理平臺上虛擬出多個虛擬平臺,并作為獨立計算資源加入到該分布式系統中,相比于物理平臺在資源有效利用,動態調配和高可用等方面有巨大優勢。虛擬化的目標是把物理資源轉變為邏輯上可管理的資源,打破物理結構間的壁壘,將硬件、軟件、網絡、存儲等設備隔離開來使用戶能更合理、充分地控制與管理各種資源,其本質屬于資源管理技術[3]。
IBM 早在20 世紀60 年代開發大型機時就認識到了虛擬化的重要性,后續x86 平臺下的虛擬化技術同樣得到了快速發展,特別是CPU 虛擬化技術出現以后,x86 平臺已經成為了虛擬化技術發揮作用的重要平臺之一。在云計算的出現和實施中,服務器虛擬化技術作為其技術基礎受到了更加廣泛的關注,根據Gart?ner 調查表明,現在大約有三分之二的x86 服務器應用了虛擬化技術。虛擬化技術的原理是截獲應用對物理資源的直接訪問并將其重定向到虛擬資源池,即通過在原有硬件和操作系統間引入虛擬化層,向下管理真實物理資源向上提供虛擬系統資源。x86 平臺引入的虛擬化層稱為虛擬機監控器VMM 或稱為Hypervisor,真實物理平臺稱為宿主機,虛擬平臺稱為客戶機。根據截獲并重定向的實現是否依賴于硬件分為軟件虛擬化和硬件虛擬化兩類方案,其中軟件虛擬化方式存在的問題是由于所有客戶機指令需被軟件實現的監控機監控并模擬導致運行效率不高,而硬件虛擬化主要基于Intel 推出的硬件方案,如VT-x 等技術,提供了對特殊指令的截獲和重定向的硬件支持,使得性能得到大幅提升并為虛擬機的配置提供了最大程度的靈活性而成為主流。
以虛擬化技術構建的大規模虛擬機集群是實現云計算的基礎,通過整合數量眾多的虛擬資源向用戶提供按需付費的彈性計算能力是云計算的首要目標。業界普遍將云計算按照服務提供方式的不同劃分為三個大類,IaaS、PaaS、SaaS,并普遍采用 OpenStack 作為開源云管理平臺以實現IaaS 服務,采用的虛擬化技術是KVM。然而IaaS 的發展主要以虛擬機為最小粒度的資源調度單位,出現了資源利用率低、調度分發緩慢、軟件堆棧環境不統一等問題。其實隨著Linux kernel的發展,內核通過命名空間已經提供了文件系統隔離、進程隔離、網絡隔離和用戶隔離等多項資源隔離技術,并且Google 為Linux 內核開發的cgroup 機制能夠限制被隔離的資源,并可為資源設置權重、計算使用量及操控進程啟停。最終LXC 項目把cgroup、內核命名空間以及chroot 等技術融合,提供了一套完整的容器方案。2013 年,開源技術Docker 補充了當時容器化技術的不足,將容器技術帶入主流[4]。相對于傳統的虛擬化技術,通過使用輕量級虛擬化的容器技術省去了Hy?pervisor 層的開銷,其性能與物理機非常接近,同時通過層級鏡像的創新應用,使得不同的容器可以共享底層的只讀鏡像,容器特有的內容作為新增加的鏡像層,新增加的鏡像層和下層鏡像一起又可以作為基礎鏡像被更上層的鏡像所使用。這種特性極大地提高了磁盤利用率,同時多個容器使用同一基礎鏡像時可極大減少內存占用,因為不同容器訪問同一文件只會占用一份內存。圖1 是傳統虛擬化與輕量級虛擬化的架構對比,后者簡化了虛擬化系統構建,能夠在一臺機器上比傳統虛擬化技術提供幾十甚至上百倍的虛擬機數量。國外研究者利用Linpack 進行高性能計算機系統浮點性能計算能力對比數據,顯示出容器技術在各類資源利用率上非常接近物理機性能,比傳統方法更具優勢。
總之,容器技術一方面促進了虛擬化技術的發展,另一方面也催生了云計算平臺的新模式。CaaS(Con?tainer as a Service,容器即服務)容器云,容器化的云服務,是PaaS 的衍生。容器技術通過將SaaS 應用打包成容器鏡像,使得應用交付、部署、運維都更加簡單。基于CaaS 的SaaS 產品將會逐步成為主流,同時,SaaS領域的高速發展也將進一步帶動容器化的云服務市場。

圖1 傳統虛擬化和容器技術架構對比
核心思想為編寫Dockerfile,其中用supervisord 控制ssh 和vnc 服務并暴露相關端口,打造編程基礎鏡像。具體代碼如下:

Dockerfile 調試好之后用docker build 構建基礎鏡像,再用docker run 啟動容器,用并使用ssh 客戶端和vncviwer 測試其功能性。后續可以基于該基礎鏡像作為模板,安裝相關合適開發軟件,構建特定在線編程環境。

圖2 登錄界面

圖3 GUI 界面

圖4 命令行界面
為方便用戶使用,構建登錄管理網站。其功能除完成登錄驗證外,還包括系統環境選擇及以及使用命令行模式還是圖形化模式使用編程環境。隨后按照用戶需求,配置啟動相關容器并跳轉到對應容器所提供的虛擬桌面。其要點主要包括利用VNC 實現圖形界面轉發。如下所示,圖2 為登錄界面,圖3 和圖4 為同一用戶登錄后分別運行圖形化界面和命令行界面的效果,從其顯示的IP 地址可見屬于同一實驗環境。
隨著社會需求及信息技術的發展,高校肩負的人才培養及科學研究任務在加大,對動手實踐的要求越來越高。為滿足人才培養及各類研究需求,配套的試驗環境需具備資源整合管理及靈活調整的能力。為解決各類環境搭建產生的相互干擾,當前部分高校采用一機安裝多重操作系統的方式對計算資源的整體利用率低且統一管理困難,有些高校采購商用平臺實現資源整合,但實施成本較高、二次開發受限,部分平臺采用傳統虛擬化技術對資源的利用率不夠高效,環境切換時間較長。引入輕量級虛擬化技術及網絡技術構建計算資源云平臺,能夠統一分配實驗環境提升資源整體利用率,提升實驗環境的快速部署及切換能力,降低管理成本及軟硬件投入,提高運維效率。