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