初探混沌实验工具chaosblade

发表于:2021-3-24 09:20

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:涂锐    来源:51Testing软件测试网原创

#
混沌
  混沌工程的概念由Netflix最先提出,指“在分布式系统上进行实验的学科,目的是建立对系统承受生产环境中湍流条件能力的信心”。随着分布式系统的建设,单体应用迁移到分布式架构中,对系统的可靠性和容错性提出了更高的要求。为防止服务因为微小故障而产生雪崩效应,引发系统大面积崩溃,通过在分布式系统上进行受控实验,观察系统行为并及时发现问题,提升系统健壮程度。
  Chaosblade是由阿里巴巴研发的开源混沌工程工具,用于模拟常见的故障场景。本文使用Ubuntu虚拟机和docker探索该工具的准备过程及部分常见故障的使用方法。

  一、工具获取
  Chaosblade工具有两种获取方法,可以从Github仓库中下载发布的完整工具并解压使用,也可以通过docker拉取镜像。第一种方法只需下载压缩包,解压后在对应目录下使用 ./blade命令即可使用,无需额外准备步骤,十分简洁易用。如果只是想体验工具,可以采用第二种方式,在体验完成后销毁docker容器,不用担心测试环境受到破坏。
  通过docker拉取blade工具镜像:

  启动镜像:

  二、创建混沌实验
  Chaosblade工具目前支持基础资源类(如CPU、内存、网络、磁盘等场景)、Java应用类(如JVM、消息、缓存等场景)、云原生平台(如Kubernetes平台、Pod网络等场景)等多种类型的实验场景。使用blade create命令可以创建实验,后面根据需要加上实验类型和需要的参数设置即可。

  1.CPU负载实验
  下面我们先启动一个CPU满负载的实验,并设置了20秒的时长,到达时长后实验自动销毁。运行时长为可选参数,不指定时则会持续运行。同时,也可以增加-count、-percent等命令指定负载的CPU个数和百分比。
  可以看到实验启动成功后,返回信息包含三部分,其中的code值为200时代表启动成功,result的值为一个uid。每个实验对应一个独立的uid,可以通过该id查询和销毁实验。

  启动成功后我们使用top命令查看设备负载情况,可以看到出现chaos_burncpu进程并占用了88%的CPU资源。

  到达20秒时长后实验自动销毁,再次查看负载情况已经回归正常。

  2.网络故障实验
  由于只用了一台虚拟机使用工具,所以在实验前我们先新建一个docker容器,并在容器中运行nginx。建立了该容器49153端口到本地80端口的网络映射。这样我们就可以添加对本地80端口的网络故障实验,并通过访问容器的49153端口测试实验效果,模拟访问远程服务器。
  实验前检查容器端口的映射情况,以及通过curl命令访问49153端口的测试。这里选择curl替代telnet的原因是telnet命令会自动进行重连尝试,影响观察实验结果。

  此处创建了一个网络延迟实验,对本地80端口添加2秒的网络延迟。

  之后通过Curl命令检查端口延迟,可以看到由于涉及请求和响应两个步骤,整个过程使用了4秒的时间。

  由于此次未设置运行时间,实验结束后使用destroy命令通过uid销毁实验。

  再次检查,响应时间已经恢复正常。

  接下来我们再创建一个网络丢包实验,对本地80端口添加100%的丢包率。

  实验创建成功后可以看到通过telnet和curl命令都无法继续访问49153端口,模拟了网络丢包,无法正常访问的场景。

  通过对Chaosblade工具的简单探索,发现该工具功能十分强大,常见的资源类故障场景均可创建实验覆盖。可以用来模拟分布式系统中某些模块服务异常、网络闪断等运行中可能出现的异常场景,对监控告警、故障响应等措施是否及时有效的可靠性测试提供支持。

      版权声明:本文出自51Testing会员投稿,51Testing软件测试网及相关内容提供者拥有内容的全部版权,未经明确的书面许可,任何人或单位不得对本网站内容复制、转载或进行镜像,否则将追究法律责任。
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号