盛紅雷,劉洪波,鄭 磊
(1.國(guó)網(wǎng)電力科學(xué)研究院,南京 210000;2.國(guó)網(wǎng)吉林省電力有限公司信息通信公司,長(zhǎng)春 130022)
近年來,國(guó)家電網(wǎng)公司信息通信運(yùn)行管理體系正在逐步完善,以信息運(yùn)維綜合監(jiān)控系統(tǒng)為主的八大支撐工具系統(tǒng)的建設(shè)完成,為生產(chǎn)、經(jīng)營(yíng)和管理等工作提供了可靠保障[1]。另外,隨著云計(jì)算技術(shù)的不斷成熟與運(yùn)用,虛擬化資源池覆蓋范圍的不斷擴(kuò)大,運(yùn)維資源及環(huán)境正在逐步全面云化,如何實(shí)現(xiàn)服務(wù)透明、自動(dòng)管控、動(dòng)態(tài)調(diào)控、彈性調(diào)度、快速自愈、作業(yè)智能、運(yùn)行精益,提升“科學(xué)調(diào)控、精益運(yùn)檢、敏捷服務(wù)”核心能力,將現(xiàn)面臨新的挑戰(zhàn)[2]。
為解決上述不足,本文基于Docker關(guān)鍵技術(shù)進(jìn)行了信息系統(tǒng)運(yùn)維自動(dòng)化技術(shù)的研究,實(shí)現(xiàn)系統(tǒng)部署及其運(yùn)維自動(dòng)化,以滿足各信息系統(tǒng)版本自動(dòng)化升級(jí)的需求,有效支撐各種業(yè)務(wù)活動(dòng)的同時(shí),提升運(yùn)維人員效率,提高資源的利用率。
Docker是一個(gè)開源的應(yīng)用容器引擎,開發(fā)人員通過Docker可以將應(yīng)用和依賴包封裝到一個(gè)可移植的容器中,并發(fā)布到任何Linux機(jī)器上,從而實(shí)現(xiàn)輕量級(jí)的操作系統(tǒng)虛擬化解決方案[3]。基于Docker核心技術(shù)的構(gòu)建容器集群管理的解決方案主要有:美國(guó)加州大學(xué)伯克利分校AMPLab實(shí)驗(yàn)室開發(fā)的Mesos、Google開源的Docker容器集群管理系統(tǒng)Kubernetes,以及Docker公司的容器編排管理工具Docker Swarm。上述三種解決方案在調(diào)度級(jí)別、成熟度、使用場(chǎng)景、活躍度、案例等方面的比較如表1所示:
表1 各技術(shù)方案對(duì)比分析
通過對(duì)目前構(gòu)建Docker容器常用的幾種技術(shù)架構(gòu)進(jìn)行調(diào)度級(jí)別、活躍度、使用場(chǎng)景、成熟度等多方面進(jìn)行評(píng)估,本文選擇基于Google開源的Docker容器集群管理系統(tǒng)的方案。相對(duì)于其他兩種方案,其具有成熟度較高、使用基于Predicates和Priorities兩階段算法的兩級(jí)調(diào)度框架、適合于多種不同應(yīng)用場(chǎng)景、可以混合部署、平臺(tái)與應(yīng)用耦合度不高等優(yōu)點(diǎn)。
本文構(gòu)建的基于Docker關(guān)鍵技術(shù)的信息系統(tǒng)運(yùn)維自動(dòng)化管理平臺(tái)的技術(shù)架構(gòu)如圖1所示。
圖1 運(yùn)維自動(dòng)化管理平臺(tái)技術(shù)架構(gòu)
在系統(tǒng)中,可以被創(chuàng)建、銷毀、調(diào)度的最小部署單元被抽象成一個(gè)Pod,比如一個(gè)或一組容器。為了滿足一個(gè)應(yīng)用多個(gè)Pod支撐的需要,系統(tǒng)通過Replica-tion Controller實(shí)現(xiàn)復(fù)制多個(gè)Pod副本,保證副本數(shù)量;Replication Controller可以直接復(fù)制已有Pod,再通過Label selector關(guān)聯(lián),或者利用repcon模板直接建立多個(gè)Pod副本。
系統(tǒng)的最外圍單元是Service,使用虛擬的訪問IP和服務(wù)端口,能夠訪問事先定義好的Pod資源。Labels可以區(qū)分Pod、Replication Controller、Service的key/value鍵值對(duì),然而只限于他們之間的關(guān)系辨別,如果需要對(duì)這些單元本身進(jìn)行操作,一般都使用name標(biāo)簽。
為了解決了同一主宿機(jī)對(duì)于相同服務(wù)端口出現(xiàn)沖突的問題,后端使用了隨機(jī)、輪循負(fù)載均衡算法的Proxy,其還具有轉(zhuǎn)發(fā)服務(wù)端口對(duì)外提供服務(wù)的能力。
自動(dòng)化部署系統(tǒng)采用C/S結(jié)構(gòu),產(chǎn)品本身提供豐富的Webservice接口/JMS接口,通過接口調(diào)用的方式,可實(shí)現(xiàn)與I6000系統(tǒng)的數(shù)據(jù)集成。自動(dòng)化部署系統(tǒng)還提供Webservice接口/JMS接口來提取/發(fā)布包括應(yīng)用系統(tǒng)信息、數(shù)據(jù)庫信息等在內(nèi)的數(shù)據(jù),I6000系統(tǒng)可通過調(diào)用相關(guān)接口來讀取自動(dòng)化部署系統(tǒng)的基礎(chǔ)數(shù)據(jù)來實(shí)現(xiàn)同步與更新。此外I6000系統(tǒng)可提供Webservice接口/JMS接口,供自動(dòng)化部署系統(tǒng)進(jìn)行數(shù)據(jù)更新與同步[4]。
自動(dòng)化部署系統(tǒng)對(duì)設(shè)備的管理有其自身的特點(diǎn),初次進(jìn)行設(shè)備納管時(shí)需以I6000系統(tǒng)中資源管理模塊(CMDB)為準(zhǔn)提取IP、OS/IOS版本等基本配置信息。在日常運(yùn)維中,系統(tǒng)定時(shí)進(jìn)行設(shè)備信息采集,則以系統(tǒng)所搜集設(shè)備信息為準(zhǔn),對(duì)I6000中資源管理模塊(CMDB)進(jìn)行同步與更新,對(duì)其數(shù)據(jù)項(xiàng)進(jìn)行補(bǔ)充與更新,從而保證信息的完整與準(zhǔn)確。用戶可以直接指定某些相干版本的應(yīng)用鏡像進(jìn)行安裝或升級(jí),如果失敗則直接指定原版本鏡像進(jìn)行回滾和還原,以保證系統(tǒng)的穩(wěn)定性。
本文將Docker關(guān)鍵技術(shù)在運(yùn)維自動(dòng)化中的應(yīng)用研究作為信息系統(tǒng)運(yùn)維工作提高的切入點(diǎn),對(duì)Docker技術(shù)進(jìn)行研究和分析,并結(jié)合國(guó)網(wǎng)云的架構(gòu)設(shè)計(jì)、資源池現(xiàn)狀,提出了Docker容器技術(shù)在國(guó)網(wǎng)云的應(yīng)用方法,并通過對(duì)網(wǎng)絡(luò)、存儲(chǔ)等方面進(jìn)行調(diào)整和優(yōu)化,提升了整套架構(gòu)的性能,實(shí)現(xiàn)Docker容器技術(shù)與國(guó)網(wǎng)云的高效融合,提高了信息系統(tǒng)運(yùn)維及部署的效率,大大減少運(yùn)維人員的工作量,提升了運(yùn)維服務(wù)的質(zhì)量,降低了信息系統(tǒng)版本升級(jí)時(shí)帶來的風(fēng)險(xiǎn)。