徐欣威
(鎮(zhèn)江市科學(xué)技術(shù)信息研究所,江蘇 鎮(zhèn)江 212004)
基于Docker、Nginx及服務(wù)器虛擬化融合技術(shù)的鎮(zhèn)江科技創(chuàng)新服務(wù)平臺(tái)設(shè)計(jì)*
徐欣威
(鎮(zhèn)江市科學(xué)技術(shù)信息研究所,江蘇 鎮(zhèn)江 212004)
簡(jiǎn)要闡述了鎮(zhèn)江科技創(chuàng)新服務(wù)平臺(tái)總體設(shè)計(jì)、規(guī)劃的功能,指出了平臺(tái)功能的復(fù)雜性和各功能模塊需要設(shè)計(jì)、測(cè)試、運(yùn)行等軟件工程各階段同步進(jìn)行的必要性。設(shè)計(jì)、使用了服務(wù)器虛擬技術(shù)、Docker技術(shù)、Nginx技術(shù)融合的分層次平臺(tái)系統(tǒng)架構(gòu),介紹了各功能模塊在容器中的功能關(guān)系及各服務(wù)板塊在新型平臺(tái)系統(tǒng)架構(gòu)下的具體實(shí)現(xiàn)。
Docker;Nginx;虛擬化;分層次平臺(tái)系統(tǒng)架構(gòu)
近幾年,江蘇省鎮(zhèn)江市生產(chǎn)力中心在推動(dòng)科技創(chuàng)新和公共服務(wù)平臺(tái)建設(shè)方面做了一定的工作,例如,已經(jīng)建設(shè)了鎮(zhèn)江市大型科學(xué)儀器設(shè)備協(xié)作共用網(wǎng)、鎮(zhèn)江市科技信息網(wǎng)等,為企業(yè)科技創(chuàng)新提供了信息和技術(shù)方面的支持。但是,這些平臺(tái)的建設(shè)缺乏統(tǒng)一規(guī)劃,資源利用率低,缺乏對(duì)微信、手機(jī)客戶端移動(dòng)終端的支持,平臺(tái)技術(shù)上有安全風(fēng)險(xiǎn)等。因此,需要充分整合和優(yōu)化科技資源,加快建設(shè)一個(gè)社會(huì)化、網(wǎng)絡(luò)化、專(zhuān)業(yè)化、多功能的“一站式”科技創(chuàng)新服務(wù)平臺(tái),利用平臺(tái)提高鎮(zhèn)江自主創(chuàng)新能力,推動(dòng)創(chuàng)新型城市建設(shè)。鎮(zhèn)江科技創(chuàng)新服務(wù)平臺(tái)于2015年獲得鎮(zhèn)江市科技基礎(chǔ)設(shè)施科技計(jì)劃立項(xiàng),筆者作為項(xiàng)目技術(shù)主要研發(fā)人員,參與了項(xiàng)目的總體規(guī)劃、設(shè)計(jì),系統(tǒng)架構(gòu),數(shù)據(jù)庫(kù)設(shè)計(jì)、研發(fā)等。
鎮(zhèn)江科技創(chuàng)新服務(wù)平臺(tái)的功能模塊眾多,模塊之間存在復(fù)雜的耦合關(guān)系,并且眾多模塊實(shí)現(xiàn)不可能一蹴而就,需要分階段、分步逐步運(yùn)行實(shí)施。如果采用傳統(tǒng)的單服務(wù)器、眾多模塊打包到一個(gè)平臺(tái)上的軟件開(kāi)發(fā)模式,那么,平臺(tái)中的其中一個(gè)服務(wù)模塊修改、測(cè)試等,就會(huì)影響到整個(gè)平臺(tái)的正常運(yùn)行。傳統(tǒng)系統(tǒng)平臺(tái)開(kāi)發(fā)模式顯然不能適應(yīng)鎮(zhèn)江科技創(chuàng)新服務(wù)平臺(tái)眾多功能模塊的設(shè)計(jì)、研發(fā)、測(cè)試、上線運(yùn)行等同步進(jìn)行的軟件開(kāi)發(fā)、運(yùn)行服務(wù)模式。
為了解決眾多功能模塊設(shè)計(jì)、開(kāi)發(fā)過(guò)程相對(duì)獨(dú)立、互相之間耦合度低的問(wèn)題,鎮(zhèn)江科技創(chuàng)新服務(wù)平臺(tái)在現(xiàn)有技術(shù)基礎(chǔ)上,分析了各自的優(yōu)缺點(diǎn),提出了一類(lèi)新型平臺(tái)系統(tǒng)架構(gòu)。下面首先介紹了現(xiàn)有的技術(shù)體系,分析了它們各自的特點(diǎn),闡述了研究目的,并根據(jù)現(xiàn)有技術(shù)體系和研究工作目的,提出了新型平臺(tái)系統(tǒng)架構(gòu),同時(shí),還進(jìn)行了平臺(tái)系統(tǒng)運(yùn)行的創(chuàng)新點(diǎn)分析。
虛擬化技術(shù)是云計(jì)算的核心技術(shù),可以統(tǒng)一管理和調(diào)度大量使用網(wǎng)絡(luò)連接的計(jì)算機(jī)資源,構(gòu)成一個(gè)計(jì)算機(jī)資源池,向用戶提供按需服務(wù)[1]。服務(wù)器虛擬化技術(shù)是將一臺(tái)或多臺(tái)服務(wù)器的硬件資源整合起來(lái),在上面利用虛擬機(jī)技術(shù)讓幾臺(tái)服務(wù)器變成幾十臺(tái)甚至幾百臺(tái)相互隔離的虛擬服務(wù)器,建立虛擬服務(wù)器資源池,統(tǒng)一調(diào)配這些物理硬件資源,從而實(shí)現(xiàn)服務(wù)器的高效利用和整合。
基于虛擬化層的服務(wù)器虛擬化是,虛擬層直接運(yùn)行于硬件之上,并對(duì)硬件資源比如內(nèi)存、硬盤(pán)、CPU、設(shè)備和I/O等進(jìn)行劃分,允許在單個(gè)服務(wù)器平臺(tái)上同時(shí)運(yùn)行多個(gè)獨(dú)立操作系統(tǒng)。運(yùn)用該技術(shù),能夠在一臺(tái)服務(wù)器上完成傳統(tǒng)運(yùn)用多臺(tái)服務(wù)器方可完成的功能,大大提高了服務(wù)器的使用率。該方式的典型代表為VMwarevSphere,現(xiàn)在最新的版本為VMwarevSphere6.5,具體層次結(jié)構(gòu)如圖1所示。
基于虛擬化層的服務(wù)器虛擬化,VMware公司是業(yè)界領(lǐng)先的虛擬化廠商,在虛擬化和云計(jì)算基礎(chǔ)架構(gòu)領(lǐng)域處于全球領(lǐng)先地位。現(xiàn)購(gòu)買(mǎi)的主流服務(wù)器基本上都支持VMware vSphere,且VMwarevSphere運(yùn)行非常穩(wěn)定。據(jù)統(tǒng)計(jì),VMware vSphere曾經(jīng)有連續(xù)運(yùn)行1000多天沒(méi)有重啟的記錄。而微軟公司的Hyper-V和2008年推出的一款虛擬化產(chǎn)品必須架設(shè)于Win2008或者Win7之上,但因?yàn)閃indows操作系統(tǒng)漏洞比較多,需要經(jīng)常更新補(bǔ)丁程序,所以,微軟公司的Hyper-V通常30多天就需要進(jìn)行一次更新重啟操作。從系統(tǒng)的安全、穩(wěn)定、實(shí)用性、擴(kuò)展性等方面考慮,鎮(zhèn)江科技創(chuàng)新服務(wù)平臺(tái)選用VMwarevSphere作為平臺(tái)的技術(shù)解決方案。
容器虛擬化技術(shù)是一種內(nèi)核虛擬化技術(shù),在操作系統(tǒng)上分隔出多個(gè)虛擬服務(wù)器,每個(gè)虛擬服務(wù)器支持一個(gè)操作系統(tǒng)運(yùn)行環(huán)境,該環(huán)境就像“容器”一樣。分隔出的虛擬服務(wù)器擁有自己的進(jìn)程和獨(dú)立的網(wǎng)絡(luò)空間,虛擬服務(wù)器之間可以隔離進(jìn)程和資源。在容器虛擬化技術(shù)中,業(yè)界比較領(lǐng)先的是Docker技術(shù)。自2013年Docker技術(shù)發(fā)布至今,它快速發(fā)展并被廣泛應(yīng)用[2]。百度[3]、阿里巴巴[4]、Google[5]、IBM[6]、Redhat[7]、Oracle[8]等國(guó)際互聯(lián)網(wǎng)巨頭都相繼支持Docker。Docker基于LXC的高級(jí)容器引擎和go語(yǔ)言,并遵從Apache2.0協(xié)議,開(kāi)發(fā)者可以打包它們的應(yīng)用和依賴包到一個(gè)可移植的容器中,然后發(fā)布到任何流行的服務(wù)器上,具體層次結(jié)構(gòu)如圖2所示。

