一种云原生混沌工程实验的爆炸半径控制系统及方法与流程

文档序号:28500909发布日期:2022-01-15 04:52阅读:366来源:国知局
一种云原生混沌工程实验的爆炸半径控制系统及方法与流程

1.本发明涉及云原生技术领域,尤其涉及一种云原生混沌工程实验的爆炸半径控制系统及方法。


背景技术:

2.混沌工程故障注入演练过程中,经常运行本来只会影响小部分用户的测试,却由于级联故障无意中影响到了更多的用户。在这些情况下,不得不立即中断实验。虽然不想发生这种情况,但随时遏制和停止实验的能力是必备的,这可以避免造成更大的危机。实验通过很多方法来探寻故障会造成的未知的和不可预见的影响,所以关键在于如何让这些薄弱环节曝光出来而不会因意外造成更大规模的故障。这个过程称之为“最小化爆炸半径”。
3.能带来最大信心的实验也是风险最大的,是对所有生产流量都有影响的实验。而混沌工程实验应该只承受可以衡量的风险,并采用递进的方式,进行的每一步实验都在前一步的基础之上。这种递进的方式不断增加对系统的信心,而不会对用户造成过多不必要的影响。
4.为了充分控制混沌工程演练过程中的风险,充分提升混沌工程演练的安全性,亟待提出了一种云原生下混沌工程爆炸半径控制的方法。


技术实现要素:

