代码改变世界

混沌工程chaosblade使用

2023-12-16 01:08  youxin  阅读(119)  评论(0编辑  收藏  举报

Chaosblade是遵循混沌工程(Chaos Engineering)原理的实验工具,用于模拟常见的故障场景,帮助提升分布式系统的可恢复性和对故障的容错性。

Chaosblade是建立在阿里巴巴近十年故障测试和演练实践基础上,结合了集团各业务的最佳创意和实践。

目前支持的演练场景有操作系统类的 CPU、磁盘、进程、网络,Java 应用类的 Dubbo、MySQL、Servlet 和自定义类方法延迟或抛异常等以及杀容器、杀 Pod,具体可执行 blade create -h 查看。

好了,上面的介绍是从Chaosblade的github主页抄的。

github主页地址:https://github.com/chaosblade-io/chaosblade/blob/master/README_CN.md

说白了,Chaosblade是一个故障模拟工具,可以模拟比如服务器CPU满了、磁盘满了、网络慢、Dubbo某个服务响应时间长、jvm中某个方法抛出异常、调用Mysql慢等等。所以这个工具对于大公司来说是非常非常有用的,因为可以提前模拟出各种各样的故障,从而保证系统的高可用与稳定。

./blade

An easy to use and powerful chaos engineering experiment toolkit

Usage:
blade [command]

Available Commands:
check Check the environment for chaosblade
create Create a chaos engineering experiment
destroy Destroy a chaos experiment
help Help about any command
prepare Prepare to experiment
query Query the parameter values required for chaos experiments
revoke Undo chaos engineering experiment preparation
server Server mode starts, exposes web services
status Query preparation stage or experiment status
version Print version info

Flags:
-d, --debug Set client to DEBUG mode
-h, --help help for blade

Use "blade [command] --help" for more information about a command.

了解 ChaosBlade

首先,了解 ChaosBlade 的基本概念和架构非常重要。它由一个核心 Engine 组件和多个插件组件构成,可以通过 REST API 或blade命令行接口进行配置、控制执行和查询。Engine负责协调插件组件的工作,并将所有的请求转发到相应的插件组件中执行。插件组件实现了各种测试场景和工具,例如基础资源故障、网络模拟、进程注入、文件操作、数据库故障等等。 详细的组件架构(Component Architecture)图如下:

 

Cli包含create、destroy、status、prepare、revoke、version 6个命令; 混沌实验数据使用SQLite存储在本地(chaosblade.dat); Create和destroy命令调用相关的混沌实验执行器创建或者销毁混沌实验; Prepare和 revoke命令调用混沌实验准备执行器准备或者恢复实验环境,比如挂载jvm-sandbox; 混沌实验和混沌实验环境准备记录可以通过status命令查询。

场景一:服务器CPU爆满

 

./blade create cpu fullload {"code":200,"success":true,"result":"a0682a98d0d7d900"}