混沌测试平台建设要求有哪些?

混沌测试平台建设要求有哪些?

最佳答案 匿名用户编辑于2023/10/30 16:21

我将从以下几个方面来介绍混沌测试平台建设要求。

一、功能要求

主要功能应包括混沌实验模块、故障模拟发压模块、可观测性模块、权限管理模块、专家库模块 5 大部分。混沌实验模块支持对待测底层设施物理机/虚拟机、容器进行管理;故障模拟发压模块支持对混沌实验的过程进行管理,同时还对演练过程混沌实验事件进行标注;可观测性模块支持对实验全过程的监测和分析;权限管理模块支持进行混沌实验人员管理。专家库模块支持沉淀典型故障业务场景,提供平台人员使用产品的效率。各个功能模块具体如下描述:

1.混沌实验模块

混沌实验调度组件。该组件基于自定义资源对象 CRD 设计,可以用来创建、配置和管理多种类型的混沌实验,组件接收到混沌实验对象的创建、更新等事件后,获取到具体混沌实验的最新配置。在通过解析调度规则以及实验配置后,执行具体的混沌实验。使用该组件,用户可以通过 YAML 文件的方式自定义混沌实验的目标、攻击对象、调度规则等。组件使用完全云原生的方案,实现完全无侵入的故障注入,并且提供了很强的拓展性,用户可以直接在此组件上增加新的故障注入类型。

故障注入组件。组件提供不同类型原子故障的注入和恢复功能,以 DaemonSet 方式运行在每一个物理节点上,在接受来自调度组件的故障注入请求后,按照故障请求的配置,修改具体容器的 cgroup,或者进入具体 Pod 命名空间下,通过 tc、iptables、ipset 等工具干扰具体的网络资源对象。同时该组件使用 eBPF提供了内核故障注入的能力。 物理节点(虚拟机)编排引擎。该引擎提供多节点混沌实验编排的能力,用户将目标节点注册到该组件后,可以使用该引擎对已注册的节点执行各类故障注入。用户可以直接使用该引擎自定义混沌实验的步骤,配置检查程序等,并且提供复用已有的混沌实验场景能力。该引擎包含任务定义、任务调度、任务执行模块,将基于 Kubernetes CRD 事件机制和 Golang 语言开发,将每个可调度的物理节点和编排任务抽象为具体的 CRD 对象并使用 Watch 机制监控任务的具体变化,并实现特有的 controller组件去处理具体的事件变化,并按照具体的配置解析成具体的任务交给任务执行模块,任务由入口任务和节点任务组成,入口任务会被最先调度,后根据入口任务内定义的子任务调度具体的节点任务,直到所有的任务都被执行过后,整个编排任务执行结束。

插件系统。不同应用由于环境不同会产生完全不同的故障场景,很难在一个平台中涵盖所有可能的故障。为了能够重复利用社区的力量,以及收集实现世界中可能出现的场景,插件系统提供了用户自定义故障类型能力。用户可以使用此插件系统来定制化自己的混沌故障类型,如 RabbitMQChaos、TiDBChaos 等。插件系统是整个混沌工程生态中关键部分,用户将自定义的插件提交到插件库,这样其他用户可以直接复用此插件,很大程度降低了用户使用混沌实验的成本,避免重复的工作。

2.故障模拟发压模块

故障模拟发压模块以命令行工具方式提供服务,用户可以在物理节点或者虚拟机节点上直接运行相关命令,该工具会根据提供的命令配置,解析成对应的故障规则,随后执行具体操作。使用该组件,用户可以方便的在单物理节点或者虚拟机节点上,随机杀或者暂停指定的进程,模拟各种网络异常,模拟磁盘压力,CPU 繁忙,内存压力等,同时提供历史查询,故障恢复等功能,方便用户快速的实现故障的模拟。该故障工具基于 Golang 语言和 SQLite3 开发。

3.可观测性模块

可观测性模块进一步降低简化混沌实验的步骤和提供对混沌实验的可观测性,让用户可以通过鼠标和填写简单的表单实现混沌实验和场景的设计,并且在可观测性模块上提供方便的混沌实验检查机制和完整的实验报告。整个可观测性模块包括独立混沌实验的定义,需要支持定义混沌实验范围,实验具体行为,并且支持暂停和恢复操作。可观测性模块还包含设计整个混沌实验场景,需要满足应用状态定义,展示应用监控信息,多个混沌实验场景的编排,以及告警规则设置和报告信息设置等。

可观测性模块同时还提供服务监控和健康检查服务。在进行混沌实验过程中,首先需要确认系统的稳态,并且基于稳定状态提出假设。为了简化用户进行混沌实验操作步骤,本方案计划在混沌工程平台中提供定义应用系统稳定状态方式,支持用户在自定义任务通过 HTTP 状态接口或者访问健康系统的指标方式判断系统的稳定状态。具备的应用系统稳态的判断能力,标志着混沌系统平台具备了混沌工程操作闭环的能力。

4.权限管理模块

权限管理模块。混沌实验要求能够有效的控制最小爆炸,并且不同用户之间有一定的隔离,只有提供有效的安全保障,用户才能放心的开展自己的混沌实验。为了达到此目标,权限管理模块构建自己的权限机制,用户可以根据混沌实验的范围分配实验人员和实验环境的权限,有效的控制混沌实验的范围和保障混沌实验的安全。同时用户可以使用此权限系统进行混沌实验人员管理,可以创建不同角色的实验人员,如可以分配至具有查看权限的观察者角色等。

5.专家库模块

专家故障库模块。可以编辑与展示录入实验过程中发现的问题,作为平台的知识积累;具有实验流程说明,可指导进行实验设置与执行演练计划。沉淀各种典型故障测试场景,用户在创建场景时可以直接导入故障场景,降低故障创建复杂度和提供产品使用效率。

二、适配性要求

混沌测试平台运行环境应该运行在开放的软硬件平台之上,更加贴近国内客户生产环境需求,适配多种架构与类型分布式数据库,支持 X86、C86、ARM 硬件平台,支持 Windows、统信、麒麟等软件平台。

三、集成要求

混沌工程与被测系统、监控系统、上层应用、底层设施等模块的整体集成部署逻辑分为管控组件和执行组件,管控组件需要独立部署,支持集成部署在独立的物理环境和 Kubernetes 环境,执行组件需要部署在应用运行环境,并且与控制组件保持网络互通,测试人员只需要通过控制组件即可完成混沌实验。

参考报告

金融级混沌测试平台建设能力研究报告.pdf

金融级混沌测试平台建设能力研究报告。混沌工程是通过主动向系统中引入软件或者硬件的异常状态(扰动),制造故障场景并根据系统在各种压力下的行为表现确定优化策略的一种系统稳定性保障手段。应用混沌工程可以对系统抵抗扰动并保持正常运作的能力(稳定性)进行校验和评估,提前识别未知隐患并进行修复,进而保障系统更好地抵御生产环境中的失控条件,提升整体稳定性。本报告以混沌测试工具集为基础,采用开源云原生模式构建自动化混沌工程平台,针对分布式系统的复杂性特点,设计不同层次的故障进行模拟。平台除提供应用层以及实际物理环境故障模拟外,还提供较为完善的故障编排功能,以便监控分布式系统状态,找出项目潜在的风险。本报告所述...

查看详情
我来回答