5.本发明的目的在于提供一种云原生混沌工程实验的爆炸半径控制系统及方法,从而解决现有技术中存在的前述问题。
6.为了实现上述目的,本发明采用的技术方案如下:
7.一种云原生混沌工程实验的爆炸半径控制系统,基于kubernetes平台资源实现混沌工程故障演练,包括演练对象分组模块、流量挡板配置模块、稳态指标配置模块和爆炸半径控制模块,所述演练对象分组模块用于在演练前通过kubernetes的label机制对演练对象配置label,实现对kubernetes的资源按照不同的爆炸半径进行分组;所述流量挡板配置模块用于演练实施的时候配置拒绝所有的入口流量,根据配置的演练对象中的演练pod列表进行访问策略配置;所述稳态指标配置模块用于演练实施前定义演练的稳态指标以及阈值;所述爆炸半径控制模块用于演练实施过程中进行爆炸半径控制,具体的控制方法包括以下三类情况中的至少一类:
8.第一类:针对所有的故障注入对象,确认该对象是否在本次演练的爆炸半径内,也即是在演练编排是分配的组内;
9.第二类:针对外部的流量,针对配置的network policy实施流量挡板控制,针对本次演练编排中指定的爆炸半径内的pod才可以接受流量,针对爆炸半径外的pod访问会被阻止;
10.第三类:实施监控稳态指标变化,如果发现稳态指标超过指定的阈值,自动终止混沌实验,确保演练的安全。
11.优选的,所述混沌工程故障演练包括但不限于针对工作节点node注入重启,宕机,cpu满载,网络延迟;针对pod注入pod网络延迟,pod内存负载。
12.优选的,所述稳态指标包括系统正常运行状态时的系统指标参数,包括系统吞吐率、错误率以及99%以上的延迟;配置错误率的阈值为50%。
13.本发明的另一个目的在于采用所述的云原生混沌工程实验的爆炸半径控制系统实现云原生混沌工程实验的爆炸半径控制的方法,包括以下步骤:
14.s1,资源分组:混沌工程演练前,制作整体的演练计划,包括对所有的资源进行分组,分成1至n个组,分组包括groupa、groupb、...;每个分组中包含但不限于节点node1,node2、...、pod1,pod2...;
15.s2,演练编排:进行演练编排时,选择所有或部分分组配置爆炸半径,添加稳态指标及其对应的阈值,对每个节点或负载添加一个或多个演练故障;
16.s3,配置流量挡板:实施流量挡板配置,包含对演练对象配置label,阻止所有入口流量,放开爆炸半径内的pod的入口流量;
17.s4,实施演练:根据演练编排的内容将混沌工程的故障依次注入演练过程,注入完成后,进入环境爆炸半径恢复流程,并同时开启稳态指标监控过程。
18.优选的,步骤s2中具体包括:配置爆炸半径,选择演练计划中的所有,或者部分分组,表示本次演练的爆炸半径控制在选定分组的爆炸半径内,超出对爆炸半径外的资源的故障注入是不允许的;添加稳态指标和对应的阈值,定义演练过程中不能超过指定的稳态指标;添加一个或多个演练故障,演练故障是实际可能发生的一些故障,包括但不限于某节点宕机,重启,cpu负荷高;某pod被杀死,pod网路延迟。
19.优选的,步骤s3中,所述演练对象配置label是根据演练计划的爆炸半径定义,通过kubernetes api或者命令对资源配置label;所述阻止所有入口流量是通过kubernetes network policy实现为了控制演练期间只接受来自爆炸半径内的pod的入口流量;放开爆炸半径内的pod的入口流量,方法是遍历该演练编排的爆炸半径,爆炸半径内的pod设置kubernetes network policy,从而放开对pod的访问。
20.优选的,步骤s4中,所述故障注入的过程具体包括:
21.s41,遍历演练编排中的注入故障定义,如果遍历结束,本次演练完成,进入s5-3实施演练的环境恢复;
22.s42,针对s41获取的故障定义,检查该故障注入的对象是否是本次演练的爆炸半径内,方法是获取演练对象的label chaos/range的值,该值如果是爆炸半径内,进行实际的故障注入演练,否则跳过该故障的注入,回到s5-1继续获取下一个故障的定义;
23.s43,所有故障注入演练结束后,进入环境爆炸半径恢复流程,针对所有pod恢复入口流量的访问。
24.优选的,步骤s4中启动稳态指标的监控具体包括:实时获取稳态指标的值,检查稳态指标的值是否超过了指定的阈值,如果超过阈值,跳转到s43,终止所有演练,并且针对所有pod恢复入口流量的访问。
25.本发明的有益效果是:
26.本发明公开了一种云原生混沌工程实验的爆炸半径控制系统及方法,将爆炸半径的控制提前到演练计划和编排阶段,通过提前计划演练的爆炸半径,通过kubernetes的
label,以及network policy机制来达到流量挡板的目的,演练过程中可以自动的识别演练是否超出了爆炸半径的定义,如果超出爆炸半径,可以自动的跳过故障的注入,另外爆炸半径外的流量是无法到达集群内,从而可以自动进行爆炸半径控制,大幅提升演练的安全控制以及演练自动化。通过配置稳态指标和阈值,实时监控演练的风险,超过预定的稳态阈值,自动终止演练,达到演练风险的自动控制。
附图说明
27.图1是实施例1中提供的云原生混沌工程实验的爆炸半径控制的系统原理示意图;
28.图2是实施例2中提供的云原生混沌工程实验的爆炸半径控制的方法流程图;
具体实施方式
29.为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施方式仅仅用以解释本发明,并不用于限定本发明。
30.实施例1
31.本实施例提供了一种云原生混沌工程实验的爆炸半径控制系统,基于kubernetes平台资源实现混沌工程故障演练,kubernetes平台资源包含工作节点node、容器container、工作负载pod、deployment、replicaset、statefulset、daemonset、job、cronjob、服务service、存储pv/pvc、配置configmap,secret以及其他的自定义crd资源。
32.控制系统包括演练对象分组模块、流量挡板配置模块、稳态指标配置模块和爆炸半径控制模块,所述演练对象分组模块用于在演练前通过kubernetes的label机制对演练对象配置label,实现对kubernetes的资源按照不同的爆炸半径进行分组;所述流量挡板配置模块用于演练实施的时候配置拒绝所有的入口流量,根据配置的演练对象中的演练pod列表进行访问策略配置;所述稳态指标配置模块用于演练实施前定义演练的稳态指标以及阈值;所述爆炸半径控制模块用于演练实施过程中进行爆炸半径控制,具体的控制方法包括以下三类情况中的至少一类:
33.第一类:针对所有的故障注入对象,确认该对象是否在本次演练的爆炸半径内,也即是在演练编排是分配的组内;
34.第二类:针对外部的流量,针对配置的network policy实施流量挡板控制,针对本次演练编排中指定的爆炸半径内的pod才可以接受流量,针对爆炸半径外的pod访问会被阻止;
35.第三类:实施监控稳态指标变化,如果发现稳态指标超过指定的阈值,自动终止混沌实验,确保演练的安全。
36.本实施例中所述混沌工程故障演练包括但不限于针对工作节点node注入重启,宕机,cpu满载,网络延迟;针对pod注入pod网络延迟,pod内存负载。
37.本实施例中的所述稳态指标包括系统正常运行状态时的系统指标参数,包括系统吞吐率、错误率以及99%以上的延迟;配置错误率的阈值为50%。
38.实施例2
39.本实施例提供了一种采用所述的云原生混沌工程实验的爆炸半径控制系统实现
云原生混沌工程实验的爆炸半径控制的方法,包括以下步骤:
40.s1,资源分组:混沌工程演练前,制作整体的演练计划,包括对所有的资源进行分组,分成1至n个组,分组包括groupa、groupb、...;每个分组中包含但不限于节点node1,node2、...、pod1,pod2...;
41.s2,演练编排:进行演练编排时,选择所有或部分分组配置爆炸半径,添加稳态指标及其对应的阈值,对每个节点或负载添加一个或多个演练故障;
42.演练计划中可以加入多个演练编排,演练计划以及所有的编排需要经过审批之后才能实施,并且审批完成后需要通知所有关系人,尽可能提前控制演练的风险。
43.s3,配置流量挡板:在演练计划被批准后,实施演练前,需要流量挡板配置,包含对演练对象配置label,阻止所有入口流量,放开爆炸半径内的pod的入口流量;
44.s4,实施演练:根据演练编排的内容将混沌工程的故障依次注入演练过程,注入完成后,进入环境爆炸半径恢复流程,并同时开启稳态指标监控过程。
45.故障注入的方式方法本专利不做描述,采用传统的混沌工程故障注入方法即可。比如node关机可以使用shutdown命令。
46.步骤s2中具体包括:配置爆炸半径,选择演练计划中的所有,或者部分分组,表示本次演练的爆炸半径控制在选定分组的爆炸半径内,超出对爆炸半径外的资源的故障注入是不允许的。比如选择groupa、groupb,表示本次演练的爆炸半径控制在groupa和groupb内,超出对爆炸半径外的资源的故障注入是不允许的;添加稳态指标和对应的阈值,定义演练过程中不能超过指定的稳态指标;添加一个或多个演练故障,演练故障是实际可能发生的一些故障,包括但不限于某节点宕机,重启,cpu负荷高;某pod被杀死,pod网路延迟。
47.本实施例中的步骤s3中,所述演练对象配置label是根据演练计划的爆炸半径定义,通过kubernetes api或者命令对资源配置label。比如爆炸半径groupa内有node1,配置label的方法是:kubectl label node1 chaos/range=groupa;所述阻止所有入口流量是通过kubernetes network policy实现为了控制演练期间只接受来自爆炸半径内的pod的入口流量;放开爆炸半径内的pod的入口流量,方法是遍历该演练编排的爆炸半径,爆炸半径内的pod设置kubernetes network policy,从而放开对pod的访问。
48.本实施例中,步骤s4中,所述故障注入的过程具体包括:
49.s41,遍历演练编排中的注入故障定义,如果遍历结束,本次演练完成,进入s5-3实施演练的环境恢复;
50.s42,针对s41获取的故障定义,检查该故障注入的对象是否是本次演练的爆炸半径内,方法是获取演练对象的label chaos/range的值,该值如果是爆炸半径内,进行实际的故障注入演练,否则跳过该故障的注入,回到s5-1继续获取下一个故障的定义;
51.s43,所有故障注入演练结束后,进入环境爆炸半径恢复流程,针对所有pod恢复入口流量的访问。
52.步骤s4中启动稳态指标的监控具体包括:实时获取稳态指标的值,检查稳态指标的值是否超过了指定的阈值,如果超过阈值,跳转到s43,终止所有演练,并且针对所有pod恢复入口流量的访问。
53.通过采用本发明公开的上述技术方案,得到了如下有益的效果:
54.本发明公开了一种云原生混沌工程实验的爆炸半径控制系统及方法,将爆炸半径
的控制提前到演练计划和编排阶段,通过提前计划演练的爆炸半径,通过kubernetes的label,以及network policy机制来达到流量挡板的目的,演练过程中可以自动的识别演练是否超出了爆炸半径的定义,如果超出爆炸半径,可以自动的跳过故障的注入,另外爆炸半径外的流量是无法到达集群内,从而可以自动进行爆炸半径控制,大幅提升演练的安全控制以及演练自动化。通过配置稳态指标和阈值,实时监控演练的风险,超过预定的稳态阈值,自动终止演练,达到演练风险的自动控制。
55.本发明在提供混沌演练一键终止的基础上,通过对演练对象的基于标签进行分组,灵活的控制演练范围。通过基于kubernetes network policy流量挡板的方式对流量截流,尽可能的减少对实际业务的影响。通过对演练范围的逐步扩大来控制演练的力度,全面控制演练过程中的风险。通过对稳态指标的监控,自动地发现演练中的风险,如果有风险自动终止实验,克服了现有传统的混沌工程演练平台只是停留在一键终止的缺陷。
56.以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视本发明的保护范围。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1