• 头条云计算技术在配网监控系统持续集成方案中的运用
    2021-11-03 作者:王少鹏 杨迎春 等  |  来源:《电气技术》  |  点击率:
    分享到:
    导语许昌许继软件技术有限公司的研究人员王少鹏、杨迎春、丁博、贾亚楠、梁鹏威,在2020年第9期《电气技术》杂志上撰文,阐述了一种云计算服务技术在电力监控系统持续集成方案中的应用。结合云计算技术的强大功能性及冗余容错能力,为配电网应用系统的不同规模交付场景提供更加高效、安全的开发及运维支撑。

    目前配电网信息系统在技术组件以及技术实现框架方面已经日趋成熟。随着产品开发及实施任务量的增加和定制业务的需求增多,既有配电系统在每次工程应用前都需要经过一系列复杂的持续性交付过程,依赖密集且复杂的持续性编译、大量的系统测试、繁杂的部署任务,导致工程应用周期增长,测试任务量巨大,耗时耗材耗力。

    随着企业业务容量的拓展,服务器数量急剧增加的压力,出现了现有的Jenkins(持续集成工具,基于Java语言开发)整合Ansible(自动化运维工具,基于Python语言开发)的方式进行系统的整体集成。但由于配网监控平台的不断发展,供应企业要同时面对多个不同规模的交付场景,Jenkins整合Ansible的方式由于硬件资源的固定限制,已经较难适应不同规模的交付业务。

    基于OpenStack(云计算软件)的持续集成设计方式,在Jenkins整合Ansible提供集成服务的基础上,不但可以实现开发的可视化、智能化的全流程管控,而且可以依托于云平台的资源动态分配的特点,适应任何规模交付场景的一比一自动化测试交付任务,保障配电网监控平台安全有效的持续性交付。

    1 理论基础研究

    云平台技术常规应用有两个方向:①以数据存储为主要服务功能的存储型云平台;②以数据处理为主要服务的计算型平台。

    本项目依赖于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);

    }

    2 采用云计算技术的配网监控系统持续集成系统架构及模块

    持续化集成原有的方案只需要使用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 服务节点配置清单及合理性分析运行界面

    3 基于云计算技术的配网监控平台工作流程

    前文已经实现了基于云计算技术的集成方案架构设计以及各模块之间结构的定义,下面描述N节点的配网监控平台持续集成环境的制定及集成流程。持续集成的核心控制服务:核心后台交互服务提供了一个严谨有序的交付流程体系,此套体系能够适应节点数从1~N的不同规模的监控平台集成任务。

    图3所示为环境硬件结构示意图。持续集成环境完全依赖于云计算平台集群,包括测试虚拟机、编译虚拟机、集成控制虚拟机(主要是交付后台服务运行环境);数据库服务器以及监控平台服务端服务器集群主要为线上交付目标环境;代码版本管理器由于为核心机密,单独服务器部署。

    云计算技术在配网监控系统持续集成方案中的运用

    图3 硬件架构示意图

    图4所示为加入了云计算技术的持续集成流程。主要包括以下步骤:

    • 1)开发人员提交代码到SVN服务器,系统判定是否有要执行的交付目标配置,如果没有则通知测试人员使用图形化客户端按照交付目标构建配置。
    • 2)Jenkins定时检测到代码有更新,锁定更新代码工程(定时触发策略需要按照实际情况进行设定)。
    • 3)Jenkins进行自动化编译,并触发存储机制,存储最新的程序包并记录版本。
    • 4)Jenkins通过Ansible plugin通知Ansible执行测试剧本。
    • 5)持续集成后台服务通过回调函数监听到操作指令,调用接口在OpenStack自动开辟新的资源并创建新的虚拟机、虚拟服务(数据库等),执行分发、配置、启动等整套安装部署动作)。
    • 6)触发测试动作,进行自动化测试,记录测试报告并分发测试结果到通知邮箱。
    • 7)触发扫描程序对测试报告进行扫描,判定程序测试是否通过。
    • 8)如果测试扫描结果表示测试通过,则把测试版本作为正式版本发布到一套正式的环境中,另本次运行包以序号加时间为命名方式自动打包发送到SVN版本库统一保存,方便后续突发回滚操作使用。
    • 9)测试版本转换到正式环境后,突发情况发现最新的正式版本有重大bug未被检测到,需要紧急下线并回滚并从SVN调取本版本的上一历史版本进行版本恢复操作。
    • 10)销毁测试使用的OpenStack虚拟机,并释放资源。

    把云平台技术与持续化集成技术整合成一套新的持续集成体系,能够满足当前复杂的监控平台应用系统的业务场景。根据持续化集成平台的设计经验以及新型配网主站的项目需求,需要在如下3个关键方面达到要求:

    云计算技术在配网监控系统持续集成方案中的运用

    图4 持续集成流程

    • 1)B/S(browser/server,浏览器/服务器模式)架构非开源系统的持续化集成。
    • 2)C/S(client/server,客户机/服务器模式)架构的非开源系统的持续化集成。
    • 3)任意节点的分布式基础环境开源组件自动部署。

    4 结论

    随着配网监控平台的基础架构越来越复杂,部署节点数量及硬件架构越来越多样化,有一套能够适应各种规模监控平台的持续化集成系统至关重要,固定目标规模的持续化集成系统已经不能满足要求。

    本设计在许继集团已经单独立项并在许继集团新型配网主站项目试点开发及应用。其中,自动化部署、自动化测试、持续性编译等关键模块正在进行基本的功能验证和评估,能够满足持续化集成的需求。

    本文针对许继集团新一代监控平台开发了一套持续集成交付方案服务,目前持续编译及自动部署已经完成内部测试,业务开发人员及运行维护人员已经做了初步的测试使用,效果良好。