北京國遙新天地信息技術(shù)股份有限公司EV-Server研發(fā)團(tuán)隊(duì)一直在積極探索更好的產(chǎn)品交付方式和更優(yōu)的服務(wù)資源管理,從而實(shí)現(xiàn)基于傳統(tǒng)的虛擬化技術(shù)到基于Docker的容器化交付轉(zhuǎn)變。
最近,該團(tuán)隊(duì)結(jié)合Kubernetes(簡稱K8s)的部署運(yùn)維優(yōu)勢,搭建了基于K8s的GIS云平臺—EV-Server7,以便提高生產(chǎn)環(huán)境中對集群管理、運(yùn)行效率和產(chǎn)品運(yùn)維等方面的綜合能力。
一、容器化部署優(yōu)勢

統(tǒng)一運(yùn)行環(huán)境:
傳統(tǒng)GIS平臺都部署在物理機(jī)或虛擬機(jī)中,在部署和維護(hù)過程中,需要關(guān)心平臺的CPU、內(nèi)存、硬盤等硬件資源。近些年,容器的出現(xiàn)徹底解決了資源依賴問題,使用戶能夠更好的關(guān)注GIS業(yè)務(wù)本身。
彈性能力更強(qiáng):
在規(guī)?;⒓夯渴饡r,通過使用容器方式,用戶可以無需考慮系統(tǒng)平臺之間的差異,從而使服務(wù)部署、啟停管理變得更加方便,節(jié)點(diǎn)伸縮更加容易,減少用戶運(yùn)維成本。
交付時間縮短:
通過容器化部署應(yīng)用,在業(yè)務(wù)發(fā)生增加或變化時,用戶可以動態(tài)添加和維護(hù)已有業(yè)務(wù)服務(wù),而不影響終端用戶應(yīng)用,實(shí)現(xiàn)服務(wù)滾動更新迭代,優(yōu)化產(chǎn)品交付時間。
容錯能力強(qiáng):
EV-Server 7將服務(wù)容器化后,可通過K8s實(shí)現(xiàn)動態(tài)伸縮,有效避免服務(wù)單點(diǎn)故障。
鑒于容器化的上述優(yōu)勢,EV-Server 7已經(jīng)對服務(wù)全部進(jìn)行了微服務(wù)化改造,以適應(yīng)容器化應(yīng)用。
二、EV-Server7基于K8s的部署架構(gòu)

EV-Server7基于K8s的部署架構(gòu)圖
自上而下,EV-Server7將各個業(yè)務(wù)功能解耦為獨(dú)立的微服務(wù)。在K8s中,每一個微服務(wù)運(yùn)行在獨(dú)立的容器中,并且每個微服務(wù)都可以部署在單個或多個容器中以提高在高負(fù)載情況下的服務(wù)可用性。同時,由于不同容器之間不共享資源,容器運(yùn)行時不會相互影響,大大提高了服務(wù)可靠性。在EV-Server7中,通過注冊中心和服務(wù)網(wǎng)關(guān)可以快速聚合各個微服務(wù)和自定義插件的API,最終實(shí)現(xiàn)服務(wù)接口統(tǒng)一對外提供。
三、快速搭建高可用GIS云平臺
進(jìn)行微服務(wù)改造的目的是為了更好的容器化,這樣可以借助K8s進(jìn)行容器編排。如圖所示,在EV-Server7部署完成后,每一個服務(wù)都是一個單獨(dú)的容器,服務(wù)之間環(huán)境隔離,運(yùn)行時互不影響。當(dāng)對某個服務(wù)進(jìn)行升級更新時,只需單獨(dú)更新某一個鏡像即可。

部署集群時相比在虛擬機(jī)或物理機(jī)部署要容易很多,通過K8s部署集群基本不用考慮物理環(huán)境。每個服務(wù)分配在哪個物理節(jié)點(diǎn)都是由K8s完成,在K8s中每個服務(wù)都會有一個服務(wù)名(如下圖的ev-rasterserver),服務(wù)之間的通訊通過服務(wù)名進(jìn)行,這樣服務(wù)可以自動發(fā)現(xiàn)、自動修復(fù)。如果某個服務(wù)因?yàn)槟撤N原因掛掉,服務(wù)會被迅速拉起,進(jìn)行故障遷移,保證線上環(huán)境能夠不間斷運(yùn)行。

當(dāng)線上業(yè)務(wù)量增加時,可以動態(tài)增加服務(wù)實(shí)例的數(shù)量,比如當(dāng)業(yè)務(wù)需要大量訪問影像時,可以啟動多個影像服務(wù)。EV-Server7集群內(nèi)部會根據(jù)負(fù)載均衡策略,啟動相應(yīng)的影像服務(wù)來應(yīng)對突出其來的訪問壓力。當(dāng)業(yè)務(wù)高峰過后,亦可將多余的服務(wù)實(shí)例回收,節(jié)約集群資源。

四、可擴(kuò)展、快速交付
集群插件開發(fā)和EV-Server7單機(jī)插件開發(fā)一樣,只需將原本的插件打包為一個docker鏡像,之后將docker鏡像推送到鏡像倉庫。下面展示具體的插件部署流程,以下步驟只在首次部署時完成即可,以后只需從倉庫拉取鏡像,大大加快了交付流程。
在Kuboard中創(chuàng)建對應(yīng)的插件容器,首先配置鏡像的名稱和描述等信息。

之后配置容器的鏡像倉庫信息和容器的啟動命令,參數(shù)中的配置必須進(jìn)行添加,將插件添加到注冊中心,由服務(wù)網(wǎng)關(guān)進(jìn)行統(tǒng)一調(diào)用。配置完成后,點(diǎn)擊保存則會開始創(chuàng)建對應(yīng)的鏡像容器。

鏡像啟動完成后如下圖所示。

當(dāng)前,云GIS已經(jīng)越來越多的應(yīng)用于各行各業(yè),EV-Server7結(jié)合K8s實(shí)現(xiàn)了GIS支撐環(huán)境的快速構(gòu)建和硬件資源的有效管理,從而為更好地服務(wù)于各行業(yè)提供有效保障。