2.陕西瑞易信息科技有限公司 陕西西安 710075)
摘要:随着信息技术的高速发展,信息基础设施和应用系统规模的增长,对信息资源安装、部署、配置和管理方式提出更高的要求和挑战,信息服务的交付模式也发生巨大的变化,通过基础设施扩展提供高效、便捷的基础服务支撑,向用户提供更高价值的业务服务。
关键词:信息系统;应急处置;应用;实践
引言
传统的人工运维方式已经难以满足业务服务的发展需要,需要从流程化、标准化、自动化去构建运维体系。随着DevOps的兴起,运维、研发、质量控制需要从更高的视角审视现有的工作模式,打破运维、研发之间的壁垒,进行相互渗透、融合。
一、背景介绍
目前国网西北分部运维工作涉及到多个业务系统、应用中间件、数据库与服务器,应用部署、系统检修、故障处理、补丁升级等常规运维工作,会涉及多个作业对象,各类作业过程,众多操作步骤,工作量大,工作时间紧迫,是目前运维工作面临的主要问题。 为更加高效完成运维工作,提高系统安全、稳定运行,迫切需要引入流程化、标准化、自动化的运维方法和工具,实现自动化运维实践和应用。
二、总体架构
(一)配置资源数据库(CMDB)
维护各种硬件资源(如:主机、网络设备等)、软件资源(如:操作系统、中间件、数据库、应用系统等)详细配置数据和资源之间关联关系。该数据库直接采用现有的配置资源数据库。
(二)处理脚本库
针对各种硬件资源(如:主机、网络设备等)、软件资源(如:操作系统、中间件、数据库、应用系统等)等发生的各种典型故障编写相应的故障处理脚本,建立故障处理脚本库,实现故障处理脚本的统一管理,维护各软、硬件故障、故障处理脚本文件、脚本执行方式、执行规则等信息。
(三)脚本编辑管理工具
提供在线脚本编辑工具,用于运维人员快速编辑维护各类脚本。脚本按照私有、公共分类,按照运维对象进行划分,对脚本版本进行记录。
(四)故障处理脚本执行引擎
针对不同操作系统、不同类型故障异常,调度脚本自动执行。
Window操作系统,通过与目标主机上安装的代理程序通信,发送自动脚本执行指令,由代理程序在目标主机上完成脚本的自动执行。
Linux操作系统,通过SSH至目标主机,分发脚本文件至目标主机,自动执行脚本,并将执行结果反馈至脚本执行状态监控窗口。
为提高工作效率,引擎可单次设定多个目标主机,并发执行脚本,实现批量作业,加快应急处理响应速度。
(五)代理脚本执行程序
依照西北分部的实际情况,为易于实现,便于维护,对基于Windows操作系统的主机,开发代理脚本执行程序,安装部署在主机上,用于接收管理控制台发出的脚本指令,自动执行脚本。
(六)故障处理记录库
故障异常处理一般涉及主机、服务启停等操作,对自动执行脚本进行操作授权、作业内容、结果跟踪记录。使自动处理得以在统一、安全、高效的作业过程下执行。
(七)应急处置流程工具
故障异常发现后,启动应急处置流程,对应急处置的发起、确认、授权、执行进行流程记录和跟踪。确保应急处置作业的自动化执行在经过确认、授权、检查的安全环境和受控过程下完成。
三、技术实现
应急处置工具涉及配置资源数据库(CMDB)、处置脚本库、脚本执行引擎、图形化界面、权限管理等核心功能,后端采用REST API调用脚本执行模块和监听执行结果模块。
核心为自动处置脚本及执行引擎,实现各类故障异常的处置执行脚本是应急处置的基础支撑技术手段。目前,脚本实现技术主要有Puppet、SaltStack、Ansible等。
(一)主要相同点
均为python开发,可以部署到不同的系统环境中和具有良好的二次开发特性。
执行命令,Ansible和SaltStack都支持Ad-hoc操作模式,也支持将命令写入yaml格式文件中再批量执行。
处理返回结果方面,Ansible和SaltStack的返回结果格式都是JSON格式,易于理解和内容解析。
(二)主要差异点
响应速度,SaltStack的master和minion主机是通过ZeroMQ传输数据,而Ansible是通过标准SSH进行数据传输,SaltStack的响应速度要比Ansible快很多。
安全,SaltStack使用ZeroMQ进行数据传输,ZeroMQ本身数据传输不支持加密,SaltStack可以通过使用AES数据加密方法来对数据进行加密传输,但是SaltStack的minion主机以守护进程的方式运行在远端暴露了很多容易被攻击的点。Ansible使用标准SSH连接传输数据,不需要在远程主机上启动守护进程,并且标准SSH数据传输本身就是加密传输,这样远程主机不容易被攻击。
维护性,SaltStack需要在Master和Minion主机启动守护进程,自身需要检测守护进程的运行状态,增加运维成本。Ansible和远端主机之间的通信是通过标准SSH进行,远程主机上只需要运行SSH进程就可以进行运维操作,SSH是机房主机中一般都安装和启动的进程,所以在Ansible进行运维的时候只需要关注Ansible主机的运行状态。Ansible对机房运维不会增加过多的运维成本。
脚本语法,Ansible的Playbook语法要比SaltStack的State语法具有更好的可读性。
结合目前运维环境和工作实际,选择Ansible作为应急处置工具的脚本开发技术路线。
四、实践应用
应急处置工具在实际应用中作用主要体现为:
故障处置经验的固化复用。
对于标准、常发故障异常,系统管理员积累了大量应对处置经验。通过将系统管理员的实际处置过程记录下来,形成文档,转换为作业脚本。将运维作业经验显性化,固化经验,并得以重复使用和知识传递,降低手工操作失误。
显著提高应急处置速度对突发故障异常,特别是运行值班人员发现故障异常,需要通知系统管理员进行处理,尤其是系统管理员未在现场的情况下,需要系统管理员到达现场,等待的时间远大于实际处理时间,造成故障异常处置的响应较慢。现在执行预先设置的预案脚本,将原先的处理速度大大加快。
运维重点转换为故障分析和预判通过减轻运维手工作业工作量,减少处理时间,使得运维人员的精力可以从繁重的重复操作中解放出来,而将重点转化至对常见运行故障产生的原因分析和预防判断,并将这些新的运维经验借助脚本库再次进行固化,为以后的应急处置提供更为全面的工具手段。
通过应急处置工具,实现标准故障异常处置的作业过程自动化,快速响应,完成故障应急处置工作,体现了其应用价值,为西北分部在运维自动化领域的实际应用进行了有益的探索和积累。
结语
文章中,结合运维工作现状,贴切实际,从对典型的应用系统、中间件、数据库、主机设备等的突发异常或故障处理入手,采用自动化脚本技术,实现故障异常的应急处置工具。
参考文献
[1]陈小庆,许国平,丁利等.商业银行信息系统突发事件应急处置能力建设研究与实践[J].金融科技时代,2015(3):100-103.
[2]刘伟,葛世伦,王念新等.基于数据复杂性的信息系统复杂度测量[J].系统工程理论与实践,2013,33(12):3198-3208.
[3]马睿,刘文奇.基于集值信息系统的多粒度粗糙集[J].系统工程与电子技术,2014(5):920-925.
论文作者:刘颖1,张瑜1,蒲剑2,巩睿2
论文发表刊物:《电力设备》2017年第24期
论文发表时间:2017/12/29
标签:脚本论文; 主机论文; 作业论文; 故障论文; 异常论文; 故障处理论文; 工作论文; 《电力设备》2017年第24期论文;