混沌工程该如何做

2022-08-15  本文已影响0人  子不语的花未眠

00 开始之前

  1. 混沌不是计划内的事情,是冷不丁的来一下。
  2. 没上混沌工程之前,一些小bug都知道
  3. 上了混沌工程之后,小事变大事,bug瞒不住
  4. 混沌不是找茬,是提前发现问题

01 混沌工程是不是大公司专属

1.1 混沌工程的由来

Chaos Engineering is the discipline of experimenting on a distributed system in order to build confidence in the system`s capability to withstand turbulent conditions in producion.

什么是混沌工程

混沌工程解决了什么问题?

混沌工程出现的原因

image.png

混沌工程的解决思路

混沌工程的几个误区

1. 故障演练
- 故障演练是对已知问题的复现 —— 开卷考试
- 混沌工程是没有预案的“攻击”
image.png
2. 技术能力足够强
- 技术能力是一个量变到质变的过程,需要厚积薄发
- 是一个逐步积累的过程,也是一个去除技术债的过程。不做永远都不会做
3. 只适合互联网行业
- 混沌工程和行业无必然关系
- 入股故障后悔出现灾难性结果,那么就推荐使用混沌工程。反之,不建议使用。
4. 只是一种特殊的测试,和真实情况有偏差
- 测试 - 基于已知的场景,验证是否为预期的结果
- 混沌工程 - 基于线上真实场景,随机模拟用户使用情况,无固定预期结果:例如拔个网线、换个IP,对于用户是无感知的,注重用户体验
5. 影响线上环境
- 混沌工程是为了发现潜在的问题,而不是创造新的问题
image.png

- 将k=1改成k=2,这是没事找事,不可能发生的,这不叫混沌,叫伪混沌
- 机房掉电,这是可能发生的,这属于混沌工程

6. 混沌就是随即停止机器
- 混沌工程存在多种故障场景
image.png

1.2 混沌工程的总结

1.3 总结

  1. 混沌工程重点是发现影响系统可用性的问题,而不是发现逻辑bug。
  2. 混沌工程的思路是主动出击,通过模拟各种合理范围内的故障,来验证系统是否达到高可用性的要求
  3. 实施混多工程过程中,需要设计多种故障场景,控制爆炸半径,降低对线上环境的冲击性

02 如何在我的场景中使用混沌工程

2.1 混沌工程的原理

2.1.1 混沌工程原理 - 稳态假设

2.1.2 混沌工程原理 - 模拟真实世界

2.1.3 混沌工程原理 - 线上推演

image.png

2.1.4 混沌工程原理 - 持续自动化

2.1.5 混沌工程原理 - 爆炸半径

爆炸半径:要测试的服务+要测试的故障场景融合在一起
选择爆炸半径的时候,要有一定的基础:CMDB,需要做好CMDB,才能生成拓扑图,这样想对某个服务做混沌,才知道哪些服务依赖这个服务,会有什么影响和后果

image.png

2.2 设计混沌工程

2.2.1 设计混沌工程 - 单节点故障

⚠️注意:对于单节点故障,一定要给自己留后门,比如网卡需要有管理网卡,如果没有down掉后,就再也无法访问了、CPU打满后需要给一定时长等等


image.png

2.2.2 设计混沌工程 - 单区域故障

1. 自建IDC的情况:

2. 公有云的情况:

image.png

2.2.3 设计混沌工程 - 服务故障

2.2.4 设计混沌工程 - 全链路故障

istio:做这块全链路故障时候很好的一个搭档工具

2.2.5 设计混沌工程 - 自动化

2.3 开源工具

2.3.1 开源工具 - ChaosBlade(1)

—— 开箱即用

image.png

2.3.1 开源工具 - ChaosBlade(2)

03 混沌工程案

上一篇 下一篇

猜你喜欢

热点阅读