趙蓮芬 林志煌
(廣州軟件學院 廣東省廣州市 510990)
在線虛擬實驗室最早出現(xiàn)在上世紀80年代,它的主要原理是使用虛擬化技術實現(xiàn)模擬不同實驗工具的平臺。
高校在新工科專業(yè)(移動互聯(lián)網(wǎng)、云計算、大數(shù)據(jù)、人工智能)教學中最大的問題是無法對基礎實驗環(huán)境進行快速部署,配置難度較高。每次軟件更新或者版本升級實驗員就要安裝多種實驗工具和軟件,安裝過程繁瑣、配置工作量極大,實驗過程中也因為實驗環(huán)境的問題增加教師和學生的負擔。
國內也有部分在線實驗系統(tǒng)平臺,但這些平臺大部分是商用的,而且主要針對某些特定的領域,對高校新工科在線實驗的支持有局限性,而且這些在線實驗系統(tǒng)多基于傳統(tǒng)虛擬架構的,資源利用率不高,訪問速度和響應時間需要進一步優(yōu)化。對于高校來說,需要一個面向用戶的開放的輕量級的在線虛擬實驗平臺,從而為用戶提供一個良好的實驗環(huán)境。
基于Docker容器技術的輕量級在線虛擬實驗平臺能夠讓學生節(jié)省搭建基礎實驗環(huán)境的時間,從而更加專注的進行學習。該平臺的主要優(yōu)點是能為所有學生提供同樣的基礎實驗環(huán)境,從而保持實驗的一致性,減少兼容性的影響,提高實驗的效率。同時,該平臺能夠提供個性化的學習方式,學生可以隨時隨地根據(jù)自己的個人需求選擇合適的學習模塊進行在線實驗,能夠極大的提升學生學習的興趣和效率,因此基于Docker容器技術的輕量級在線虛擬實驗平臺構建研究具有重要的意義。
和傳統(tǒng)虛擬實驗平臺的區(qū)別是在線虛擬實驗平臺突破了時空限制,只要能夠聯(lián)網(wǎng),任何學生都能夠輕易的隨時隨地進行自己感興趣的在線實驗或者研究,在線實驗平臺同時可以提供實驗和資源的共享,這種共享可以基于校內或者校外,提供隨時隨地在線學習和實踐資源,培養(yǎng)實踐能力和自主創(chuàng)新能力。因此,基于Docker容器化技術的輕量級在線實驗平臺具備靈活和共享等優(yōu)勢,能夠極大的節(jié)約資源,提高學生的學習效率以及綜合實踐能力。
傳統(tǒng)的基于虛擬機架構的實驗平臺實現(xiàn)了操作系統(tǒng)級別的隔離,它的實現(xiàn)方式是在硬件上安裝虛擬機來管理多種軟件操作系統(tǒng),但是這沒有很好的解決新工科專業(yè)實驗環(huán)境的模塊化快速統(tǒng)一彈性部署、隨時隨地在線實踐以及降低實驗室建設成本等方面的問題。
Docker 是一個開源的應用容器引擎,可以把該引擎看作實現(xiàn)輕量級虛擬化的一種方式,它允許用戶依賴該引擎把自己的應用以及應用依賴的基礎環(huán)境打包封裝到一起,然后發(fā)布到自己的應用服務器上,而且不同的應用和基礎環(huán)境都可以單獨打包封裝,相互之間不受影響。
Docker容器本質上是可配置的輕量級虛擬機,它能夠實現(xiàn)共享底層的操作系統(tǒng)和硬件資源,為上層的開發(fā)人員提供應用組件服務,比如鏡像遷移、網(wǎng)絡各類負載均衡等,同時可以根據(jù)用戶需求進行增加、修改或刪除組件,實現(xiàn)彈性分配和使用,尤其適合構建新工科專業(yè)復雜多變的細粒度的實驗環(huán)境的新需求。
基于Docker容器架構技術實現(xiàn)在線虛擬實驗平臺的優(yōu)勢在于可以實現(xiàn)應用的快速部署,良好的彈性擴展能力,迅速響應能力,跨平臺遷移擴展能力等,尤其適合高校新工科專業(yè)構建彈性化需求的在線實驗平臺,而且不同Docker容器直接相互獨立,互不影響。傳統(tǒng)虛擬化實驗架構和基于Docker容器的虛擬化架構比較如圖1所示。
圖1:傳統(tǒng)虛擬架構和Docker容器化虛擬架構比較圖
傳統(tǒng)虛擬化實驗架構和基于Docker容器的虛擬化架構的區(qū)別在于它的實現(xiàn)方式不同。傳統(tǒng)虛擬實驗架構需要在每一個虛擬節(jié)點部署操作系統(tǒng),然后在操作系統(tǒng)上在部署相應的應用程序;而Docker容器架構則不需要,它的應用程序是直接運行在共享的宿主機的軟硬件資源上,每一個被封裝的應用程序和依賴包之間互不影響,相互隔離,獨立運行在未經虛擬化的軟硬件資源上,因此,它們比傳統(tǒng)架構的虛擬機更輕便。
基于Docker容器化技術的高校在線實驗平臺角色主要分為管理員、教師和學生。在線實驗平臺系統(tǒng)需求分析用例如圖2所示。
圖2:系統(tǒng)需求分析用例圖
各角色的功能描述如下:
學生:鑒權登錄、查看實驗列表、連接遠程主機、斷開主機連接、上傳下載文件、實驗完成檢查、刷新實驗主機、查看實驗文檔、退出登錄。
教師:鑒權登錄功能、查看實驗列表、連接遠程主機、斷開主機連接、上傳下載文件、實驗發(fā)布、實驗管理、實驗文檔查看、刷新實驗主機、查看實驗文檔、退出登錄。
管理員:鑒權登錄功能、連接管理、主機管理、實驗管理、環(huán)境管理、新建實驗環(huán)境、用戶管理、登錄。
本實驗平臺基于混合云環(huán)境,充分發(fā)揮了公有云和私有云兩類云平臺的優(yōu)勢,擴展了本實驗平臺的技術基礎,提高平臺的可用性與便捷性,降低了信息化投入成本同時保障了數(shù)據(jù)的安全性,利用Docker容器技術和Web技術,將傳統(tǒng)的實驗室機房環(huán)境轉移至云環(huán)境中,學生只需要在瀏覽器就能使用云主機進行課程的實驗?;贒ocker容器的在線編程平臺的架構如圖3所示。
圖3:在線實驗平臺架構
在實驗過程中,學生不僅可以根據(jù)教師上傳的實驗指導書和建立的云實驗環(huán)境進行實驗,而且可以編輯實驗筆記,保存或上傳實驗結果。該平臺還提供實驗社區(qū)、綜合協(xié)作實驗、實驗資源和系統(tǒng)資源的監(jiān)控管理等。系統(tǒng)功能結構如圖4所示。
圖4:系統(tǒng)功能設計
用戶端主要功能有:用戶通過鑒權登錄編程平臺,查看實驗列表、連接遠程主機、斷開主機連接、上傳下載文件、實驗完成檢查、刷新實驗主機、查看實驗文檔。
教師通過鑒權登錄到教師端,可查看實驗列表、連接遠程主機、斷開主機連接、上傳下載文件、實驗發(fā)布、實驗管理、實驗文檔查看、刷新實驗主機、查看實驗文檔。
管理員可進行連接管理、主機管理、實驗管理、環(huán)境管理、新建實驗環(huán)境、用戶管理。
遠程功能通過在瀏覽器中展示云連接頁面實現(xiàn),具體的實現(xiàn)方式分為前端用戶交互功能及后端服務功能兩個部分。
在線開發(fā)的功能是將服務器中運行的集成開發(fā)工具環(huán)境(IDE)編輯器在瀏覽器中展示出來,并且通過瀏覽器進行交互,在線實驗平臺最基礎的實驗環(huán)境是通過在服務器運行Code-Server實現(xiàn)了在瀏覽器展示服務器上運行的IDE工具,Code-Server是大名鼎鼎的桌面端IDE工具vscode的服務器版本。Code-Server的工作原理是通過在服務器中運行IDE工具,再使用基于Websocket協(xié)議實現(xiàn)的novnc技術就可以實現(xiàn)在瀏覽器中訪問服務器即可展示IDE工具頁面,在線實驗平臺的其他實驗環(huán)境也都是基于novnc技術實現(xiàn)。
在實現(xiàn)了瀏覽器連接云服務器功能后,還需要實現(xiàn)多用戶同時在線開發(fā),且彼此間的實驗環(huán)境互不干擾,就需要每個用戶連接一臺獨立的服務器。本實驗平臺使用Docker容器技術來實現(xiàn)在一臺服務器上運行多個實驗環(huán)境的功能,docker底層使用了LXC來實現(xiàn),這種技術能夠有效控制各進程資源的分配,并且能夠使進程之間相互隔離。
在線實驗平臺(簡稱Codelab)為用戶提供了一些基礎實驗環(huán)境,這些環(huán)境對應的就是服務器中的Docker鏡像,在用戶發(fā)布實驗時,用戶選擇的基礎鏡像的ID將會保存在數(shù)據(jù)庫中,在其他用戶進行該實驗時,后端收到前端傳來的數(shù)據(jù)就會執(zhí)行指定語句,根據(jù)數(shù)據(jù)中的鏡像信息運行容器,且根據(jù)一個端口分配算法為生成的容器映射一個端口,使得用戶可以在瀏覽器中訪問服務器IP的某一個端口就可以連接上容器中運行的服務。在服務器生成容器并分配好端口后,將端口與服務器域名拼接為一個完整地址后返回前端,前端收到地址后訪問該地址即可。用戶連接遠程主機流程如圖5所示。
圖5:用戶連接遠程主機流程圖
后端創(chuàng)建連接的過程分為以下七步:
(1)創(chuàng)建當前連接的隨機碼;
(2)根據(jù)前端發(fā)送的實驗信息查詢實驗對應的環(huán)境和端口;
(3)為容器分配端口號;
(4)通過執(zhí)行命令創(chuàng)建容器,容器的文件夾掛載在以隨機碼命名的文件夾;
(5)為新建的容器設置預設文件;
(6)設置定時任務,在實驗時間結束后刪除容器并修改數(shù)據(jù)庫狀態(tài);
(7)創(chuàng)建成功后拼接協(xié)議,域名和端口號為完整url地址后返回給前端。
本文針對在線實驗教學平臺基礎實驗環(huán)境配置效率低,導致資源利用率和實踐教學效率不高的問題,基于Docker容器化技術設計與實現(xiàn)了一個適用于高校的在線輕量級虛擬實驗教學平臺,該平臺能夠以組件化形式有效構建高校新工科專業(yè)的實驗教學環(huán)境,并且實現(xiàn)按需配置,能夠實現(xiàn)實驗環(huán)境集中在線統(tǒng)一部署管理,實現(xiàn)按需動態(tài)調整版本,彈性分配資源,提高軟硬件資源的復用性和可用性,提升學生的學習興趣和效率,提高實踐教學質量。對基于Docker技術的在線實驗平臺的設計與實現(xiàn)具有一定的參考意義。