测试混沌工程

ChaosBlade-01-测试混沌工程平台整体介绍

ChaosBlade-02-Chaosblade-box:一个具有丰富场景的混沌工程平台

ChaosBlade-03-Chaosblade-exec-jvm 对 Java 应用实施混沌实验的 chaosblade 执行器

ChaosBlade-04-Chaosblade chat 聊一聊 Chaosblade

ChaosBlade-05-混沌工程(Chaos Engineering)介绍

ChaosBlade-06-混沌工程准则 PRINCIPLES OF CHAOS ENGINEERING POC

ChaosBlade-07-混沌工程开源工具 Chaos Monkey

ChaosBlade-08-混沌工程开源工具 Chaos Monkey for Spring Boot

ChaosBlade-09-混沌工程有哪些成功的应用?

测试开源组件

data-factory: Auto generate mock data for java test.(便于 Java 测试自动生成对象信息)

junitperf: Junit performance rely on junit5 and jdk8+.(java 性能测试框架。性能测试。压测。测试报告生成。)

简介

ChaosBlade 是阿里巴巴 2019 年开源的混沌工程项目,包含混沌工程实验工具 chaosblade 和混沌工程平台 chaosblade-box,旨在通过混沌工程帮助企业解决云原生过程中高可用问题。

实验工具 chaosblade 支持 3 大系统平台,4 种编程语言应用,共涉及 200 多的实验场景,3000 多个实验参数,可以精细化的控制实验范围。

混沌工程平台 chaosblade-box 支持实验工具托管,除已托管 chaosblade 外,还支持 Litmuschaos 实验工具。

已登记使用企业 40 多家,其中已在工商银行、中国移动、小米、京东等企业中落地使用。

特性优势

ChaosBlade 具有以下核心优势特性:

丰富的实验场景:包含基础资源(CPU、内存、网络、磁盘、进程、内核、文件等)、多语言应用服务(Java、C++、NodeJS、Golang 等)、Kubernetes 平台(覆盖 Container、Pod、Node 资源场景,包含上述实验场景)。

多维度实验方式:支持从主机到 Kubernetes 资源,再到应用维度进行实验编排。

多样化的执行方式:除了使用平台白屏化操作,还可以通过工具自带的 blade 工具或者 kubectl、编码的方式执行。

便捷的场景扩展能力:所有的实验场景遵循混沌实验模型实现,并且不同层次场景对应不同的执行器,实现简单,易于扩展。

实验工具自动化部署:无需手动部署实验工具,实现实验工具在主机或集群上自动化部署。

支持开源实验工具托管:平台可托管业界主流的实验工具,如自身的 chaosblade 和外部的 litmuschaos 等。

统一混沌实验用户界面:用户无需关心不同工具的使用方式,在统一用户界面进行混沌实验。

集成云原生生态:采用 Helm 部署管理,集成 Prometheus 监控,支持云原生实验工具托管等。

架构概览

struct

ChaosBlade 支持多种环境部署与演练,包括 linux、docker、kubernetes 集群及各类云厂商环境。

ChaosBlade 主要包括以下几个组件:

ChaosBlade-Box Console:ChaosBlade 可视化组件,主要提供一套用户友好的 Web 界面,用户可以通过该界面进行混沌工程实验的编排与操作管理。

ChaosBlade-Box Server:核心逻辑组件,主要负责混沌工程实验的管理与编排,探针与应用管理。包括组件,Chaos Engine:演练引擎,包括流程编排、安全管控、演练报告等功能;Chaos Runner:演练执行器,兼容多种执行工具;Chaos Experinece:演练经验库等。

Agent:核心逻辑组件,部署在用户终端的主机或 Kubernetes 集群内,主要负责和 ChaosBlade-Box Server 建联上报心跳并作为命令下发通道。

ChaosBlade:主要执行工具,能在主机和 Kubernetes 等不同环境上执行故障注入,能对系统网络设备、文件系统、内核及系统上运行的应用等进行故障干扰。

规划

ChaosBlade 未来以云原生为基础,提供面向多集群、多环境、多语言的混沌工程平台和混沌工程实验工具。

实验工具继续聚焦在实验场景丰富度和稳定性方面,支持更多的 Kubernetes 资源场景和规范应用服务实验场景标准,提供多语言实验场景标准实现。

混沌工程平台聚焦在简化混沌工程部署实施方面,后续会托管更多的混沌实验工具和兼容主流的平台,实现场景推荐,提供业务、系统监控集成,输出实验报告,在易用的基础上完成混沌工程操作闭环。

ChaosBlade 工具使用快速入门

本文档介绍如何直接通过端侧工具 ChaosBlade 运行混沌工程实验

简介

混沌工程实验除了可以通过可视化界面,直接进行编排和注入,ChaosBlade 混沌工程端侧工具本身也可直接执行,其本身支持以下多种方式运行:

Cli 命令行模式:直接通过命令行方式执行演练,可直接执行主机环境和 Kubernetes 环境下运行 Yaml 文件模式:该方式只对 Kubernetes 集群进行演练时使用,使用 yaml 配置文件创建演练 通过定义 chaosblade crd 资源的方式 Server 模式:即利用./blade server start 将 ChaosBlade 工具作为一个 server 启动,然后再通过 http 远程调用的方式下发命令

实验准备

第一步,工具包下载

下载二进制工具包 chaosblade-1.7.2-linux-amd64.tar.gz

wget https://github.com/chaosblade-io/chaosblade/releases/download/v1.7.2/chaosblade-1.7.2-linux-amd64.tar.gz

第二步,工具解压

tar -xvf chaosblade-1.7.2-linux-amd64.tar.gz -o /opt/chaosblade

准备验证

进入解压包本地所放置的路径,通过./blade version或./blade v来查看是否可用,预期结果如下:

[root@test chaosblade]# cd /opt/chaosblade
[root@test chaosblade]# ./blade version
version: 1.7.2
env: #1 SMP Tue May 26 11:42:35 UTC 2020 x86_64
build-time: Thu Oct 20 02:18:52 UTC 2022

参考资料

https://chaosblade.io/docs