目前配電網(wǎng)信息系統(tǒng)在技術(shù)組件以及技術(shù)實(shí)現(xiàn)框架方面已經(jīng)日趨成熟。隨著產(chǎn)品開發(fā)及實(shí)施任務(wù)量的增加和定制業(yè)務(wù)的需求增多,既有配電系統(tǒng)在每次工程應(yīng)用前都需要經(jīng)過一系列復(fù)雜的持續(xù)性交付過程,依賴密集且復(fù)雜的持續(xù)性編譯、大量的系統(tǒng)測試、繁雜的部署任務(wù),導(dǎo)致工程應(yīng)用周期增長,測試任務(wù)量巨大,耗時(shí)耗材耗力。
隨著企業(yè)業(yè)務(wù)容量的拓展,服務(wù)器數(shù)量急劇增加的壓力,出現(xiàn)了現(xiàn)有的Jenkins(持續(xù)集成工具,基于Java語言開發(fā))整合Ansible(自動(dòng)化運(yùn)維工具,基于Python語言開發(fā))的方式進(jìn)行系統(tǒng)的整體集成。但由于配網(wǎng)監(jiān)控平臺的不斷發(fā)展,供應(yīng)企業(yè)要同時(shí)面對多個(gè)不同規(guī)模的交付場景,Jenkins整合Ansible的方式由于硬件資源的固定限制,已經(jīng)較難適應(yīng)不同規(guī)模的交付業(yè)務(wù)。
基于OpenStack(云計(jì)算軟件)的持續(xù)集成設(shè)計(jì)方式,在Jenkins整合Ansible提供集成服務(wù)的基礎(chǔ)上,不但可以實(shí)現(xiàn)開發(fā)的可視化、智能化的全流程管控,而且可以依托于云平臺的資源動(dòng)態(tài)分配的特點(diǎn),適應(yīng)任何規(guī)模交付場景的一比一自動(dòng)化測試交付任務(wù),保障配電網(wǎng)監(jiān)控平臺安全有效的持續(xù)性交付。
云平臺技術(shù)常規(guī)應(yīng)用有兩個(gè)方向:①以數(shù)據(jù)存儲為主要服務(wù)功能的存儲型云平臺;②以數(shù)據(jù)處理為主要服務(wù)的計(jì)算型平臺。
本項(xiàng)目依賴于OpenStack的部分開源組件,提供了基于系統(tǒng)層面以及應(yīng)用層面的資源智能化分配以及釋放,相比于原有的固定硬件設(shè)備資源,完全能夠適應(yīng)各種不同大小規(guī)模的配網(wǎng)監(jiān)控平臺的持續(xù)化集成交付任務(wù)。同時(shí)結(jié)合使用OpenStack的分布式云存儲(Swift)技術(shù),保證測試流程的安全及穩(wěn)定,增加容錯(cuò)能力,保證在某一硬件設(shè)備故障的情況下,仍能完成持續(xù)集成交付任務(wù)。
云平臺技術(shù)的中間層、基礎(chǔ)設(shè)施層提供了如下技術(shù)功能,可以任意分配及釋放現(xiàn)有的硬件設(shè)備資源:
1)虛擬化(Nova)。有了虛擬化技術(shù),可以在一個(gè)云平臺集群中生成多個(gè)全面隔離的虛擬機(jī)資源或者服務(wù)資源,資源可以隨時(shí)分配和釋放。
2)分布式云存儲技術(shù)(Swift)。能夠解決集群中單個(gè)實(shí)體硬件節(jié)點(diǎn)故障影響整體服務(wù)的問題,保證部署、測試、交付動(dòng)作連貫不受干擾。
3)負(fù)載均衡。能夠更好地支配整體云平臺的硬件資源(硬盤、內(nèi)存、網(wǎng)絡(luò)),實(shí)現(xiàn)有限資源的高度利用。
交互后臺服務(wù)是整套方案的核心,采用通用的Restful基于超文本傳送協(xié)議(hypertext transfer protocol, HTTP)的設(shè)計(jì)風(fēng)格應(yīng)用程序接口(appli- cation program interface, API),能夠完成OpenStack和Ansible、Jenkins的整合,打通一個(gè)完整而又靈活的持續(xù)性交付系統(tǒng),用來滿足節(jié)點(diǎn)數(shù)從1到N的不同規(guī)模監(jiān)控平臺持續(xù)集成及交付工作。
自定義虛擬化資源管理核心接口如下:
interface boolean create_Os(
String targetMechine, String osName, String osConfig
);
interface boolean drop_Os(
String targetMechine, String osName
);
interface boolean create_application(
String targetMechine, String appName
);
interface boolean drop_application(
String targetMechine, String appName
);
自定義持續(xù)交付job管理接口如下:
interface boolean executeJob(
String jobName
);
interface boolean createJob(
String jobName, String jobTemplateXml
);
interface boolean dropJob(
String jobName
);
使用回調(diào)函數(shù)接口的方式,交互后臺服務(wù)監(jiān)聽Jenkins的版本變化信號,觸發(fā)后續(xù)自動(dòng)部署及測試工作:
interface void callback(){
…
return (jenkins svn state);
}
持續(xù)化集成原有的方案只需要使用Jenkins界面配置即可做到固定模式、固定數(shù)量節(jié)點(diǎn)的智能配網(wǎng)監(jiān)控平臺的持續(xù)化集成及測試工作。但整合OpenStack技術(shù)之后,不僅需要一個(gè)核心的后臺服務(wù)系統(tǒng),也要有一套能夠靈活配置的交互界面。
采用云平臺技術(shù)中的Nova組件作為配電網(wǎng)的運(yùn)行載體、Swift組件保障整套集成測試環(huán)境的冗余容錯(cuò)能力,Jenkins及Ansible搭建的持續(xù)集成Server端控制集成方向及內(nèi)容、SVN(subversion,開放源代碼的版本控制系統(tǒng))作為版本庫,實(shí)現(xiàn)靈活的配網(wǎng)持續(xù)集成整體結(jié)構(gòu),如圖1所示。
1)交付后臺服務(wù)。交付后臺服務(wù)是一整套持續(xù)集成交付體系,除了包含Ansible及Jenkins整合而成的持續(xù)交付服務(wù)之外,還包括為用戶操作界面提供服務(wù)邏輯以及控制OpenStack云平臺的Web后臺服務(wù),其中Ansible的劇本代碼也是由SVN統(tǒng)一進(jìn)行代碼版本管理的,方便持續(xù)集成系統(tǒng)本身的不斷更新迭代。
除OpenClient(本項(xiàng)目自主開發(fā)模塊,作為客戶端連接Jenkins與OpenStack)之外,其他所有的對外控制接口為SSH(Secure Shell,應(yīng)用層基礎(chǔ)安全協(xié)議)。交付后臺內(nèi)部,WebServer通過Restful API接口與Jenkins服務(wù)進(jìn)行交互。
2)可視化客戶端以及complineServer。一套固定的硬件設(shè)備主要用于人工交互配置服務(wù)和節(jié)點(diǎn)以及自動(dòng)執(zhí)行編譯命令??梢暬蛻舳擞蒍Query、easyUI等前端架構(gòu)實(shí)現(xiàn),通過HTTP協(xié)議與WebServer進(jìn)行數(shù)據(jù)溝通。同時(shí)可視化客戶端也會根據(jù)用戶選擇自動(dòng)進(jìn)行所選服務(wù)及所屬節(jié)點(diǎn)的合理性分析。
圖2所示為運(yùn)維人員所配置的服務(wù)、所屬節(jié)點(diǎn)清單以及行為合理性分析的展示界面。
3)監(jiān)控平臺最終交付環(huán)境。以SSH為對外接口,是主要的交付目標(biāo)。
4)OpenStack云平臺系統(tǒng)。主要提供虛擬化以及共享存儲功能,為集成測試以及多變的測試環(huán)境提供靈活的環(huán)境。交互后臺服務(wù)通過OpenStack提供的客戶端進(jìn)行虛擬機(jī)或者服務(wù)的創(chuàng)建與起停。
虛擬化技術(shù)提供虛擬的硬件資源,共享存儲服務(wù)提供可靠的冗余容錯(cuò)機(jī)制,保證云平臺集群某臺實(shí)體硬件節(jié)點(diǎn)故障或宕機(jī)不會影響服務(wù)運(yùn)行以及造成數(shù)據(jù)丟失。負(fù)載均衡機(jī)制提供一個(gè)硬件資源的合理分配,以高效率高硬件利用率完成持續(xù)集成交付工作。
圖1 基于云平臺的持續(xù)化集成架構(gòu)
圖2 服務(wù)節(jié)點(diǎn)配置清單及合理性分析運(yùn)行界面
前文已經(jīng)實(shí)現(xiàn)了基于云計(jì)算技術(shù)的集成方案架構(gòu)設(shè)計(jì)以及各模塊之間結(jié)構(gòu)的定義,下面描述N節(jié)點(diǎn)的配網(wǎng)監(jiān)控平臺持續(xù)集成環(huán)境的制定及集成流程。持續(xù)集成的核心控制服務(wù):核心后臺交互服務(wù)提供了一個(gè)嚴(yán)謹(jǐn)有序的交付流程體系,此套體系能夠適應(yīng)節(jié)點(diǎn)數(shù)從1~N的不同規(guī)模的監(jiān)控平臺集成任務(wù)。
圖3所示為環(huán)境硬件結(jié)構(gòu)示意圖。持續(xù)集成環(huán)境完全依賴于云計(jì)算平臺集群,包括測試虛擬機(jī)、編譯虛擬機(jī)、集成控制虛擬機(jī)(主要是交付后臺服務(wù)運(yùn)行環(huán)境);數(shù)據(jù)庫服務(wù)器以及監(jiān)控平臺服務(wù)端服務(wù)器集群主要為線上交付目標(biāo)環(huán)境;代碼版本管理器由于為核心機(jī)密,單獨(dú)服務(wù)器部署。
圖3 硬件架構(gòu)示意圖
圖4所示為加入了云計(jì)算技術(shù)的持續(xù)集成流程。主要包括以下步驟:
把云平臺技術(shù)與持續(xù)化集成技術(shù)整合成一套新的持續(xù)集成體系,能夠滿足當(dāng)前復(fù)雜的監(jiān)控平臺應(yīng)用系統(tǒng)的業(yè)務(wù)場景。根據(jù)持續(xù)化集成平臺的設(shè)計(jì)經(jīng)驗(yàn)以及新型配網(wǎng)主站的項(xiàng)目需求,需要在如下3個(gè)關(guān)鍵方面達(dá)到要求:
圖4 持續(xù)集成流程
隨著配網(wǎng)監(jiān)控平臺的基礎(chǔ)架構(gòu)越來越復(fù)雜,部署節(jié)點(diǎn)數(shù)量及硬件架構(gòu)越來越多樣化,有一套能夠適應(yīng)各種規(guī)模監(jiān)控平臺的持續(xù)化集成系統(tǒng)至關(guān)重要,固定目標(biāo)規(guī)模的持續(xù)化集成系統(tǒng)已經(jīng)不能滿足要求。
本設(shè)計(jì)在許繼集團(tuán)已經(jīng)單獨(dú)立項(xiàng)并在許繼集團(tuán)新型配網(wǎng)主站項(xiàng)目試點(diǎn)開發(fā)及應(yīng)用。其中,自動(dòng)化部署、自動(dòng)化測試、持續(xù)性編譯等關(guān)鍵模塊正在進(jìn)行基本的功能驗(yàn)證和評估,能夠滿足持續(xù)化集成的需求。
本文針對許繼集團(tuán)新一代監(jiān)控平臺開發(fā)了一套持續(xù)集成交付方案服務(wù),目前持續(xù)編譯及自動(dòng)部署已經(jīng)完成內(nèi)部測試,業(yè)務(wù)開發(fā)人員及運(yùn)行維護(hù)人員已經(jīng)做了初步的測試使用,效果良好。