繆偉寧,羅予東,劉錫鋒,張文敏,肖振球
(嘉應學院計算機學院,梅州 514015)
隨著人工智能、大數據和自動駕駛等技術的蓬勃發(fā)展,大眾對計算機行業(yè)的關注持續(xù)高漲,各大高校隨之也對計算機專業(yè)教育傾注了大量師資力量和硬件資源。然而,硬件設備(如服務器、計算機等)的豐富并不代表著硬件設備能得到有效的利用,以往使用Ghost軟件對硬件設備進行管理的傳統實驗室管理方式[1]已經不再適用。
而且,在大部分高校相關計算機專業(yè)的教學環(huán)節(jié)中,往往需要機房提供統一的Linux環(huán)境進行相關實驗,學生在學習完網頁設計、網站開發(fā)等課程后往往有開設虛擬主機部署網站應用的需求。但是,大部分高校的計算機實驗室要么是難以提供相應的服務,要么是提供的虛擬主機不僅配置低下難以滿足實際需求,并且申請流程繁雜使學生望而卻步;阿里云、騰訊云等國內的公有云計算廠商提供的服務雖然優(yōu)質但往往需要昂貴的費用,師生難以負擔。
Docker是PaaS供應商dotCloud開源的一個基于LXC(Linux Container)技術的容器引擎,實現了操作系統級的虛擬化,相比較于傳統的虛擬化技術具有輕巧、秒級啟動和節(jié)約內存等優(yōu)點[2]。本項目團隊采用平臺即服務(PaaS,即 Platform-as-a-Service)的理念,通過設計及實現一個基于Docker的高校PaaS平臺將高校富余的計算資源統一管理劃分,將分散的用戶應用集中起來,提高管理效率并節(jié)省在硬件上的費用,為師生提供優(yōu)質、穩(wěn)定、廉價的服務,作為解決上述實際問題的方法。
平臺由容器服務模塊、模版管理模塊、容器管理模塊及監(jiān)控日志模塊四大模塊組成,平臺架構如圖1所示。
圖1 平臺架構
(1)容器服務模塊
容器服務模塊主要用于為使用本PaaS平臺的普通用戶提供對個人容器的管理服務,包括創(chuàng)建容器、變更容器模版、啟動暫停容器、調整容器參數及更改容器網絡配置等。
(2)模板管理模塊
每位普通用戶創(chuàng)建容器時會從平臺中選擇系統管理員已經定制好的系統鏡像作為容器的初始鏡像,這種系統鏡像稱為本PaaS平臺中的模板。系統管理員通過模板管理模塊對模板的創(chuàng)建、模板的狀態(tài)(開放/停用)、調整模板的初始性能參數及對模板進行更新。
(3)容器管理模塊
系統管理員通過容器管理模塊可對單個或多個容器進行管理,包括容器模版的更換、容器性能參數的調整、容器狀態(tài)(啟動/暫停)的改變以及容器網絡參數的更改。
(4)監(jiān)控日志模塊
監(jiān)控日志模塊為系統管理員直觀地提供了PaaS平臺的運行情況及過往的日志,方便系統管理員及時對突發(fā)狀況進行處理及溯源。
Docker為用戶提供了以下四種網絡模式,用戶可在創(chuàng)建容器時通過命令行選項指定容器的網絡模式[3]:
(1)host模式:通過端口映射,容器將自己的服務端口與宿主主機的端口綁定,用戶通過宿主主機的端口訪問相應的容器端口,從而得到相應的容器服務。
(2)container模式:在該模式下,新創(chuàng)建的容器與一個已經存在的容器共享網絡。
(3)none模式:通過該種模式創(chuàng)建的容器未進行任何網絡配置,需要用戶自行對網絡進行配置。
(4)bridge模式:默認模式。Docker會在宿主主機上創(chuàng)建一個名為docker0的虛擬網橋,該虛擬網橋起到一個軟件交換機的作用,該虛擬網橋會為創(chuàng)建時未指定其它網絡模式的容器的分配一個IP地址,形成宿主主機內的一個二層網絡。在宿主主機開啟NAT轉發(fā)之后,容器即可正常訪問互聯網。
基于以下兩個考量,本PaaS平臺選擇了host模式作為容器的網絡模式:
(1)bridge模式適用于內部網絡通信頻繁、不向外部提供的容器。
(2)在全球IPv4地址枯竭[3]的大背景下,高校擁有的少量的公網IPv4地址難以滿足大量用戶的需求。
(3)host模式便于系統管理員對每個容器提供的服務進行監(jiān)控,便于安全人員統一對外部攻擊進行防御。
此外,為了避免非知名端口號對用戶造成的困擾,本PaaS平臺參考文獻中提出的域名-應用解析機制[4]形成了如圖2所示的網絡模型。在此網絡模型中,jyueka.com這個域名的所有子域名均指向宿主主機。當外部訪問到達宿主主機的80端口時,反向代理組件檢查訪問的HTTP頭,在配置中檢索域名對應的宿主主機的轉發(fā)端口,檢索到相應記錄后,將請求轉發(fā)到相應的宿主主機端口,從使相應的容器接受到請求,為用戶提供服務;若反向代理未檢索到域名對應的宿主主機的轉發(fā)端口,則將請求丟棄或者是轉發(fā)到默認端口進行處理。
圖2 網絡模型
項目團隊以目前比較熱門的動態(tài)網站搭建方案LNMP[5](Linux+Nginx+MySQL+PHP),采用Think PHP Web開發(fā)框架,根據平臺架構搭建了本PaaS平臺的簡要實現。該簡要實現的核心為Docker和Nginx反向代理[6]功能。整個平臺分為供用戶使用的前臺和系統管理員使用的后臺:
(1)前臺
用戶登錄到前臺后僅需輸入教務系統密碼,即可完成身份驗證并自動補充相關資料;用戶完成身份驗證后即可選擇所需的系統鏡像創(chuàng)建應用環(huán)境,創(chuàng)建容器的流程如圖3所示;在創(chuàng)建好應用環(huán)境之后,用戶即可根據系統給定的管理端口遠程進入應用環(huán)境進行操作,該應用環(huán)境除了部分網絡設定和一些操作限制外,與常用的Linux系統一致;并且,用戶可為應用綁定自己的域名,通過域名直接訪問到相應端口的服務,該功能是基于Nginx反向代理實現的。
(2)后臺
系統管理員在登錄后臺后即可便捷的管理平臺中的所有用戶及查看平臺中所有的系統鏡像;系統管理員可創(chuàng)建指定內存大小的應用環(huán)境,并且可對已有的應用環(huán)境進行批量啟動、停止、重啟和刪除的操作;平臺提供了一個小型的CMS模塊方便系統管理員發(fā)布相關信息指引用戶進行操作;除此之外,為了增強后臺的安全性,項目團隊還實現了一套基于RBAC的權限控制機制[7],超級管理員可根據不同的需求建立不同權限范圍的角色賦予管理員,實現對管理權限的精細劃分。
本文提出并實現了一個基于開源高級容器引擎Docker的用于支持高校計算機專業(yè)日常教學、實驗和科研的PaaS平臺,由于整個PaaS平臺是基于Docker構建的,但是Docker存在運行操作系統平臺單一、隔離機制相比KVM等虛擬化方案較差導致安全性較差、資源分配顆粒不夠精細及網絡管理機制薄弱的問題[8],而這些問題決定了基于Docker的PaaS平臺的短板所在,項目團隊將在后續(xù)的研究過程中盡可能地尋找各種方案解決這些局限性帶來的問題,使整個平臺更加高效、穩(wěn)定。
圖3 容器創(chuàng)建流程
[1]朱艷.淺談高校計算機實驗室管理與維護[J].山東青年政治學院學報,2010(5):156-157.
[2]李明,郭洋,蔣明.基于 Docker的虛擬化技術研究[J].中國新通信,2017,19(09):73-74.
[3]黃潔梅.IPv4地址枯竭問題的分析與校園網IPv6系統構建的研究[D].華南理工大學,2012.
[4]繆偉寧,羅予東,劉錫鋒,等.一種帶緩沖層的Web服務集群架構分層解決方案[J].現代計算機,2016(26):18-22.
[5]傅志銘.基于LNMP搭建Wordpress多站點網站群[J].電腦與信息技術,2017,25(2):47-48.
[6]馮貴蘭,李正楠.Nginx反向代理在高校網站系統中的應用研究[J].網絡安全技術與應用,2017(6):111-111.
[7]羅鈞,趙傳智,汪飛.基于RBAC模型的權限高效管理方法[J].計算機研究與發(fā)展,2016,53(5):1000-1008.
[8]徐錦韜.虛擬機、容器與Docker技術對比[J].科學與財富,2016,8(4).