方偉華 周藍捷 李文惠
(廈門地震勘測研究中心,福建廈門 361021)
當今I T 行業(yè)發(fā)展經(jīng)歷了傳統(tǒng)數(shù)據(jù)中心、虛擬化數(shù)據(jù)中心、私有云、公共云四個階段,中心已由傳統(tǒng)數(shù)據(jù)中心升級為虛擬化數(shù)據(jù)中心,并且規(guī)模不斷擴大,面對不斷發(fā)展的業(yè)務(wù)發(fā)展需求,我們中心也將逐步建立自己的云計算數(shù)據(jù)中心。
云計算服務(wù)主要包括:(1)IaaS服務(wù):即基礎(chǔ)設(shè)施服務(wù),云服務(wù)的最底層,實現(xiàn)IT資源靈活調(diào)度;(2)PaaS服務(wù):提供軟件部署平臺,實現(xiàn)應(yīng)用程序靈活打包;(3)SaaS服務(wù):軟件即服務(wù),實現(xiàn)人機交互智能化,使機器更了解人類。
當前我中心業(yè)務(wù)手段主要包括流動地震監(jiān)測、地震觀測、地震探測等,隨著地震業(yè)務(wù)不斷增加,地震科技工作者經(jīng)常要面對各種各樣的業(yè)務(wù)系統(tǒng)的搭建工作,在這個過程中,我們經(jīng)常會遇到以下幾個方面的問題:
(1)業(yè)務(wù)系統(tǒng)搭建效率低,費時費力;(2)業(yè)務(wù)軟件搭建門檻較高;(3)業(yè)務(wù)系統(tǒng)移值困難;(4)無法很好將地震業(yè)務(wù)人員與運維人員分離,無法讓地震科技人員更專注自己業(yè)務(wù)。
隨著云計算技術(shù)尤其是PaaS平臺的發(fā)展,使以上這些問題迎刃而解,本文將采用Docker架構(gòu)平臺,根據(jù)地震相關(guān)業(yè)務(wù)特點,給出了相關(guān)業(yè)務(wù)軟件定制流程,搭建地震業(yè)務(wù)系統(tǒng)自己的云計算PaaS服務(wù)平臺。為地震行業(yè)數(shù)據(jù)中心建設(shè)提出了一些建設(shè)性意見與擴展模式研究思路。采用該方法,能夠更好的優(yōu)化地震數(shù)據(jù)中心生產(chǎn)環(huán)境與服務(wù)模式,提升地震科技工作者工作效率。
Docker屬于云計算中的PAAS服務(wù)范疇,它是一個開源的應(yīng)用容器引擎,Docker是Docker.Lnc公司開源的容器引擎,代碼寄存在Github上,采用于Go語言并遵從Apache 2.0協(xié)議開源。Docker是Linux容器的一種封裝,提供簡潔好用的容器使用接口。
Docker可以對應(yīng)用程序與這個程序的依賴,打包在一個文件里面。運行這個程序文件,就會生成一個虛擬容器。程序運行在這個虛擬容器里,可以像在真實的物理機上運行一樣。有了Docker,就不存在任何環(huán)境問題。也就是說,Docker的接口非常簡單,用戶可以像創(chuàng)建虛擬機一樣,輕松地創(chuàng)建和使用容器,把自己的程序放入容器。容器也可能完成版本管理、復(fù)制、分享、修改等功能,就像管理虛擬機一樣。
Docker容器與虛擬機相比,優(yōu)勢十分明顯,主要有三大優(yōu)勢:輕量、高性能、便捷性。
快:與虛擬機相比,由于節(jié)省的虛擬層,它的運行時的性能獲得更大的提升。
靈活:將應(yīng)用和系統(tǒng)“容器化”,不添加額外的操作系統(tǒng)。
便宜:開源的,免費的,低成本的。
輕量:你會擁有足夠的“操作系統(tǒng)”,僅需添加或減小鏡像即可。
(1)復(fù)雜的環(huán)境部署管理:從多樣式操作系統(tǒng)到各個中間件再到各種應(yīng)用程序,一款應(yīng)用能夠成功使用,作為研究人員需要關(guān)心的技術(shù)層面太多,且無法管理,效率低下。Docker可以簡化多種應(yīng)用實例的工作部署,比如Web相關(guān)程序、數(shù)據(jù)庫程序應(yīng)用、Zabbix監(jiān)控管理平臺、集群備份程序等都可以打包成一個容器內(nèi)進行部署。
然而,由“看襪”數(shù)錢數(shù)到手抽筋,絕非酒鋪老板王嬤嬤能預(yù)料到的。那時,尚無“眼球經(jīng)濟”一說。但名人效應(yīng)的道理,王嬤嬤并不陌生。加之,看客圍觀、起哄、架秧子,是“看熱鬧不嫌事大”。李肇《唐國史補》一書,載有王嬤嬤發(fā)跡經(jīng)過,上“命高力士縊貴妃于佛堂前梨樹下。馬嵬店媼收得錦靿一只。相傳過客每一借翫,必須百錢,前后獲利極多,媼因至富”。
(2)云時代來臨:亞馬遜的成功,開發(fā)者將應(yīng)用轉(zhuǎn)移到云上,解決了硬件管理的問題,然而軟件配置和管理的問題依然存在。Docker的產(chǎn)生能更好的幫助研發(fā)人員開闊思路,嘗試新的軟件管理的方法應(yīng)對軟件配置方面的問題。
(3)虛擬化技術(shù)的進化:然而無論是KVM還是Xen,對于Docker來說,都是在資源浪費,又難于管理與使用,更加輕量級大LX C,更加靈活和快速。
一個容器中運行在原生Linux和共享主機內(nèi)核中,它是一個運行單獨的進程,不占用其它任何可執(zhí)行文件的內(nèi)存,使其更加輕量化,硬件效能有所提高。
二者相比之下,虛擬機是一個完整獨立的運行操作系統(tǒng),通過虛擬化管理程序訪問主機資源,在應(yīng)用程序與硬件之間已經(jīng)多了一層,一般來說,虛擬化環(huán)境下,它比大多數(shù)應(yīng)用程序需要的資源多,浪費也更大(如圖1)。
圖1 容器與虛擬機區(qū)別Fig.1 The difference between container and virtual machine
采用C/S架構(gòu)進行架構(gòu),用戶通過服務(wù)器到官方倉庫,獲取鏡像、啟用容器,服務(wù)端由一個進程進行守護,在這個過程中用戶可以根據(jù)自己的業(yè)務(wù)特點定制自己的系統(tǒng)與軟件靜像(如圖2)。
圖2 系統(tǒng)架構(gòu)圖Fig.2 System architecture diagram
第一步:收集freeBSD系統(tǒng)容器靜像(如圖3)。
第二步:收集命令,安裝JOPENS相關(guān)服務(wù),主要包括openjdk、Mysql、JOPENS軟件包與庫、wildfly服務(wù)等,編寫dockfile腳
圖3 FreeBSD 容器靜像庫Fig.3 FreeBSD container still image library
圖4 Jopens 命令集Fig.4 Jopens command set
圖5 容器測試Fig.5 Container test
第三步:生成定制靜像。
通過相關(guān)命令:docker container commit,docker build。
第四步:模擬測試docker鏡像。
命令:Dccker run d p 8080:8080 jopens,通過一條簡單命令即可快速開啟打包系統(tǒng),實現(xiàn)了開箱即用的功能(如圖5)。
表1 Docker 與虛擬化各方面性能比較Tab.1 Performance comparison between docker and virtualization
第五步,提交至私有倉庫,供使用者下載, Docker 可以不修改應(yīng)用程序代碼,不需要開發(fā)人員學(xué)習特定環(huán)境下的技術(shù),就能夠?qū)F(xiàn)有的應(yīng)用程序部署在其它機器上。
通過第三方工具,也可以方便的對容器庫進行管理,方便后期維護與數(shù)據(jù)備份。
(1)性能比較。Docker與傳統(tǒng)模式各方式比較(見表1);
(2)云計算之PaaS服務(wù)是地震生產(chǎn)環(huán)境未來發(fā)展方向,有必要對中心原有的云計算環(huán)境進行擴充,來提升地震科學(xué)協(xié)同研究新環(huán)境;
(3)通過Docker容器的搭建與應(yīng)用,可以更好的解決傳統(tǒng)模式中存在地震業(yè)務(wù)系統(tǒng)軟件快速打包的問題,使地震科技人員更專注于地震業(yè)務(wù),提升工作人員工作效率;
(4)通過Docker容器主要提供以上三個功能:一是提供了打包式的環(huán)境屬性:比如,連續(xù)集成的時候提供單元測試、本地測試他人的軟件和架構(gòu)環(huán)境。二是提供彈性的云資源服務(wù):因為Docker容器可以隨時開關(guān),很適合動態(tài)的擴容。三是組建小型服務(wù)架構(gòu):通過多個容器,一臺機器可以跑多個應(yīng)用服務(wù),因此在本機就可以模擬出多服務(wù)架構(gòu)。