如何快速执行一次混沌实验?ChaosBlade 帮到你

640?wx_fmt=jpeg


阿里巴巴混沌工程工具 ChaosBlade 自开源以来,由于其操作简洁、无侵入、扩展性强的特点,不少开发者将它用来测试自身系统的容错能力和健壮性,还将它用来验证容器编排配置是否合理。


本文将结合实践,从模型的定义和实现两个方面为大家介绍 ChaosBlade 混沌实验模型,遵循此模型,我们可以简单明了地执行一次混沌实验,不仅可以控制实验的最小爆炸半径,而且可以方便快捷地扩展新的实验场景或者增强现有场景。chaosblade 和 chaosblade-exec-jvm 工程都是根据此模型来实现。


  • chaosblade 工程链接

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

  • chaosblade-exec-jvm 工程链接:

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

模型定义


在给出模型之前,我们先明确实施一次混沌实验所涉及的一些问题:

  • 对什么做混沌实验?

  • 混沌实验实施的范围是什么?

  • 具体实施什么实验?

  • 实验生效的匹配条件有哪些?

举个例子:

一台 IP 是 10.0.0.1 机器上的应用,调用 com.example.HelloService@1.0.0 Dubbo 服务延迟 3s。根据上述的问题列表,先明确的是要对 Dubbo 组件做混沌实验,实施实验的范围是 10.0.0.1 单机,对调用 com.example.HelloService@1.0.0 服务模拟 3s 延迟等等。 明确以上内容,就可以精准的实施一次混沌实验。我们将这些步骤总结并抽象出以下模型:

640?wx_fmt=png

  • Target:实验靶点,指实验发生的组件,例如容器、应用框架(Dubbo、Redis、Zookeeper)等。

  • Scope:实验实施的范围,指具体触发实验的机器或者集群等。

  • Matcher:实验规则匹配器,根据所配置的 Target,定义相关的实验匹配规则,可以配置多个。由于每个 Target 可能有各自特殊的匹配条件,比如 RPC 领域的 HSF、Dubbo,可以根据服务提供者提供的服务和服务消费者调用的服务进行匹配;缓存领域的 Redis,可以根据 set、get 操作进行匹配。

  • Action:指实验模拟的具体场景,Target 不同,实施的场景也不一样,比如磁盘,可以演练磁盘满、磁盘 IO 读写高、磁盘硬件故障等实验场景。如果是应用,可以抽象出延迟、异常、返回指定值(错误码、大对象等)、参数篡改、重复调用等实验场景。

回到上述的例子,我们可以将实验总结成一句话:对 Dubbo 组件(Target)进行故障演练,演练的是 10.0.0.1 主机(Scope)的应用,调用 com.example.HelloService@1.0.0 (Matcher)服务延迟 3s(Action)。

伪代码可以写成:

 
 

chaosblade 模型的实现


chaosblade cli 调用

针对上述例子,chaosblade 的调用命令是:

 
 
  • delay: 模型中的 action,执行延迟演练场景。

  • --time: 模型中 action 参数,指延迟时间。

  • --consumer、 --service、 --version:模型中的 matchers,实验规则匹配器。

注: 由于 chaosblade 是在单机执行的工具,所以混沌实验模型中的 scope 默认为本机,不再显示声明。

chaosblade 模型的定义

  • 一个组件混沌实验模型的定义,包含组件名称和所支持的实验场景列表。

 
 


  • 一个实验场景 action 的定义,包含场景名称、场景所需参数和一些实验规则匹配器。

 
 


  • 一个实验匹配器的定义,包含参数名、参数描述等等。

 
 

chaosblade 模型的具体实现

以 network 组件为例,network 作为混沌实验组件,目前包含网络延迟、网络屏蔽、网络丢包、DNS 篡改演练场景,则依据模型规范,具体实现为:

 
 

network target 定义了 DelayActionSpecDropActionSpecDnsActionSpecLossActionSpec 四种混沌实验场景,其中 DelayActionSpec 定义如下:

DelayActionSpec 包含 2 个场景参数和 4 个规则匹配器。

总结


通过以上示例,可以看出此模型简单、易实现,并且可以覆盖目前已知的实验场景。后续我们将对此模型进行完善,塑造一个混沌实验标准。

想要更完整的免费故障演练工具?可访问文末“阅读原文”。


直播预告640?wx_fmt=png


时间:4 月 17 日(下周三)19:00 -- 20:00

议题:混沌工程工具 ChaosBlade 介绍与实践》

主讲人:穹谷(本文作者)

内容概要:

  • 混沌工程概述

  • 介绍 ChaosBlade 项目及附属项目

  • 介绍 chaosblade 工具及混沌实验模型

  • 实际场景下 chaosblade 最佳实践

如何参与:按照以下方式进入钉钉群

加入我们的混沌工程社群,一起交流和探索混沌工程的实践以及发展路径:

? ChaosBlade 开源钉群(推荐,入群请备注:名称或昵称+公司+城市)

640?wx_fmt=jpeg

? 若没有钉钉,请添加中间件小姐姐微信,再拉入微信群(回复较慢,请耐心等待⌛️)

640?wx_fmt=jpeg

本文作者:

肖长军(花名:穹谷)

GitHub ID @xcaspar,阿里巴巴高级开发工程师,多年应用性能监控和混沌工程领域工作经验,阿里云产品 AHAS 核心开发,ChaosBlade 开源项目负责人。


文章缩略图

Photo by Javardh on Unsplash


/ 首场 Nacos 开发者沙龙@杭州,即刻报名 /

640?wx_fmt=jpeg

/ 好玩又实用,阿里巴巴开源 ChaosBlade /


640?wx_fmt=jpeg


©每周一推

第一时间获得下期分享


640?wx_fmt=gif

Tips:

# 点下“看”❤️

# 然后,公众号对话框内发送“锅刷”,试试手气??

# 本期奖品是来自淘宝心选的进口椰棕锅刷

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值