一种混沌测试工具及分布式系统的混沌测试方法与流程

1.本技术涉及分布式系统技术领域,例如涉及一种混沌测试工具及分布式系统的混沌测试方法。
背景技术:
2.混沌测试是一种对分布式系统的稳定性进行测试的测试方法。该测试方法通过对被测系统主动注入故障并观测故障造成的影响从而了解被测系统抵御故障的能力。相关技术公开了一种混沌测试方法、系统、电子设备及存储介质,应用于金融科技领域或其它领域,包括:根据待测试应用匹配第一数量的测试场景;根据待测试应用匹配第二数量的故障事件;将第一数量的测试场景与第二数量的故障事件进行组合,得到第三数量的测试用例,用于进行混沌测试。
3.在实现本公开实施例的过程中,发现相关技术中至少存在如下问题:
4.目前,行业内缺少一种标准化的通过混沌测试对分布式系统的稳定性进行测试的方法。
5.需要说明的是,在上述背景技术部分公开的信息仅用于加强对本技术的背景的理解,因此可以包括不构成对本领域普通技术人员已知的现有技术的信息。
技术实现要素:
6.为了对披露的实施例的一些方面有基本的理解,下面给出了简单的概括。所述概括不是泛泛评述,也不是要确定关键/重要组成元素或描绘这些实施例的保护范围,而是作为后面的详细说明的序言。
7.本公开实施例提供了一种混沌测试工具、分布式系统的混沌测试方法、装置、宿主机及存储介质,通过提供一系列标准化的故障场景和操作流程,以应用于各种分布式系统的稳定性测试。
8.在一些实施例中,所述混沌测试工具,包括:
9.程序入口模块,用于获取用户的测试指令并调用其他模块执行相应的操作;
10.混沌注入实验基础模块,与所述程序入口模块通信连接,用于根据所述测试指令形成多种混沌测试组合的故障配置信息;
11.混沌测试模块,与所述混沌注入实验基础模块通信连接,用于根据所述故障配置信息,生成包含一个或多个标准化故障场景对应的故障场景信息,并将所述故障场景信息发送至分布式系统所在的集群,以对所述分布式系统进行故障注入。
12.可选地,所述混沌测试工具,还包括:
13.单元测试模块,与所述程序入口模块通信连接,用于根据测试指令对混沌测试模块进行单元测试。
14.可选地,所述混沌测试工具,还包括:
15.环境清理模块,所述程序入口模块通信连接,用于根据测试指令在混沌测试结束
后清理分布式系统的系统环境,以移除注入的故障场景信息。
16.可选地,所述标准化故障场景,包括:
17.cpu负载;
18.存储负载,包括硬盘空间填充、内存空间填充和读写负载;
19.网络扰动,包括网络抖动、网络丢包和包损坏。
20.在一些实施例中,所述分布式系统的混沌测试方法,应用于本技术所述混沌测试工具,包括:
21.通过安装有所述混沌测试工具的宿主机,获取故障配置信息;
22.根据所述故障配置信息,生成包含一个或多个标准化故障场景对应的故障场景信息;
23.通过所述宿主机操作分布式系统,并将所述故障场景信息发送至分布式系统所在的集群,以对所述分布式系统进行故障注入。
24.可选地,在获取故障配置信息之前,还包括:
25.配置宿主机并安装所述混沌测试工具;
26.宿主机根据用户提供的ip地址,通过ssh协议连接和控制所述分布式系统中的被测终端。
27.可选地,将所述故障场景信息发送至分布式系统所在的集群,以对所述分布式系统进行故障注入,包括:
28.通过ssh协议将所述故障场景信息发送至分布式系统所在的集群;
29.在混沌测试结束后,移除注入的故障场景信息,并恢复被测终端的初始状态。
30.在一些实施例中,所述分布式系统的混沌测试装置,安装有本技术所述混沌测试工具,包括:
31.故障配置模块,被配置为通过安装有所述混沌测试工具的宿主机,获取故障配置信息;
32.故障场景模块,被配置为根据所述故障配置信息,生成包含一个或多个标准化故障场景对应的故障场景信息;
33.故障注入模块,被配置为通过所述宿主机操作分布式系统,并将所述故障场景信息发送至分布式系统所在的集群,以对所述分布式系统进行故障注入。
34.在一些实施例中,所述宿主机,包括处理器和存储有程序指令的存储器,所述处理器被配置为在运行所述程序指令时,执行如本技术所述的分布式系统的混沌测试方法。
35.在一些实施例中,所述存储介质,存储有程序指令,所述程序指令在运行时,执行如本技术所述的分布式系统的混沌测试方法。
36.本公开实施例提供的一种混沌测试工具、分布式系统的混沌测试方法、装置、宿主机及存储介质,可以实现以下技术效果:
37.本技术根据用户定义的故障配置信息,生成包含一个或多个标准化故障场景对应的故障场景信息,并将故障场景信息发送至分布式系统所在的集群,以对分布式系统进行故障注入,实现了标准化的混沌测试,能够应用于各种分布式数据库系统的稳定性测试。
38.以上的总体描述和下文中的描述仅是示例性和解释性的,不用于限制本技术。
附图说明
39.一个或多个实施例通过与之对应的附图进行示例性说明,这些示例性说明和附图并不构成对实施例的限定,附图中具有相同参考数字标号的元件示为类似的元件,附图不构成比例限制,并且其中:
40.图1是本公开实施例提供的一个混沌测试工具的系统环境示意图;
41.图2是本公开实施例的一个应用示意图;
42.图3是本公开实施例提供的一个分布式系统的混沌测试方法的示意图;
43.图4是本公开实施例的另一个分布式系统的混沌测试方法的示意图;
44.图5是本公开实施例的另一个应用示意图;
45.图6是本公开实施例提供的一个分布式系统的混沌测试装置的示意图;
46.图7是本公开实施例提供的一个宿主机的结构示意图。
具体实施方式
47.为了能够更加详尽地了解本公开实施例的特点与技术内容,下面结合附图对本公开实施例的实现进行详细阐述,所附附图仅供参考说明之用,并非用来限定本公开实施例。在以下的技术描述中,为方便解释起见,通过多个细节以提供对所披露实施例的充分理解。然而,在没有这些细节的情况下,一个或多个实施例仍然可以实施。在其它情况下,为简化附图,熟知的结构和装置可以简化展示。
48.本公开实施例的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本公开实施例的实施例。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含。
49.除非另有说明,术语“多个”表示两个或两个以上。
50.本公开实施例中,字符“/”表示前后对象是一种“或”的关系。例如,a/b表示:a或b。
51.术语“和/或”是一种描述对象的关联关系,表示可以存在三种关系。例如,a和/或b,表示:a或b,或,a和b这三种关系。
52.术语“对应”可以指的是一种关联关系或绑定关系,a与b相对应指的是a与b之间是一种关联关系或绑定关系。
53.首先,对本技术涉及的技术术语进行解释:
54.分布式(数据库)系统:指由多台分散的计算机,经互连网络的联接而形成的系统,系统的处理和控制功能分布在各个计算机上。
55.混沌测试:指一种通过故意使被测试的系统发生故障,并观察系统在故障条件下的反应以评估其稳定性的测试方法。
56.故障注入:指在混沌测试过程中对被测系统进行一定的操作从而故意使被测机器发生一定的故障。所注入的故障的类型、对象、范围、影响一般是可控的。
57.ip(internet protocol):是一种网络层的网络协议。该协议为每个网络上的计算机分配一个在该网络上唯一的地址,称为ip地址,用户可以通过ip地址识别网络上的计算机。
58.ssh(secure shell):中文名称译为“安全外壳协议”,是一种通过加密和认证机制
实现安全的访问和文件传输等业务的应用层网络协议。用户可以使用该协议通过网络远程控制计算机。
59.集群:指一组通过网络进行连接并进行信息交换以实现某种分布式软件的功能的计算机。
60.结合图1所示,本公开实施例提供一种混沌测试工具,包括程序入口模块、混沌注入实验基础模块和混沌测试模块,其中,程序入口模块,用于获取用户的测试指令并调用其他模块执行相应的操作。混沌注入实验基础模块,与所述程序入口模块通信连接,用于根据所述测试指令形成多种混沌测试组合的故障配置信息。混沌测试模块,与所述混沌注入实验基础模块通信连接,用于根据所述故障配置信息,生成包含一个或多个标准化故障场景对应的故障场景信息,并将所述故障场景信息发送至分布式系统所在的集群,以对所述分布式系统进行故障注入。
61.可选地,所述混沌测试工具,还包括单元测试模块和环境清理模块,其中,单元测试模块,与所述程序入口模块通信连接,用于根据测试指令对混沌测试模块进行单元测试。环境清理模块,所述程序入口模块通信连接,用于根据测试指令在混沌测试结束后清理分布式系统的系统环境,以移除注入的故障场景信息。
62.可选地,本技术的标准化故障场景,包括cpu负载、存储负载和网络扰动,其中,存储负载包括硬盘空间填充、内存空间填充和读写负载。网络扰动包括网络抖动、网络丢包和包损坏。
63.在本技术的实施例中,结合图2所示,本技术的混沌测试工具包括程序入口、混沌注入实验基础模块、单元测试模块、环境清理模块和混沌测试模块。其中,程序入口模块接受用户定义的变量并调用其他模块执行相应的操作。混沌注入实验基础模块可通过选择不同的标签执行不同组合的混沌测试实验。混沌测试模块预先设置了多种故障场景,包括cpu负载、内存填充、磁盘填充、io负载、网络延迟、网络丢包、网络恶化(包损坏)等故障场景,可以被调用并作用于被测数据库所在的集群。环境清理模块用于实验后清理被测数据库的环境,移除注入的故障。单元测试模块用于各个混沌测试模块的单元测试。
64.采用本公开实施例提供的混沌测试工具,根据用户定义的故障配置信息,生成包含一个或多个标准化故障场景对应的故障场景信息,并将故障场景信息发送至分布式系统所在的集群,以对分布式系统进行故障注入,实现了标准化的混沌测试,能够应用于各种分布式数据库系统的稳定性测试。
65.结合图3所示,本公开实施例提供一种分布式系统的混沌测试方法,应用于本技术所述混沌测试工具,包括:
66.步骤301:通过安装有所述混沌测试工具的宿主机,获取故障配置信息。
67.步骤302:根据所述故障配置信息,生成包含一个或多个标准化故障场景对应的故障场景信息。
68.步骤303:通过所述宿主机操作分布式系统,并将所述故障场景信息发送至分布式系统所在的集群,以对所述分布式系统进行故障注入。
69.采用本公开实施例提供的分布式系统的混沌测试方法,通过预先设定的多种标准化故障场景,便于进行标准化的混沌测试,提高了混沌测试的效率。
70.结合图4所示,本公开实施例提供另一种分布式系统的混沌测试方法,应用于本申
请所述混沌测试工具,包括:
71.步骤401:配置宿主机并安装所述混沌测试工具。
72.步骤402:宿主机根据用户提供的ip地址,通过ssh协议连接和控制所述分布式系统中的被测终端。
73.步骤403:通过安装有所述混沌测试工具的宿主机,获取故障配置信息。
74.步骤404:根据所述故障配置信息,生成包含一个或多个标准化故障场景对应的故障场景信息。
75.步骤405:通过所述宿主机操作分布式系统,通过ssh协议将所述故障场景信息发送至分布式系统所在的集群。
76.步骤406:在混沌测试结束后,移除注入的故障场景信息,并恢复被测终端的初始状态。
77.这样,本技术的分布式系统的混沌测试方法,能通过预先设定的程序自动完成混沌测试的整个操作流程并在测试结束后清理环境,提高了混沌测试的可靠性。
78.在本技术的实施例中,结合图5所示,在使用本技术的混沌测试工具对被测数据库集群进行混沌测试时,首先需要另外设置一台宿主机用于安装本技术的混沌测试工具,而不需要再对被测终端所在的集群的机器安装其他软件。宿主机通过用户提供的被测终端的ip地址以ssh协议连接和操作被测数据库集群中的被测终端。在连接成功后,本技术的混沌测试工具开始对被测数据库集群进行故障注入。
79.完成部署后,由本技术的混沌测试工具生成一组故障配置信息(默认具有一组故障测试用例,具体故障测试用例见下表1)。待宿主机通过ssh连接被测终端成功后,本技术的混沌测试工具通过ssh操作被测终端并注入预先生成的故障配置信息以开始混沌测试,用户可在测试过程中观察被测集群的反应并评估其稳定性。在测试结束后,混沌测试工具的环境清理模块将移除注入的故障场景信息,恢复被测终端的初始状态。
80.其中,本技术提供一种标准化故障场景的测试用例,如下表1所示。该测试用例的故障注入能由混沌测试工具自动完成,可用于对数据库系统进行标准化的稳定性测试。
81.表1
[0082][0083]
这样,采用本技术的分布式系统的混沌测试方法,通过测试参数和故障类型组合配置进行混沌测试,便于人员自定义测试用例,提高了混沌测试的多样性和灵活性。
[0084]
结合图6所示,本公开实施例提供一种分布式系统的混沌测试装置,安装有如本技术所述混沌测试工具,包括:
[0085]
故障配置模块601,被配置为通过安装有所述混沌测试工具的宿主机,获取故障配置信息;
[0086]
故障场景模块602,被配置为根据所述故障配置信息,生成包含一个或多个标准化故障场景对应的故障场景信息;
[0087]
故障注入模块603,被配置为通过所述宿主机操作分布式系统,并将所述故障场景信息发送至分布式系统所在的集群,以对所述分布式系统进行故障注入。
[0088]
采用本公开实施例提供的分布式系统的混沌测试装置,根据用户定义的故障配置信息,生成包含一个或多个标准化故障场景对应的故障场景信息,并将故障场景信息发送至分布式系统所在的集群,以对分布式系统进行故障注入,实现了标准化的混沌测试,能够应用于各种分布式数据库系统的稳定性测试。
[0089]
结合图7所示,本公开实施例提供一种宿主机,包括处理器(processor)700和存储器(memory)701。可选地,该装置还可以包括通信接口(communication interface)702和总线703。其中,处理器700、通信接口702、存储器701可以通过总线703完成相互间的通信。通信接口702可以用于信息传输。处理器700可以调用存储器701中的逻辑指令,以执行上述实施例的分布式系统的混沌测试方法。
[0090]
此外,上述的存储器701中的逻辑指令可以通过软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。
[0091]
存储器701作为一种计算机可读存储介质,可用于存储软件程序、计算机可执行程序,如本公开实施例中的方法对应的程序指令/模块。处理器700通过运行存储在存储器701中的程序指令/模块,从而执行功能应用以及数据处理,即实现上述实施例中分布式系统的混沌测试方法。
[0092]
存储器701可包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序;存储数据区可存储根据终端设备的使用所创建的数据等。此外,存储器701可以包括高速随机存取存储器,还可以包括非易失性存储器。
[0093]
本公开实施例提供了一种计算机可读存储介质,存储有计算机可执行指令,所述计算机可执行指令设置为执行上述分布式系统的混沌测试方法。
[0094]
上述的计算机可读存储介质可以是暂态计算机可读存储介质,也可以是非暂态计算机可读存储介质。
[0095]
本公开实施例的技术方案可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括一个或多个指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本公开实施例所述方法的全部或部分步骤。而前述的存储介质可以是非暂态存储介质,包括:u盘、移动硬盘、只读存储器(rom,read-only memory)、随机存取存储器(ram,random access memory)、磁碟或者光盘等多种可以存储程序代码的介质,也可以是暂态存储介质。
[0096]
以上描述和附图充分地示出了本公开的实施例,以使本领域的技术人员能够实践它们。其他实施例可以包括结构的、逻辑的、电气的、过程的以及其他的改变。实施例仅代表可能的变化。除非明确要求,否则单独的部件和功能是可选的,并且操作的顺序可以变化。一些实施例的部分和特征可以被包括在或替换其他实施例的部分和特征。而且,本技术中使用的用词仅用于描述实施例并且不用于限制权利要求。如在实施例以及权利要求的描述中使用的,除非上下文清楚地表明,否则单数形式的“一个”(a)、“一个”(an)和“所述”(the)旨在同样包括复数形式。类似地,如在本技术中所使用的术语“和/或”是指包含一个或一个以上相关联的列出的任何以及所有可能的组合。另外,当用于本技术中时,术语“包括”(comprise)及其变型“包括”(comprises)和/或包括(comprising)等指陈述的特征、整体、步骤、操作、元素,和/或组件的存在,但不排除一个或一个以上其它特征、整体、步骤、操作、元素、组件和/或这些的分组的存在或添加。在没有更多限制的情况下,由语句“包括一个
…”
限定的要素,并不排除在包括所述要素的过程、方法或者设备中还存在另外的相同要素。本文中,每个实施例重点说明的可以是与其他实施例的不同之处,各个实施例之间相同相似部分可以互相参见。对于实施例公开的方法、产品等而言,如果其与实施例公开的方法部分相对应,那么相关之处可以参见方法部分的描述。
[0097]
本领域技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,可以取决于技术方案的特定应用和设计约束条件。所述技术人员可以对每个特定的应用来使用不同方法以实现所描述的功能,但是这种实现不应认为超出本公开实施例的范围。所述技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
[0098]
本文所披露的实施例中,所揭露的方法、产品(包括但不限于装置、设备等),可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,可以仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另外,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例。另外,在本公开实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
[0099]
附图中的流程图和框图显示了根据本公开实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这可以依所涉及的功能而定。在附图中的流程图和框图所对应的描述中,不同的方框所对应的操作或步骤也可以以不同于描述中所披露的顺序发生,有时不同的操作或步骤之间不存在特定的顺序。例如,两个连续的操作或步骤实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这可以依所涉及的功能而定。框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
技术特征:
1.一种混沌测试工具,其特征在于,包括:程序入口模块,用于获取用户的测试指令并调用其他模块执行相应的操作;混沌注入实验基础模块,与所述程序入口模块通信连接,用于根据所述测试指令形成多种混沌测试组合的故障配置信息;混沌测试模块,与所述混沌注入实验基础模块通信连接,用于根据所述故障配置信息,生成包含一个或多个标准化故障场景对应的故障场景信息,并将所述故障场景信息发送至分布式系统所在的集群,以对所述分布式系统进行故障注入。2.根据权利要求1所述的混沌测试工具,其特征在于,还包括:单元测试模块,与所述程序入口模块通信连接,用于根据测试指令对混沌测试模块进行单元测试。3.根据权利要求1所述的混沌测试工具,其特征在于,还包括:环境清理模块,所述程序入口模块通信连接,用于根据测试指令在混沌测试结束后清理分布式系统的系统环境,以移除注入的故障场景信息。4.根据权利要求1所述的混沌测试工具,其特征在于,所述标准化故障场景,包括:cpu负载;存储负载,包括硬盘空间填充、内存空间填充和读写负载;网络扰动,包括网络抖动、网络丢包和包损坏。5.一种分布式系统的混沌测试方法,其特征在于,应用于如权利要求1至4任一项所述混沌测试工具,包括:通过安装有所述混沌测试工具的宿主机,获取故障配置信息;根据所述故障配置信息,生成包含一个或多个标准化故障场景对应的故障场景信息;通过所述宿主机操作分布式系统,并将所述故障场景信息发送至分布式系统所在的集群,以对所述分布式系统进行故障注入。6.根据权利要求5所述的混沌测试方法,其特征在于,在获取故障配置信息之前,还包括:配置宿主机并安装所述混沌测试工具;宿主机根据用户提供的ip地址,通过ssh协议连接和控制所述分布式系统中的被测终端。7.根据权利要求6所述的混沌测试方法,其特征在于,将所述故障场景信息发送至分布式系统所在的集群,以对所述分布式系统进行故障注入,包括:通过ssh协议将所述故障场景信息发送至分布式系统所在的集群;在混沌测试结束后,移除注入的故障场景信息,并恢复被测终端的初始状态。8.一种分布式系统的混沌测试装置,其特征在于,安装有如权利要求1至4任一项所述混沌测试工具,包括:故障配置模块,被配置为通过安装有所述混沌测试工具的宿主机,获取故障配置信息;故障场景模块,被配置为根据所述故障配置信息,生成包含一个或多个标准化故障场景对应的故障场景信息;故障注入模块,被配置为通过所述宿主机操作分布式系统,并将所述故障场景信息发送至分布式系统所在的集群,以对所述分布式系统进行故障注入。
9.一种宿主机,包括处理器和存储有程序指令的存储器,其特征在于,所述处理器被配置为在运行所述程序指令时,执行如权利要求5至7任一项所述的分布式系统的混沌测试方法。10.一种存储介质,存储有程序指令,其特征在于,所述程序指令在运行时,执行如权利要求5至7任一项所述的分布式系统的混沌测试方法。
技术总结
本申请涉及分布式系统技术领域,公开一种混沌测试工具及分布式系统的混沌测试方法,其中,所述混沌测试工具,包括:程序入口模块,用于获取用户的测试指令并调用其他模块执行相应的操作;混沌注入实验基础模块,与所述程序入口模块通信连接,用于根据所述测试指令形成多种混沌测试组合的故障配置信息;混沌测试模块,与所述混沌注入实验基础模块通信连接,用于根据所述故障配置信息,生成包含一个或多个标准化故障场景对应的故障场景信息,并将所述故障场景信息发送至分布式系统所在的集群,以对所述分布式系统进行故障注入。对所述分布式系统进行故障注入。对所述分布式系统进行故障注入。
技术研发人员:魏凯 姜春宇 马鹏玮 王超伦 田稼丰 刘思源 杨佳星
受保护的技术使用者:中国信息通信研究院
技术研发日:2023.05.29
技术公布日:2023/9/20
版权声明
本文仅代表作者观点,不代表航家之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)
航空之家 https://www.aerohome.com.cn/
飞机超市 https://mall.aerohome.com.cn/
航空资讯 https://news.aerohome.com.cn/