关于混沌工程

混沌工程

    • 混沌工程介绍
      • 什么情况下该使用混沌工程
      • 为什么需要混沌工程
      • 与测试的区别
      • 混沌工程原则
      • 多样化真实世界的事件
      • 结尾

混沌工程介绍

混沌工程是一种通过实验探究的方式来让我们理解系统行为的方法。 通过设计和执行一系列实验, 帮助我们发现系统中潜在的、可以导致灾难的或让我们的用户受损的脆弱环节, 推动我们主动解决这些环节存在的问题。

什么情况下该使用混沌工程

复杂的分布式系统

为什么需要混沌工程

复杂的分布式系统会发生不可预知的、但很可能发生的事情, 导致各种灾难。
混沌工程以探索式, 破坏式的方式来发现这些异常, 让系统更加稳定。比如流量激增、资源竞争条件、拜占庭故障(例如性能差或有异常的节点发出错误的响应、异常的行为、对调用者随机返回不同的响应等)、非计划中的或消息内容非正常组合的处理等。

与测试的区别

其实混沌工程从大方向来说也是测试。

测试流程:
开发环境->测试环境->预发布环境->正式环境
有完整的测试用例, 有准确的预期结果, 越早测试越好
测试也有探索式测试, 场景测试, 这些都是相通的

混沌工程流程:
选定假设->设定范围->计划监控指标->执行->分享结果->扩大范围->自动化实验
离正式环境越近测试效果越好(当然必须要在其他环境先测一遍, 这样可以在正式环境之前发现85%的问题), 没有准确的预期结果, 所以要有监控指标和随时stop的能力.

混沌工程原则

为了具体地解决分布式系统在规模上的不确定性,可以把混沌工程看作是为了揭示系统弱点而进行的实验。破坏稳态的难度越大,我们对系统行为的信心就越强。如果发现了一个弱点,那么我们就有了一个改进目标。避免在系统规模化之后问题被放大。以下原则描述了应用混沌工程的理想方式,这些原则来实施实验过程。对这些原则的匹配程度能够增强我们在大规模分布式系统的信心。
关于混沌工程_第1张图片

多样化真实世界的事件

关于混沌工程_第2张图片

结尾

工具 介绍
Simoorg Simoorg是LinkedIn开发的故障注入工具。它非常易于扩展, 并且其中的很多关键组件都是可插拔的。
Pumba Pumba是基于Docker的混沌工程测试工具以及网络模拟工具。
Chaos Lemur Chaos Lemur是用来测试高可用性系统弹性的工具, 可以在本地进行部署, 允许随机关闭BOSH虚拟机。
Chaos Lambda Chaos Lambda是在办公期间随机关闭AWS ASG节点的工具。
Blockade Blockade是基于Docker的、可以测试网络故障和网络分区的工具。
Chaos-http-proxy Chaos-http-proxy可以像HTTP请求注入故障的代理服务器。
Monkey-Ops Monkey-Ops是用Go语言实现的, 可以在OpenShift V3.X上部署并且可以在其中生成混沌工程实验。Monkey-Ops可以随机停止OpenShift组件, 如Pod或者DeploymentConfig。
Chaos Dingo Chaos Dingo目前支持在Azure相关服务上进行实验。
Tugbot Tugbot是在使用Docker的生产环境中进行测试的框架。

更加具体的请自行阅读Chaos Engineering
如何实施还是要团队不断的实践
暗中进行->适当投入度->正式采用->成为文化

参考 https://blog.csdn.net/b0Q8cpra539haFS7/article/details/86698060

你可能感兴趣的:(关于混沌工程)