圖2 容器虛擬化技術(shù)
Docker包括三大核心概念,即鏡像、倉(cāng)庫(kù)和容器,具體概念如圖3所示。Docker采用的是Client/Server架構(gòu)。客戶端向服務(wù)器發(fā)送請(qǐng)求,服務(wù)器負(fù)責(zé)構(gòu)建、運(yùn)行和分發(fā)容器。客戶端和服務(wù)器可以運(yùn)行在同一個(gè)Host上,客戶端也可以通過(guò)socket或RESTAPI與遠(yuǎn)程的服務(wù)器通信。
Docker鏡像可以理解為一套程序只讀模板,它包含了Linux操作系統(tǒng)、Apache或者Web應(yīng)用程序,等等。鏡像是創(chuàng)建Docker容器的基礎(chǔ)。Docker容器是Docker鏡像的運(yùn)行實(shí)例,它是由Docker鏡像構(gòu)建而成的。一款軟件或者單一的功能模塊可以運(yùn)行在單一的Docker容器中,同時(shí),Docker容器包含全部運(yùn)行必需的要素。其中包括操作系統(tǒng)、應(yīng)用程序代碼、運(yùn)行時(shí)、系統(tǒng)工具和系統(tǒng)庫(kù)等。

圖3 Docker概念圖
Docker鏡像與Docker容器密切相關(guān),缺一不可,也可以相互轉(zhuǎn)換。Docker的鏡像可以從官網(wǎng)倉(cāng)庫(kù)獲得,之后通過(guò)Docker運(yùn)行命令即可啟動(dòng)一個(gè)容器運(yùn)行。當(dāng)需要將容器轉(zhuǎn)化為鏡像時(shí),可以通過(guò)Docker命令轉(zhuǎn)化。
在本項(xiàng)目中,有大量容器和鏡像需要管理,因此,需要選用容器集群管理技術(shù)實(shí)現(xiàn)對(duì)容器的管理和編排。現(xiàn)主流的容器集群管理技術(shù)主要有Swarm、Kubernetes兩類(lèi)。
本項(xiàng)目主要采用的是Kubernetes技術(shù)。Kubernetes是Google開(kāi)源的容器集群管理系統(tǒng),其提供應(yīng)用部署、維護(hù)、擴(kuò)展機(jī)制等功能。利用Kubernetes能方便地管理跨機(jī)器運(yùn)行容器化的應(yīng)用,具有輕量化、模塊化、便攜和可擴(kuò)展的特點(diǎn)。項(xiàng)目選用Kubernetes作為容器的管理和編排工具。
Kubernetes整體框架如圖4所示,它主要包括MasterAPI Server、Pods和Kubelet。

