• 12
  • 12
分享
  • 初探混沌实验工具chaosblade——软件测试圈
  • 曼倩诙谐 2021-04-14 09:44:20 字数 1549 阅读 2155 收藏 12

  混沌工程的概念由Netflix最先提出,指“在分布式系统上进行实验的学科,目的是建立对系统承受生产环境中湍流条件能力的信心”。随着分布式系统的建设,单体应用迁移到分布式架构中,对系统的可靠性和容错性提出了更高的要求。为防止服务因为微小故障而产生雪崩效应,引发系统大面积崩溃,通过在分布式系统上进行受控实验,观察系统行为并及时发现问题,提升系统健壮程度。

  Chaosblade是由阿里巴巴研发的开源混沌工程工具,用于模拟常见的故障场景。本文使用Ubuntu虚拟机和docker探索该工具的准备过程及部分常见故障的使用方法。

  一、工具获取

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

  通过docker拉取blade工具镜像:

1-1.png

  启动镜像:

1-2.png

  二、创建混沌实验

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

  1.CPU负载实验

  下面我们先启动一个CPU满负载的实验,并设置了20秒的时长,到达时长后实验自动销毁。运行时长为可选参数,不指定时则会持续运行。同时,也可以增加-count、-percent等命令指定负载的CPU个数和百分比。

  可以看到实验启动成功后,返回信息包含三部分,其中的code值为200时代表启动成功,result的值为一个uid。每个实验对应一个独立的uid,可以通过该id查询和销毁实验。

1-3.png

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

1-4.png

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

1-5.png

  2.网络故障实验

  由于只用了一台虚拟机使用工具,所以在实验前我们先新建一个docker容器,并在容器中运行nginx。建立了该容器49153端口到本地80端口的网络映射。这样我们就可以添加对本地80端口的网络故障实验,并通过访问容器的49153端口测试实验效果,模拟访问远程服务器。

  实验前检查容器端口的映射情况,以及通过curl命令访问49153端口的测试。这里选择curl替代telnet的原因是telnet命令会自动进行重连尝试,影响观察实验结果。

1-6.png

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

1-7.png

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

1-8.png

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

1-9.png

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

1-10.png

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

1-11.png

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

1-12.png

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


作者:涂锐   

来源:51Testing软件测试网原创

  • 【留下美好印记】
    赞赏支持
登录 后发表评论
+ 关注

热门文章

    最新讲堂

      • 推荐阅读
      • 换一换
          •   据 Eurasia Daily 报道,当地时间周二,德国下萨克森州、萨克森州、黑森州和柏林四个联邦州明确反对在其辖区内关闭大众汽车工厂和裁员。各州经济部长联合签署的文件称:“所有工厂都应当完全保留。”  此外,这些州也反对各汽车制造商之间的竞争以及以牺牲员工利益为代价的地方节约措施。他们提议应签署保障就业和收入的合同。  上述各州在 10 月 10 日签署的一份文件中表示:“这意味着各个工厂之间不会相互竞争。”文件还显示:“德国联邦各州的经济部门将团结一致,密切配合。”这四个州还反对以牺牲员工利益为代价的大规模裁员,并表示续签的长期工作保障合同应确保岗位、保留专业技工。  大众汽车可能首次...
            0 0 250
            分享
          •   背景  小S是刚工作一年半的校招生,小H是他的导师,无论是技术能力还是业务测试,小H都是团队中的榜样。小H给小S的建设性反馈是期望他能对小H做到简单相信,提升日常沟通和工作效率。  辅导过程  小Z:小H给你提了个建设性反馈,期望你能做到简单相信。我们一起来看下,我能帮助你什么,或者你在改进这些方面过程中有什么卡点,我们一起想办法解决。  小S:大家说要简单相信,我认为大家告诉我的大部分内容我都会照着做,并没有感觉到自己没有简单相信的。  小Z:嗯,我知道怎么回事儿了。当提到简单相信时,这已经是方法层面的事情了,但没有提及问题点,咱们先界定一下。我理解小H说的点在于你有一些观点和认知很难被...
            0 0 715
            分享
          • 第一章:项目目标基本开源项目:tpshop,这是一个web+app项目阶段核心目标:1.能够独立完成编写电商类项目的测试用例2.能够独立基于测试流程的6个步骤,对电商类项目进行测试本项目会涉及到的内容1.web类项目的环境的问题【构成、部署】2.web类项目如何熟悉整个项目3.测试流程4.【核心】测试电商类项目,两个重点:测试业务流程、核心功能5.抓包6.编写生成测试报告第二章:项目环境介绍2.1项目架构介绍公司一般有几套环境1.开发环境:给开发人员使用的2.测试环境:给测试人员测试软件使用的3.预生产环境:在正式发布之前的环境4.生产环境:给普通用户来使用的可以有三套环境,也可以有两套环境:...
            0 0 2913
            分享
          •   今日,百度、字节、商汤、中科院旗下紫东太初、百川智能、智谱华章等 8 家企业 / 机构的大模型产品已经首批通过《生成式人工智能服务管理暂行办法》备案,可正式上线面向公众提供服务。外界注意到,阿里通义千问、360 智脑、科大讯飞星火大模型不在首批获批名单中。  据《科创板板日报》报道,针对大模型应用开放问题,记者今日以投资者身份致电科大讯飞,接电人员表示,科大讯飞已首批顺利完成备案。首批通过备案的企业名单,预计将在 1 周内陆续由各地方相关管理部门通知大家。  而早些时候贝壳财经也报道称,从多位独立信源处获悉,国内将有 11 家大模型陆续通过《生成式人工智能服务管理暂行办法》备案,首批将在 ...
            0 0 782
            分享
          •   在过去的二十五年里,世界发生了翻天覆地的变化,日本已经停止使用一种奇特的指标来衡量列车上的拥挤程度:在车厢里阅读报纸或杂志的难易程度。做出这一决定的原因很容易理解,现在大多数人在通勤时都盯着手机,而不是报纸。  据《The Reg》报道,日本国土交通省定期报告该国主要大都市地区的列车拥堵率。到目前为止,该部门一直使用下面的插图来显示列车的繁忙程度。  最不拥堵等级(100%)是指在列车满员时,旅客仍可坐在座位上、抓紧带子或握住车门附近的支柱。  在 150% 的情况下,人们可以轻松地打开报纸阅读,而在 180% 的情况下,虽然也可以这样做,但要折叠报纸则需要费一番功夫。  接下来是 200...
            0 0 285
            分享
      • 51testing软件测试圈微信