解析阿里开源混沌工程工具ChaosBlade是什么?

微信公众号:内核小王子
关注可了解更多关于数据库,JVM内核相关的知识;
如果你有任何疑问也可以加我pigpdong[1]

高可用架构是保障服务稳定性的核心。

混沌工程

我们可以把混沌工程看作揭示分布式系统中未知的弱点而进行的实验。混沌工程师通过应用一些经验探索的原则,来学习观察系统是如何反应的。这就跟科学家做实验去学习物理定律一样,混沌工程师通过做实验去了解系统。

混沌工程是在分布式系统上进行实验的学科, 目的是建立对系统抵御生产环境中失控条件的能力以及信心,最早由Netflix及相关团队提出。

monkey.png

现在大部分的混沌工程项目都叫做 Monkey,也就是这只讨厌的猴子,在你的系统里面上蹦下窜,不停捣乱,直到搞挂你的系统。通过混沌实验,我们可以了解到系统脆弱的一面,在还没出现对用户造成伤害之前,我们就能主动发现这些问题,提升整个系统的弹性。

hundun.png

和故障注入以及故障测试的区别

混沌工程、故障注入和故障测试在关注点和工具中都有很大的重叠。但前者主要侧重通过实践产生无法预知的信息,帮助我们更好的认识系统,有更多的不确定性,而后者更偏重于是否达到预期,就像程序里的Assert断言一样,如果不符合预期就抛出异常。故障测试以某种预想的方式破坏系统,但没有探索更多可能发生的奇怪场景。本质上是实验和测试的区别,后者主要用来验证,前者用来发现新知识。

馄饨实验的输入示例:

  • 模拟整个 IDC 全部宕机
  • 针对某个接口调用延迟5秒返回
  • 让某个 CPU 全负载
  • 让某个函数抛出某个异常或返回某个固定的值
  • 强制让 NTP 时间不同步
  • 生产 IO 错误

混沌工程的原则

cs.png

下图为可能的故障分类,我们可以通过Java字节码技术和操作系统层面的工具来分别模拟进程内和进程外的故障。随着Serverless、Docker等新架构、新技术的出现,故障实现机制和承接载体也将会有一些新的变化。

env.png

混沌工程的应用场景

  • 提升系统容错能力以及稳定性
  • 评估系统荣灾红线
  • 验证云服务的动态扩展能力
  • 验证监控和告警的有效性以及指标是否全面
  • 故障突袭,提升相关人员定位,故障问题的能力

ChaosBlade简单介绍

ChaosBlade 是一款遵循混沌工程实验原理,提供丰富故障场景实现,帮助分布式系统提升容错性和可恢复性的混沌工程工具,可实现底层故障的注入,特点是操作简洁、无侵入、扩展性强。
Github 地址为 (https://github.com/chaosblade-io/) 和其他阿里开源的工具不同,不在 /alibaba 下,而是放在 chaosblade-io 下

chaos [ˈkeɪɒs] 意思为馄饨的,混乱的 blade [bleɪd] 意思为 刀片 刀身 刀刃 连起来读就是 cosplay

logo.png

下图为ChaosBlade发展历程,其中 ahas 为基于 ChaosBlade 的一个云上故障演练的产品。

blade.png

ChaosBlade 组件和生态

c1.png

ChaosBlade提供命令行的方式对实验进行管理,例如 create 创建一个实验, destroy 销毁一个实验,以及查询等。目前针对进程内的实验,针对JAVA环境主要通过javaagent字节码注入的方式进行 (这一点和另一款故障排查工具arthas一样) ,针对机器层面主要通过shell(包括docket 和 k8s)

c2.png

ChaosBlade 特点

  • 场景丰富度高
  • 使用简单,易于理解
  • 动态加载,无侵入
  • 场景扩展方便
  • 支持运行时长设置

ChaosBlade 支持的实验

  • CPU 满载
  • 网络丢包 延迟 屏蔽
  • 域名屏蔽
  • 磁盘填充,磁盘 IO 读写负载
  • 杀进程
  • 删容器,POD
  • RPC 调用延迟
  • JAVA 方法注入指定异常和设置返回值

使用举例

docker pull registry.cn-hangzhou.aliyuncs.com/chaosblade/chaosblade-demo:latest
docker run -it registry.cn-hangzhou.aliyuncs.com/chaosblade/chaosblade-demo:latest

1.gif
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 211,423评论 6 491
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,147评论 2 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,019评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,443评论 1 283
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,535评论 6 385
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,798评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,941评论 3 407
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,704评论 0 266
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,152评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,494评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,629评论 1 340
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,295评论 4 329
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,901评论 3 313
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,742评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,978评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,333评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,499评论 2 348