圖4 Kubernetes整體框架圖
MasterAPIServer控制所有在Kubernetes節(jié)點(diǎn)上運(yùn)行應(yīng)用容器必備服務(wù)的主服務(wù)器,提供資源操作的唯一入口,并提供認(rèn)證、授權(quán)、訪問(wèn)控制、API注冊(cè)和發(fā)現(xiàn)等機(jī)制。
Pods是Kubernetes的基本操作單元,由相關(guān)的一個(gè)或多個(gè)容器構(gòu)成一個(gè)Pod,通常Pod里的容器運(yùn)行相同的應(yīng)用。Pod包含的容器運(yùn)行在同一個(gè)Minion(Host)上,看作一個(gè)統(tǒng)一管理單元,共享相同的volumes和networknamespace/IP和Port空間。Kubelet負(fù)責(zé)管理Pods和它們上面的容器——images鏡像、Volume(CVI)和網(wǎng)絡(luò)(CNI)的管理等,也負(fù)責(zé)維護(hù)容器的生命周期。
鎮(zhèn)江科技創(chuàng)新服務(wù)平臺(tái)按照實(shí)現(xiàn)功能劃分為二十大功能模塊,這些功能模塊的設(shè)計(jì)、開(kāi)發(fā)、測(cè)試、運(yùn)行等需要在不同階段同步進(jìn)行。傳統(tǒng)的軟件開(kāi)發(fā)模式是,將所有的功能模塊集成到單臺(tái)服務(wù)器上,這顯然不符合開(kāi)發(fā)要求。解決這個(gè)問(wèn)題的方案一是,將不同功能模塊的設(shè)計(jì)、測(cè)試、運(yùn)行等發(fā)布到不同的虛擬服務(wù)器上完成,功能模塊之間公用數(shù)據(jù)庫(kù)。但是,采用這種方式,虛擬服務(wù)器建立的數(shù)量受限于物理服務(wù)器的硬件配置,有一定的局限性。解決這個(gè)問(wèn)題的方案二是,采用容器虛擬化技術(shù),這種方式的好處是,在單臺(tái)服務(wù)器上可以同時(shí)運(yùn)行幾十甚至上百個(gè)容器;但缺點(diǎn)是,它是共享系統(tǒng)內(nèi)核的模式,所以,安全性比較低。鎮(zhèn)江科技創(chuàng)新服務(wù)平臺(tái)在這兩種技術(shù)的基礎(chǔ)上提出了服務(wù)器虛擬化+容器虛擬化+負(fù)載均衡的新型平臺(tái)設(shè)計(jì),以實(shí)現(xiàn)系統(tǒng)架構(gòu)。具體的研究目的是:將不同類(lèi)型的功能模塊部署到不同的虛擬機(jī)上,實(shí)現(xiàn)功能模塊之間的安全隔離;將類(lèi)似功能模塊部署到同一虛擬機(jī)的不同容器中,實(shí)現(xiàn)類(lèi)似功能模塊之間可以分別同時(shí)上線、測(cè)試、運(yùn)行等,不互相影響;將同一功能模塊部署到同一虛擬機(jī)的不同容器中,使用負(fù)載均衡分擔(dān)大數(shù)據(jù)業(yè)務(wù)的并發(fā)訪問(wèn)等。
鎮(zhèn)江科技創(chuàng)新服務(wù)平臺(tái)運(yùn)用系統(tǒng)論的方法,從全局的角度出發(fā),按照平臺(tái)各方面、各層次、各要素統(tǒng)籌規(guī)劃,集中有效資源,高效、快捷地實(shí)現(xiàn)目標(biāo)。平臺(tái)采用層次結(jié)構(gòu),系統(tǒng)平臺(tái)共分6層,由下向上依次為硬件資源層、虛擬機(jī)管理程序?qū)印⑻摂MWeb虛擬數(shù)據(jù)庫(kù)及虛擬文件服務(wù)器層、Docker引擎層、應(yīng)用程序容器層和服務(wù)板塊層。
硬件資源層主要是平臺(tái)系統(tǒng)的硬件,比如服務(wù)器、硬件防火墻、硬件磁盤(pán)陣列、硬件負(fù)載均衡、Web安全網(wǎng)關(guān)和光纖交換機(jī)等。
虛擬機(jī)管理程序?qū)又饕窃谟布?wù)器上部署了VMwareESXi5.5.我們對(duì)2臺(tái)硬件服務(wù)器進(jìn)行了存儲(chǔ)規(guī)劃、內(nèi)存規(guī)劃和網(wǎng)絡(luò)規(guī)劃等,2臺(tái)硬件服務(wù)器按照模塊功能分類(lèi),分別虛擬了8臺(tái)Web服務(wù)器、1臺(tái)數(shù)據(jù)庫(kù)服務(wù)器、1臺(tái)數(shù)據(jù)庫(kù)備份服務(wù)器、1臺(tái)文件服務(wù)器和1臺(tái)文件備份服務(wù)器。
虛擬Web虛擬數(shù)據(jù)庫(kù)及虛擬文件服務(wù)器層按照平臺(tái)的建設(shè)目標(biāo),規(guī)劃、設(shè)計(jì)了十一大基礎(chǔ)數(shù)據(jù)庫(kù)及相應(yīng)的附件文件等,分別存于虛擬數(shù)據(jù)庫(kù)服務(wù)器上,由操作系統(tǒng)和應(yīng)用程序按周期備份數(shù)據(jù)和文件。以十一大專(zhuān)業(yè)數(shù)據(jù)庫(kù)為基礎(chǔ),按照實(shí)現(xiàn)功能劃分為二十大功能模塊。根據(jù)功能模塊的屬性劃分,把20個(gè)功能模塊劃分為八大類(lèi)型,這八大類(lèi)型分別安裝到8臺(tái)Web虛擬服務(wù)器上。
在每臺(tái)虛擬Web服務(wù)器上分別安裝了Docker,Docker之上分別有Docker引擎和運(yùn)行時(shí)環(huán)境,可以在其上運(yùn)行容器和程序。
在8臺(tái)Web服務(wù)器上分別安裝了Docker環(huán)境、引擎,利用鏡像運(yùn)行了33個(gè)Docker容器,分別對(duì)應(yīng)了二十大功能模塊。由于平臺(tái)主站及內(nèi)容管理、科技計(jì)劃管理、科技金融、辦公系統(tǒng)、移動(dòng)客戶系統(tǒng)、微信公眾系統(tǒng)比較重要,且訪問(wèn)量比較大,需要提供7×24服務(wù),因此,考慮使用Nginx[9]服務(wù)器技術(shù)。Nginx是一款高性能、低消耗、開(kāi)源的Web服務(wù)器和反向代理服務(wù)器,由于其并發(fā)高、內(nèi)存的占有率低、代碼開(kāi)源以及可擴(kuò)展等優(yōu)點(diǎn),已經(jīng)受到了越來(lái)越多企業(yè)和開(kāi)發(fā)者的青睞。淘寶網(wǎng)基于Nginx發(fā)起Tengine[10]的Web服務(wù)器項(xiàng)目,在其原有基礎(chǔ)上增加動(dòng)態(tài)編譯功能、改進(jìn)負(fù)載均衡策略、支持腳本語(yǔ)言Lua等,且其穩(wěn)定性和高性能已經(jīng)得到了很好的驗(yàn)證。我們?cè)谝粋€(gè)Docker引擎上同時(shí)運(yùn)行2~3個(gè)實(shí)現(xiàn)同樣功能的系統(tǒng)容器服務(wù),當(dāng)其中一項(xiàng)系統(tǒng)容器服務(wù)宕機(jī)時(shí),還有另外1~2個(gè)系統(tǒng)容器繼續(xù)提供服務(wù),并且在訪問(wèn)量巨大、高峰期時(shí)通過(guò)Nginx服務(wù)器高效算法指定客戶訪問(wèn)其中一個(gè)容器,以實(shí)現(xiàn)系統(tǒng)平臺(tái)的負(fù)載均衡。圖5為鎮(zhèn)江科技創(chuàng)新服務(wù)平臺(tái)系統(tǒng)架構(gòu)。

