[0001]
本发明涉及软件开发及软件测试技术领域,尤其涉及一种基于分布式故障注入的方法。
背景技术:[0002]
对于计算机系统而言,故障几乎无处不在。它们形态多样,表现方式各异,有的明显潜伏期短且易于发现,危害相对较小;有的却很隐蔽且潜伏期很长不容易发现,但一旦激活就会致使系统崩溃从而造成不必要的严重后果。
[0003]
故障注入通过人为地产生故障并将其引入目标系统中加速系统发生故障和失效的过程。通过对注入故障后系统的反应信息进行监测和分析,可实现测试和评价,获得对目标系统可靠性和容错特性的评测结果,是评测容错机制有效性的一种有效方法。除此之外,它还是可以用于评测目标系统硬件对故障的敏感程度、目标系统软件中的错误传播等等。因此它是一种有效的可靠性分析工具。
[0004]
目前故障注入主要依靠人工完成,由故障人员先上传故障注入包到指定的服务器,然后手工执行对应的命令执行故障注入操作,执行完命令操作后,手动观察服务状态判断注入是否成功同时通知相关人员进行观察和验证。但目前这种方法操作前准备工作繁琐,重复性工作较多,操作中存在选错机器,手动输入命令出错,执行故障注入后,无法对注入事件状态进行监控,对故障注入事件造成的影响缺乏系统化的监控工具。这种依靠手工执行方式无法针对大量应用和服务节点进行快速注入,扩展性差,同时因为人为执行可能出错的问题,精准性不高,容易造成线上问题,另外在使用中易用性太差,导致执行效率低下。
技术实现要素:[0005]
为解决上述问题,本发明提供一种基于分布式故障注入的方法,将整个流程系统化,平台化,界面化,并且新增故障注入事件监控,集成和打通了服务状态监控。
[0006]
本发明一种基于分布式故障注入的方法,包含:
[0007]
a.选取指定应用并选择对应的服务器进行演练,通过调用对应的故障发起接口发起故障注入的调用请求;
[0008]
b.发起故障注入调用后,检测服务器是否注册agent服务并且是否安装故障注入工具包;
[0009]
c.由server发起接口调用,进行相应的故障注入,然后通过监控和命令去验证故障注入是否生效;
[0010]
d.完成故障注入验证后,进行故障注入的销毁,并通过agent注册中心监控实时状态,确认故障注入销毁是否成功。
[0011]
本发明通过接口和页面操作将操作命令封装,易用性好,同时因为是全流程自动化操作可以快速部署和注入实施,执行效率高;且使用接口和页面操作,有效避免手工执行
误操作,可以实现精准注入,同时采用server-agent架构模式,可以进行用户无感知的升级,扩展性良好。采用流程化编排方式,对故障注入服务的状态和故障注入事件均有监控和操作抓手,可运维性好,能及时感知故障注入的实际情况,避免引起生产事故。
[0012]
进一步的,步骤a包括:
[0013]
选择需要故障注入的应用,根据映射关系找到对应的服务器,并选择对应的故障注入类型;
[0014]
根据选取的故障注入类型,调用其对应的故障发起接口从而发起故障注入的调用请求。
[0015]
进一步的,步骤b包括:
[0016]
当发起故障注入的调用后,检测相应的服务器是否注册agent服务并且是否安装故障注入工具包;
[0017]
如果没有安装则调用itsm调度编排工具,进行agent服务部署及故障注入工具包的安装;
[0018]
已经安装后,则启动agent,并将agent的信息:包括启动agent服务所在服务器的ip和端口以及agent服务的版本注册到服务发现及注册中心。
[0019]
所述步骤b服务端和agent架构,通过server-agent二层结构,对外可以统一提供的接口和界面服务,对内通过agent可以进行用户无感知的扩展和升级。
[0020]
进一步的,步骤c包括:
[0021]
当步骤b完成后,由server找到对应服务器的agent服务正式调用故障发起接口,通过对应服务器的agent服务,由agent服务根据调用的接口不同,调用故障注入工具包提供的对应的本地命令,实施对指定的服务器进行故障注入;
[0022]
待故障注入执行成功后,故障注入系统通过监控和相应的命令验证故障注入是否生效,并且根据设定的时间和次数限制,在达到相应条件后解除相应的故障注入。
[0023]
所述步骤c使用接口和页面操作,有效避免手工执行误操作,可以实现精准注入,同时采用server-agent架构模式,可以进行用户无感知的升级,扩展性良好。
[0024]
进一步的,步骤d包括:
[0025]
验证故障注入生效后,调用对应的故障事件销毁接口对故障进行故障注入的销毁,
[0026]
在发起故障注入销毁后,通过agent注册中心实时监控其销毁的实时状态,确认故障注入销毁成功后,通过观察对应的应用和服务器进行确认。
[0027]
所述步骤d新增了故障注入事件监控,能够根据监控结果对注入行为进行修正和及时关停,控制故障注入影响范围。
[0028]
本发明提出server和agent架构模式,通过二层架构,将具体实现和对外服务交互及调度编排进行隔离,扩展性良好;可以从多个方面发起故障注入,故障注入类型丰富,包括应用层面的,机器基础层面的,中间件层面的,模拟故障注入类型丰富,分类详细,更贴近线上真实场景;通过工程化,流程化方式进行故障注入,精准性高,同时可以大规模实施,执行效率高。
附图说明
[0029]
图1为本发明一种基于分布式故障注入的方法的流程图。
具体实施方式
[0030]
以下结合实施例的具体实施方式,对本发明的上述内容再作进一步的详细说明。但不应将此理解为本发明上述主题的范围仅限于以下的实例。在不脱离本发明上述技术思想情况下,根据本领域普通技术知识和惯用手段做出的各种替换或变更,均应包括在本发明的范围内。
[0031]
如图1所示本发明一种基于分布式故障注入的方法,包括:
[0032]
1.选择服务器进行演练
[0033]
选择需要进行故障注入的应用;
[0034]
根据映射关系找到对应的服务器并选择对应的故障注入类型;
[0035]
对选取的故障注入类型,调用对应的故障发起接口,发起故障注入请求。
[0036]
2.检测服务器是否注册agent服务
[0037]
发起故障注入调用请求后,检测相应的服务器是否注册agent服务并且是否安装故障注入工具包,如果没有安装则调用itsm调度编排工具,进行agent服务部署及故障注入工具包的安装;
[0038]
安装成功后,启动agent,并将agent的信息:包括启动agent服务所在服务器的ip和端口以及agent服务的版本注册到服务发现及注册中心。
[0039]
3.server发起接口调用进行故障注入
[0040]
agent启动后,server正式对故障发起接口发起调用,相应服务器上的agent服务根据调用的故障发起接口不同,调用故障注入工具包提供的对应的本地命令,实施对指定的服务器或者应用进行故障注入;
[0041]
待故障注入执行成功后,故障注入系统通过监控和相应的命令验证故障注入是否生效,并且根据设定的时间和次数限制,在达到相应条件后解除相应的故障注入。其中设定的时间和次数限制是在发起故障注入的请求时即步骤1中有相关的参数传入,里面有时间和次数相关的设定。
[0042]
4.进行故障注入的销毁
[0043]
验证故障注入生效后,调用对应的故障事件销毁接口对故障进行故障注入的销毁,
[0044]
在发起故障注入销毁后,通过agent注册中心实时监控其销毁的实时状态,确认故障注入销毁成功后,通过观察对应的应用和服务器进行确认。
[0045]
本发明提出server和agent架构模式,通过二层架构,将具体实现和对外服务交互及调度编排进行隔离,扩展性良好;可以从多个方面发起故障注入,故障注入类型丰富,包括应用层面的,机器基础层面的,中间件层面的,模拟故障注入类型丰富,分类详细,更贴近线上真实场景;通过工程化,流程化方式进行故障注入,精准性高,同时可以大规模实施,执行效率高。