1.本发明涉及测试领域,特别涉及一种基于混沌工程的故障演练方法、系统、存储介质和电子设备。
背景技术:2.在测试领域的传统的故障演练中,目前以单机故障演练为主。但随着各种系统架构逐渐向微服务和分布式架构演化,使得单机故障演练的测试效果较差,已经无法满足系统测试的需要。
技术实现要素:3.鉴于上述问题,本发明提供一种克服上述问题或者至少部分地解决上述问题的一种基于混沌工程的故障演练方法、系统、存储介质和电子设备。
4.第一方面,一种基于混沌工程的故障演练方法,应用于一种基于混沌工程的故障演练系统,所述系统与预先部署有至少一个故障注入工具的被测试服务器通信连接,所述方法包括:
5.向第一设备群的各设备分别发送至少一份故障配置信息,其中,所述第一设备群包括至少一个所述设备,所述第一设备群的各所述设备均与所述被测试服务器连接;
6.将各所述故障配置信息发送至所述被测试服务器;
7.通过所述故障注入工具,向各所述设备分别安装与各自的所述故障配置信息对应的故障插件并启动所述故障插件;
8.运行所述被测试服务器中的至少一个被测试服务,以获得相应的测试结果信息,并将发送至所述被测试服务器的各所述故障配置信息和所述测试结果信息对应保存,从而形成测试数据,其中,所述被测试服务与所述故障插件相关联。
9.结合第一方面,在某些可选的实施方式中,所述方法还包括:
10.删除各所述故障配置信息,并删除各所述设备的各所述故障插件,以销毁本次所述故障演练。
11.结合上一个实施方式,在某些可选的实施方式中,所述删除各所述故障配置信息,并删除各所述设备的各所述故障插件,以销毁本次所述故障演练,包括:
12.删除各所述设备的各所述故障配置信息和/或删除发送至所述被测试服务器中的各所述故障配置信息,并删除各所述设备的各所述故障插件,以销毁本次所述故障演练。
13.结合第一方面,在某些可选的实施方式中,所述将各所述故障配置信息发送至所述被测试服务器,包括:
14.根据各所述故障配置信息,生成相应的故障配置信息列表;
15.将所述故障配置信息列表中记录的各所述故障配置信息发送至所述被测试服务器。
16.结合第一方面,在某些可选的实施方式中,所述运行所述被测试服务器中的至少
一个被测试服务,以获得相应的测试结果信息,并将发送至所述被测试服务器的各所述故障配置信息和所述测试结果信息对应保存,从而形成测试数据,包括:
17.运行所述被测试服务器中的至少一个被测试服务,以向所述第一设备群的各所述设备提供所述被测试服务,以便于所述被测试服务器获得其它设备发送的针对所述被测试服务的请求,并响应所述请求,从而获得相应的测试结果信息,并将发送至所述被测试服务器的各所述故障配置信息和所述测试结果信息对应保存,从而形成测试数据。
18.第二方面,一种基于混沌工程的故障演练系统,所述系统与预先部署有至少一个故障注入工具的被测试服务器通信连接;
19.所述系统包括:第一发送单元、第二发送单元、插件安装单元和测试单元;
20.所述第一发送单元,被配置为执行向第一设备群的各设备分别发送至少一份故障配置信息,其中,所述第一设备群包括至少一个所述设备,所述第一设备群的各所述设备均与所述被测试服务器连接;
21.所述第二发送单元,被配置为执行将各所述故障配置信息发送至所述被测试服务器;
22.所述插件安装单元,被配置为执行通过所述故障注入工具,向各所述设备分别安装与各自的所述故障配置信息对应的故障插件并启动所述故障插件;
23.所述测试单元,被配置为执行运行所述被测试服务器中的至少一个被测试服务,以获得相应的测试结果信息,并将发送至所述被测试服务器的各所述故障配置信息和所述测试结果信息对应保存,从而形成测试数据,其中,所述被测试服务与所述故障插件相关联。
24.结合第二方面,在某些可选的实施方式中,所述系统还包括:删除单元;
25.所述删除单元,被配置为执行删除各所述故障配置信息,并删除各所述设备的各所述故障插件,以销毁本次所述故障演练。
26.结合上一个实施方式,在某些可选的实施方式中,所述删除单元,包括:删除子单元;
27.所述删除子单元,被配置为执行删除各所述设备的各所述故障配置信息和/或删除发送至所述被测试服务器中的各所述故障配置信息,并删除各所述设备的各所述故障插件,以销毁本次所述故障演练。
28.第三方面,一种计算机可读存储介质,其上存储有程序,所述程序被处理器执行时实现上述任一项所述的基于混沌工程的故障演练方法。
29.第四方面,一种电子设备,所述电子设备包括至少一个处理器、以及与所述处理器连接的至少一个存储器、总线;其中,所述处理器、所述存储器通过所述总线完成相互间的通信;所述处理器用于调用所述存储器中的程序指令,以执行上述任一项所述的基于混沌工程的故障演练方法。
30.借由上述技术方案,本发明提供的一种基于混沌工程的故障演练方法、系统、存储介质和电子设备,可以通过向第一设备群的各设备分别发送至少一份故障配置信息,其中,所述第一设备群包括至少一个所述设备,所述第一设备群的各所述设备均与所述被测试服务器连接;将各所述故障配置信息发送至所述被测试服务器;通过所述故障注入工具,向各所述设备分别安装与各自的所述故障配置信息对应的故障插件并启动所述故障插件;运行
所述被测试服务器中的至少一个被测试服务,以获得相应的测试结果信息,并将发送至所述被测试服务器的各所述故障配置信息和所述测试结果信息对应保存,从而形成测试数据,其中,所述被测试服务与所述故障插件相关联。由此可以看出,本发明可以对服务器进行多机故障演练,并获得相应的测试数据,测试效果较好。
31.上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的具体实施方式。
附图说明
32.通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本发明的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:
33.图1示出了本发明提供的一种基于混沌工程的故障演练方法的流程图;
34.图2示出了本发明提供的一种基于混沌工程的故障演练系统的结构示意图;
35.图3示出了本发明提供的一种电子设备的结构示意图。
具体实施方式
36.经本发明人研究发现,在测试领域的传统的故障演练中,目前以单机故障演练为主。但随着各种系统架构逐渐向微服务和分布式架构演化,使得单机故障演练的测试效果较差,已经无法满足系统测试的需要。亟需有一套方法或系统,将故障插件安装到被测环境的多个机器上进行故障演练实验,以获得较为全面的测试数据,提高测试效果。
37.下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。
38.需要说明的是:本发明提供的基于混沌工程的故障演练方法、系统、存储介质和电子设备可用于金融领域或其他领域,例如,可用于金融领域中的故障演练应用场景。其他领域为除金融领域之外的任意领域,例如,网络安全领域。上述仅为示例,并不对本发明提供的基于混沌工程的故障演练方法、系统、存储介质和电子设备的应用领域进行限定。
39.如图1所示,本发明提供了一种基于混沌工程的故障演练方法,应用于一种基于混沌工程的故障演练系统,所述系统与预先部署有至少一个故障注入工具的被测试服务器通信连接,所述方法包括:s100、s200、s300和s400;
40.s100、向第一设备群的各设备分别发送至少一份故障配置信息,其中,所述第一设备群包括至少一个所述设备,所述第一设备群的各所述设备均与所述被测试服务器连接;
41.可选的,本发明所提供的基于混沌工程的故障演练系统,可以理解为基于混沌工程创建的试验平台。在该试验平台上可以执行本发明的完整技术方案,本发明对此不做限制。
42.可选的,本发明所说的故障注入工具可以是一种混沌工具,该工具可以是在维护各被测试服务器的测试环境信息时进行批量部署。例如,在维护各被测试服务器的ip、用户
名和密码等测试环境信息时,可以在相应的被测试服务器部署后续故障演练过程中用到的故障插件相应的故障注入工具,本发明对此不做限制。
43.可选的,本发明所说的故障配置信息可以包括:故障类型和故障参数。例如通过本发明提供的方法,可以对被测试服务器进行cpu满载故障演练。cpu满载故障演练可以理解为:使被测试服务器连接的至少一个设备的cpu满载运行,且该cpu满载运行相应的服务由所述被测试服务器提供,从而获得该被测试服务器的主机状况、以及该被测试服务器提供该服务的服务供给状况等,本发明对此不做限制。此时,故障类型可以理解为:cpu满载,故障参数可以理解为:100%,当然,若进行其它故障演练,相应的可以为其它故障类型和故障参数,本发明对此不做限制。
44.可选的,本发明对于向设备发送故障配置信息的过程不做限定,任何可行的方式均属于本发明的保护范围。
45.可选的,第一设备群的各设备也与执行本发明的执行主体通信连接,即与本发明提供的系统通信连接,本发明对此不做限制。
46.s200、将各所述故障配置信息发送至所述被测试服务器;
47.可选的,将各所述故障配置信息发送至所述被测试服务器,以便于后续在后续测试过程中,所述被测试服务器记录相应的测试数据所使用。即所述测试数据包括发送至所述被测试服务器的各所述故障配置信息和测试结果信息,本发明对此不做限制。
48.例如,在步骤100中向设备1发送了故障类型为cpu满载、故障参数为100%的故障配置信息。表明后续需要对相应被测试服务器进行设备1的cpu满载故障演练,被测试服务器需要记录至少一条测试数据,且该测试数据指向设备1的cpu满载故障演练,本发明对此不做限制。
49.可选的,本发明对于将各所述故障配置信息发送至所述被测试服务器的方式不做限制,任何可行的方式均属于本发明的保护范围。例如,结合图1所示的实施方式,在某些可选的实施方式中,所述s200,包括:步骤1.1和步骤1.2;
50.步骤1.1、根据各所述故障配置信息,生成相应的故障配置信息列表;
51.可选的,一个被测试服务器可以生成一份故障配置信息列表,该故障配置信息列表可以作为总的汇总表,记录该被测试服务器连接的各设备接收到的故障配置信息,以便于后续根据该故障配置信息列表向被测试服务器批量发送各设备的故障配置信息,本发明对此不做限制。
52.步骤1.2、将所述故障配置信息列表中记录的各所述故障配置信息发送至所述被测试服务器。
53.可选的,本发明对于将所述故障配置信息列表中记录的各所述故障配置信息发送至所述被测试服务器不做限定,任何可行的方式均属于本发明的保护范围。
54.s300、通过所述故障注入工具,向各所述设备分别安装与各自的所述故障配置信息对应的故障插件并启动所述故障插件;
55.可选的,本发明所说的故障注入工具可以理解为一种插件自动安装工具,通过故障注入工具可以将相应的故障插件安装到相应的设备,进而使得设备产生相应的故障。例如,故障注入工具可以向设备1安装cpu满载运行插件,使得设备1的cpu因该插件保持cpu满载运行的情况,本发明对此不做限制。
56.可选的,本发明所说的向各所述设备分别安装与各自的所述故障配置信息对应的故障插件并启动所述故障插件可以理解为:故障插件已经在相应设备中发挥作用,使得设备产生相应的故障,本发明对此不做限制。
57.可选的,对于一些安装就自动启动的故障插件,也可以在s300中通过所述故障注入工具,向各所述设备分别安装与各自的所述故障配置信息对应的故障插件,如此即可,本发明对此不做限制。
58.s400、运行所述被测试服务器中的至少一个被测试服务,以获得相应的测试结果信息,并将发送至所述被测试服务器的各所述故障配置信息和所述测试结果信息对应保存,从而形成测试数据,其中,所述被测试服务与所述故障插件相关联。
59.可选的,被测试服务器中可以预先设置多个被测试服务,多个被测试服务之间具有关联关系。即可以相互被调用,每个被测试服务均可以与至少一个设备相关联。即每一个被测试服务均至少被一个设备调用,当某个设备出现故障,则可能会影响其调用的服务,该服务进一步可能影响其他被调用的服务,从而导致这些服务所在服务器可能也会受影响。
60.因此,本发明可以运行被测试服务器中的至少一个被测试服务,若该被测试服务还与其他被测试服务有关联关系,则还可以同时运行其他被测试服务。其他被测试服务可以是在该被测试服务器中运行,也可以是在其他被测试服务器中运行,本发明对此不做限制。
61.可选的,所述被测试服务与所述故障插件相关联,可以理解为:故障插件在一定程度上会对被测试服务以及提供被测试服务的软硬件产生一定的影响,本发明对此不做限制。
62.可选的,在设备中运行了故障插件的前提下,运行被测试服务,可以反映出一个或者多个设备发生故障对被测试服务、被测试服务器以及其它软件和硬件的影响,一定程度上可以反映出一个或者多个设备发生故障对整个网路和系统的影响,本发明对此不做限制。
63.可选的,如前所述,测试数据可以记录各设备的故障配置信息,以及导致相应的测试结果信息。测试结果信息可以包括:被测试服务的运行情况、被测试服务器的软硬件运行情况,以及其它软件和硬件的运行情况,本发明对此不做限制。
64.可选的,本发明对于对被测试服务器进行测试的具体过程不做具体限制,任何可行的方式均属于本发明的保护范围。例如,结合图1所示的实施方式,在某些可选的实施方式中,所述s400,包括:
65.运行所述被测试服务器中的至少一个被测试服务,以向所述第一设备群的各所述设备提供所述被测试服务,以便于所述被测试服务器获得其它设备发送的针对所述被测试服务的请求,并响应所述请求,从而获得相应的测试结果信息,并将发送至所述被测试服务器的各所述故障配置信息和所述测试结果信息对应保存,从而形成测试数据。
66.可选的,在被测试服务器连接的设备发生故障的情况下,被测试服服务器和被测试服务均可能受影响。此时,运行被测试服务,以便于所述被测试服务器获得针对所述被测试服务的请求并响应所述请求,在此过程中,执行本发明的设备可以监控并获取被测试服务的运行情况、被测试服务器的软硬件运行情况,以及其它软件和硬件的运行情况,本发明对此不做限制。
67.可选的,本文所说的其它设备可以是在本次故障演练过程中、未被安装故障插件的设备,该设备可以是与被测试服务器连接的设备,也可以是与其它服务器连接的设备,本发明对此不做限制。
68.可选的,本发明所说的请求还可以是在本次故障演练过程中、已被安装故障插件的设备发送的,本发明对此不做限制。
69.结合图1所示的实施方式,在某些可选的实施方式中,所述方法还包括:
70.删除各所述故障配置信息,并删除各所述设备的各所述故障插件,以销毁本次所述故障演练。
71.可选的,每次故障演练过程可以在多个设备安装了同一故障插件的情况下进行,也可以在多个设备安装了多个不同故障插件的情况下运行,本发明对此不做限制。
72.可选的,在获得每次故障演练的测试结果后,可以删除相应的故障配置信息和故障插件,以销毁本次故障演练过程,以便于执行下次故障演练,本发明对此不做限制。
73.可选的,还可以备份本次故障演练的测试数据后,将执行本发明的设备中的、本次故障演练的测试数据删除,本发明对此不做限制。
74.可选的,因故障配置信息在设备中存在,也在被测试服务器中存在,所以可以删除设备中的故障配置信息,也可以删除在被测试服务器中的故障配置信息,还可以将设备和被测试服务器中的故障配置信息均删除,本发明对此不做限制。例如,结合上一个实施方式,在某些可选的实施方式中,所述删除各所述故障配置信息,并删除各所述设备的各所述故障插件,以销毁本次所述故障演练,包括:
75.删除各所述设备的各所述故障配置信息和/或删除发送至所述被测试服务器中的各所述故障配置信息,并删除各所述设备的各所述故障插件,以销毁本次所述故障演练。
76.如图2所示,本发明提供了一种基于混沌工程的故障演练系统,所述系统与预先部署有至少一个故障注入工具的被测试服务器通信连接;
77.所述系统包括:第一发送单元100、第二发送单元200、插件安装单元300和测试单元400;
78.所述第一发送单元100,被配置为执行向第一设备群的各设备分别发送至少一份故障配置信息,其中,所述第一设备群包括至少一个所述设备,所述第一设备群的各所述设备均与所述被测试服务器连接;
79.所述第二发送单元200,被配置为执行将各所述故障配置信息发送至所述被测试服务器;
80.所述插件安装单元300,被配置为执行通过所述故障注入工具,向各所述设备分别安装与各自的所述故障配置信息对应的故障插件并启动所述故障插件;
81.所述测试单元400,被配置为执行运行所述被测试服务器中的至少一个被测试服务,以获得相应的测试结果信息,并将发送至所述被测试服务器的各所述故障配置信息和所述测试结果信息对应保存,从而形成测试数据,其中,所述被测试服务与所述故障插件相关联。
82.结合图2所示的实施方式,在某些可选的实施方式中,所述系统还包括:删除单元;
83.所述删除单元,被配置为执行删除各所述故障配置信息,并删除各所述设备的各所述故障插件,以销毁本次所述故障演练。
84.结合上一个实施方式,在某些可选的实施方式中,所述删除单元,包括:删除子单元;
85.所述删除子单元,被配置为执行删除各所述设备的各所述故障配置信息和/或删除发送至所述被测试服务器中的各所述故障配置信息,并删除各所述设备的各所述故障插件,以销毁本次所述故障演练。
86.结合图2所示的实施方式,在某些可选的实施方式中,所述第二发送单元200,包括:列表生成子单元和第二发送子单元;
87.所述列表生成子单元,被配置为执行根据各所述故障配置信息,生成相应的故障配置信息列表;
88.所述第二发送子单元,被配置为执行将所述故障配置信息列表中记录的各所述故障配置信息发送至所述被测试服务器。
89.结合图2所示的实施方式,在某些可选的实施方式中,所述测试单元400,包括:测试子单元;
90.所述测试子单元,被配置为执行运行所述被测试服务器中的至少一个被测试服务,以向所述第一设备群的各设备提供所述被测试服务,以便于所述被测试服务器获得其它设备发送的、针对所述被测试服务的请求,并响应所述请求,从而获得相应的测试结果信息,并将发送至所述被测试服务器的各所述故障配置信息和所述测试结果信息对应保存,从而形成测试数据。
91.本发明提供了一种计算机可读存储介质,其上存储有程序,所述程序被处理器执行时实现上述任一项所述的基于混沌工程的故障演练方法。
92.如图3所示,本发明提供了一种电子设备70,所述电子设备70包括至少一个处理器701、以及与所述处理器701连接的至少一个存储器702、总线703;其中,所述处理器701、所述存储器702通过所述总线703完成相互间的通信;所述处理器701用于调用所述存储器702中的程序指令,以执行上述任一项所述的一种基于混沌工程的故障演练方法。
93.在本技术中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个
……”
限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
94.本说明书中的各个实施例均采用相关的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
95.对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一
致的最宽的范围。
96.以上所述仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所作的任何修改、等同替换、改进等,均包含在本发明的保护范围内。