圖5 鎮(zhèn)江科技創(chuàng)新服務(wù)平臺(tái)系統(tǒng)架構(gòu)
8臺(tái)Web服務(wù)器上的八大服務(wù)類(lèi)型如下。
3.5.1 鎮(zhèn)江科技創(chuàng)新服務(wù)平臺(tái)主網(wǎng)站
鎮(zhèn)江科技創(chuàng)新服務(wù)平臺(tái)主網(wǎng)站包含2臺(tái)運(yùn)行同樣服務(wù)的平臺(tái)主站和內(nèi)容管理模塊容器,使用Nginx服務(wù)容器可以實(shí)現(xiàn)負(fù)載均衡;平臺(tái)的系統(tǒng)管理、日志審計(jì)模塊容器;組織機(jī)構(gòu)、人員、角色、權(quán)限管理模塊容器;科技查新模塊容器;公眾參與模塊容器;在線展會(huì)系統(tǒng)模塊容器;鎮(zhèn)江地區(qū)產(chǎn)業(yè)專(zhuān)題文獻(xiàn)模塊容器七大功能模塊容器。
3.5.2 技術(shù)交易
技術(shù)交易包含科技成果交易模塊容器,技術(shù)需求發(fā)布、預(yù)約模塊容器,網(wǎng)上技術(shù)交易專(zhuān)項(xiàng)獎(jiǎng)勵(lì)申報(bào)模塊容器三大功能模塊容器。
3.5.3 大型儀器共享
大型儀器共享包含大儀平臺(tái)入庫(kù)、服務(wù)預(yù)約模塊容器,大儀平臺(tái)用戶科技創(chuàng)新券申領(lǐng)使用與兌現(xiàn)模塊容器,科技專(zhuān)家、服務(wù)等發(fā)布和服務(wù)預(yù)約模塊容器三大功能模塊容器。
3.5.4 科技金融
科技金融包含2臺(tái)運(yùn)行同樣服務(wù)的科技金融服務(wù)模塊容器,使用Nginx服務(wù)容器可以實(shí)現(xiàn)負(fù)載均衡。
3.5.5 科技計(jì)劃管理
科技計(jì)劃管理包含3臺(tái)運(yùn)行同樣服務(wù)的科技計(jì)劃管理服務(wù)模塊容器,使用Nginx服務(wù)容器可以實(shí)現(xiàn)負(fù)載均衡。
3.5.6 科技統(tǒng)計(jì)分析及網(wǎng)站統(tǒng)計(jì)
科技統(tǒng)計(jì)分析及網(wǎng)站統(tǒng)計(jì)包含統(tǒng)計(jì)分析模塊容器、網(wǎng)站統(tǒng)計(jì)分析模塊容器兩大功能模塊容器。
3.5.7 辦公業(yè)務(wù)
辦公業(yè)務(wù)包含2臺(tái)運(yùn)行同樣服務(wù)的辦公業(yè)務(wù)模塊容器,使用Nginx服務(wù)容器可以實(shí)現(xiàn)負(fù)載均衡。
3.5.8 移動(dòng)及微信
移動(dòng)及微信包含2臺(tái)運(yùn)行同樣服務(wù)的微信公眾號(hào)模塊容器,2臺(tái)運(yùn)行同樣服務(wù)的移動(dòng)客戶端模塊容器,使用2臺(tái)Nginx服務(wù)容器可以實(shí)現(xiàn)負(fù)載均衡。
鎮(zhèn)江科技創(chuàng)新服務(wù)平臺(tái)設(shè)定了20個(gè)模塊、33個(gè)容器進(jìn)行分布式開(kāi)發(fā)、測(cè)試、發(fā)布等,其中,33個(gè)容器又都分別轉(zhuǎn)化為鏡像存入私有鏡像倉(cāng)庫(kù)中,我們需要對(duì)這些鏡像進(jìn)行貫穿整個(gè)應(yīng)用生命周期的管理。
在開(kāi)發(fā)過(guò)程中,修改同一功能模塊的代碼,會(huì)生成不同版本的容器。保證鏡像內(nèi)容的一致性的方法有:①在軟件開(kāi)發(fā)的各階段都用相同dockerfile去生成所需鏡像,但是,因?yàn)槭窃诓煌瑫r(shí)間構(gòu)建的鏡像,所以,采取這種方式有可能構(gòu)成不同的版本;②在不同階段始終使用相同的鏡像,雖然增加了文件傳輸量,但可確保鏡像的一致性。我們開(kāi)發(fā)時(shí)采用了第二種方式。
在實(shí)際工作中,我們對(duì)鏡像進(jìn)行階段分類(lèi),把這些鏡像按照開(kāi)發(fā)的不同階段存入不同的鏡像倉(cāng)庫(kù)中。我們把鏡像倉(cāng)庫(kù)分為開(kāi)發(fā)環(huán)境鏡像倉(cāng)庫(kù)、測(cè)試環(huán)境鏡像倉(cāng)庫(kù)、準(zhǔn)運(yùn)行環(huán)境鏡像倉(cāng)庫(kù)和運(yùn)行環(huán)境鏡像倉(cāng)庫(kù)。開(kāi)發(fā)環(huán)境鏡像倉(cāng)庫(kù)主要是由開(kāi)發(fā)人員使用,鏡像變化頻繁。開(kāi)發(fā)完成后,鏡像同步到測(cè)試環(huán)境鏡像倉(cāng)庫(kù)。測(cè)試環(huán)境鏡像倉(cāng)庫(kù)主要是由測(cè)試人員使用的,鏡像保持不變。當(dāng)功能模塊測(cè)試通過(guò)后,鏡像推送到準(zhǔn)運(yùn)行環(huán)境鏡像倉(cāng)庫(kù)。準(zhǔn)運(yùn)行環(huán)境鏡像倉(cāng)庫(kù)主要是由測(cè)試和運(yùn)維人員使用的,鏡像保持不變,功能模塊運(yùn)行平穩(wěn)后,再發(fā)布到運(yùn)行環(huán)境鏡像倉(cāng)庫(kù)。運(yùn)行環(huán)境鏡像倉(cāng)庫(kù)是發(fā)布鏡像到正式運(yùn)行環(huán)境的各個(gè)節(jié)點(diǎn)上線運(yùn)行,該鏡像就相對(duì)穩(wěn)定不變。
我們把鎮(zhèn)江科技創(chuàng)新服務(wù)平臺(tái)開(kāi)發(fā)團(tuán)隊(duì)的角色分為項(xiàng)目負(fù)責(zé)人、開(kāi)發(fā)、測(cè)試和運(yùn)維等4類(lèi)人員。項(xiàng)目負(fù)責(zé)人對(duì)鏡像有讀寫(xiě)權(quán)利,可以設(shè)定其他人員的角色,增加和刪除團(tuán)隊(duì)其他成員;開(kāi)發(fā)人員對(duì)鏡像具有讀寫(xiě)權(quán)限;測(cè)試和運(yùn)維人員對(duì)鏡像只有讀權(quán)限。
鎮(zhèn)江科技創(chuàng)新服務(wù)平臺(tái)的軟件體系架構(gòu)設(shè)計(jì)充分考慮了機(jī)房硬件資源的有限性,功能模塊的復(fù)雜性和多樣性,以及平臺(tái)對(duì)安全性、穩(wěn)定性和用戶訪問(wèn)量等要求,并且要求平臺(tái)各功能模塊運(yùn)行、開(kāi)發(fā)、測(cè)試和修改等軟件開(kāi)發(fā)各階段同步進(jìn)行。因此,采用虛擬服務(wù)器技術(shù)、Docker技術(shù)、Nginx技術(shù)相結(jié)合的層次結(jié)構(gòu)方式,使單獨(dú)的功能模塊應(yīng)用運(yùn)行在單獨(dú)的容器中。這樣一個(gè)功能模塊在運(yùn)行測(cè)試時(shí)需要修改,它可以直接下線修改,重新配置環(huán)境上線運(yùn)行,也不會(huì)對(duì)其他功能模塊的運(yùn)行產(chǎn)生影響。另外,在此過(guò)程中,可以使用容器集群管理技術(shù)對(duì)Docker容器和鏡像等進(jìn)行集成化開(kāi)發(fā)和管理。科技創(chuàng)新服務(wù)平臺(tái)在全國(guó)各地已廣泛運(yùn)行,筆者希望文中提出的幾項(xiàng)技術(shù)融合的平臺(tái)系統(tǒng)架構(gòu)開(kāi)發(fā)模式的應(yīng)用能為日后國(guó)內(nèi)同行工作的順利進(jìn)行提供參考和借鑒。
[1]馮貴蘭.基于虛擬化的高校云計(jì)算數(shù)據(jù)中心建設(shè)研究[J].軟件導(dǎo)刊,2016,15(1):121-123.
[2]楊保華,戴王劍,曹亞侖.Docker技術(shù)入門(mén)與實(shí)戰(zhàn)[M].北京:機(jī)械工業(yè)出版社,2015.
[3]國(guó)內(nèi)“BAT”先鋒企業(yè)百度BaiduAppEngine(BAE)平臺(tái)[EB/OL].[2015-02-02].http://www.xueliedu.com/ a/xinwenzixun/2015/0220/280618.html.
[4]Docker周報(bào):阿里云ECS支持Docker[EB/OL].[2015-02-02].http://www.infoq.com/cn/news/2014/10/d ocker-aliyun-ecs?utm_campaign=infoq_content&utmsour ce=infoq&utm_medium=feed&utm_term=global.
[5]Google擁抱Docker:把互聯(lián)網(wǎng)變成一個(gè)巨大的計(jì)算機(jī)[EB/OL].[2015-2-02].http://www.pingwest.com/ google-docker/.
[6]IBM和Docker宣布建立戰(zhàn)略伙伴關(guān)系[EB/OL].[2015-02-02].http://www.oschina.net/news/58186/ibm-d ocker.
[7]紅帽公司推出專(zhuān)為Docker定制的Linux發(fā)行版[EB/OL].[2015-03-6].https://www.oschina.net/news/60226/red-ha t-strips-down-for-docker.
[8]Oracle和Docker合作,數(shù)據(jù)庫(kù)、工具可在Docker部署[EB/OL].[2017-04-23].https://www.oschina.net/news/ 84107/docker-store-oracle.
[9]Nginx百度百科[EB/OL].http://baike.baidu.com/link?url= 7k8Fj935XZBMt16AdudidgrQIGsIrA4XVCl5Wr4FpLFU cVQUFO9M8dT3EKYgvOK5KrPJ2OgKfvB2Otkz_Ydfk q.
[10]Tengine百度百科[EB/OL].http://baike.baidu.com/link? url=MMDRjuKUoi83i83UDXh5QaQhxdFyePuHsWHJfx B17lpqPPEbZ68E1GuZQ4FzoIR1efSYEk87r6U6of_7zt wgJ_.
〔編輯:白潔〕
TP391
A
10.15913/j.cnki.kjycx.2017.17.066
2095-6835(2017)17-0066-05
徐欣威(1974—),男,江蘇鎮(zhèn)江人,大學(xué)本科,高級(jí)工程師/國(guó)家系統(tǒng)分析師,主要從事軟件系統(tǒng)架構(gòu)、云計(jì)算、大數(shù)據(jù)方面的研究。
*鎮(zhèn)江市創(chuàng)新能力建設(shè)公共服務(wù)平臺(tái)項(xiàng)目(SS2015020)