前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >故障演练利器之ChaosBlade介绍

故障演练利器之ChaosBlade介绍

作者头像
心平气和
发布2020-09-11 11:33:56
2K0
发布2020-09-11 11:33:56
举报

一、什么是ChaosBlade

ChaosBlade是阿里巴巴在其自身故障测试和演练实践基础上,结合自身业务场景而开发的故障注入工具。

该工具目前已经开源,项目地址:

https://github.com/chaosblade-io/chaosblade

二、为什么需要故障演练

ChaosBlade是一款故障注入工具,是整个故障演练的一个小环节,那为什么要做故障演练呢?

在我看来,主要是为了验证在故障场景程序的可靠性和可用性,因为大部分人写代码都有惯性,只喜欢写正向流程,对于一些异常处理往往是非常简单和粗暴的,所以很有可能出现在系统发生故障时可能出现各种问题:如数据丢失、数据对不上等。

故障演练主要是通过模拟一个个故障场景来验证程序的可靠性和可用性,这样也反过来提升系统架构,为后续开发、设计提供一些指导。

三、安装

如果不想自己修改代码,可以用官方版本:

https://github.com/chaosblade-io/chaosblade/releases

我选择的是v0.6.0,解压后在根目录下有个blade的二进制文件。

如果想自己编译,则需要以下软件,以下是我的环境相关软件版本:

Java:1.8.1

Maven:3.6.3

Go>=1.13

Git>=1.8.5

编译步骤:

git clone https://github.com/chaosblade-io/chaosblade

git checkout v0.6.0

make

四、使用

官方文档已经介绍的非常详细了,建议仔细阅读:

https://chaosblade-io.gitbook.io/chaosblade-help-zh-cn/

这里介绍一个模拟CPU Load高的命令如何使用:

代码语言:javascript
复制
blade create cpu load
--返回如下
{"code":200,"success":true,"result":"0496e31d8c619016"}

其中result相当于一个实验,如果想停止试验,执行命令:

代码语言:javascript
复制
blade destroy 0496e31d8c619016

--输出如下
{"code":200,"success":true,"result":{"Target":"cpu","Scope":"","ActionName":"fullload","ActionFlags":{}}}

功能大概分几大块:

1、模拟CPU负载高

blade create cpu load

2、模拟磁盘IO压力

blade create disk burn

blade create disk fill

3、内存负载

blade create mem load

4、模块网络负载

有模块延迟、丢包、重复等场景,这里就不一一详述了

5、模拟进程宕掉

blade create process kill

blade create process stop

6、JVM

blade create jvm

可以指定类,方法注入延迟、返回值、异常故障场景,也可以编写 groovy 和 java 脚本来实现复杂的场景。

7、WEB服务

后台启动 blade,会暴露出 web 服务,上层可通过 http 调用。

请求格式是 chaosblade?cmd=具体命令,例如执行 CPU 满载,则请求是 chaosblade?cmd=create%20cpu%20fullload

这个是重点,因为前面讲的这些功能都是单机命令行的,实际的场景是希望在一个控制台集中操作所有场景,有了这个远程通信能力,上述需求落地才有了可能。

五、整体感受

ChaosBlade的功能非常强大,常见的故障场景都能覆盖到,另外还提供了远程控制的能力,美中不足的是目前没有开源相应的控制台,如果需要最终落地并且产品化还需要做进一步开发,不过阿里 的AHAS已经集成了ChaosBlade,如果只是用了一个云厂商可以不用自己开发了,如果使用多个云厂商,像国内阿里云,海外AWS的这种情况,就需要自己做进一步的开发了。

真的需要做控制台,细节很多,如何自动化发现ChaosBlade,并且和自己的业务结合,还是需要自己做进一步的开发,如我在Mysql和Redis上都部署了ChaosBlade,如果识别自己操控的是Mysql还是Redis,这就涉及到ChaosBlade的管理了,这个可以参考下ServiceMesh的设计。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-06-22,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 程序员升级之路 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • blade create disk burn
  • blade create mem load
  • blade create process kill
  • blade create process stop
  • blade create jvm
相关产品与服务
混沌演练平台
混沌演练平台(Chaotic Fault Generator)提供高效便捷、安全可靠的故障演习服务,除可视化故障注入服务外,还提供行业经验模板,监控护栏等核心功能,致力于帮助用户及时发现业务容灾隐患、验证高可用预案的有效性,从而提高系统的可用性和韧性。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档