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