Loading [MathJax]/jax/input/TeX/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >混沌工程工具:一个混沌工程设计的例子(9)

混沌工程工具:一个混沌工程设计的例子(9)

原创
作者头像
AIOPS
修改于 2023-10-10 07:11:25
修改于 2023-10-10 07:11:25
8490
举报
文章被收录于专栏:高可用高可用

背景

前面几篇文章,从两个开源程序chaos-mesh、chaosblade入手,分析混沌工程的原理;然后讲混沌工程实施的完整过程及混沌原则梳理,本文主要是记录之前的知识,用一个例子说明混沌工程是怎么设计的。

混沌工程工具系列传送门:

1、 混沌演练工具Chaos-mesh与Chaosblade技术实现与原理分析(1)-腾讯云开发者社区-腾讯云

2、 混沌工程工具:chaos-mesh注入项原理分析(2)-腾讯云开发者社区-腾讯云

3、 混沌工程工具:chaosblade在服务器上注入项原理分析(3)-腾讯云开发者社区-腾讯云

4、 混沌工程工具:业务代码注入原理(4)-腾讯云开发者社区-腾讯云

5、 混沌工程工具:Chaosblade Java业务代码注入原理(5)-腾讯云开发者社区-腾讯云

6、 混沌工程工具:混沌工程实施过程及持久价值(7)-腾讯云开发者社区-腾讯云

7、 混沌工程工具:混沌工程定位及原则梳理(8)-腾讯云开发者社区-腾讯云

8、 混沌工程工具:一个混沌工程设计的例子(9)-腾讯云开发者社区-腾讯云

初版设计

设计原则

我们面对的系统十分庞大,微服务是数以千计,底层硬件也是数以千计,而单个组件的故障场景又有数十,最终构成了如此庞大的实验集,给实验选择带来了难度。

业界有的方法是随机抽取、专家权衡以及智能选择等方法,这些方法的本质,还是要看是否能满足商业目标。所以我们设计混沌工程时,应该服务于我们的商业目标:满足业务KPI(注意区分用户眼中的业务、运维眼中的业务)。

参考NF的解决方案,主要是使用FMEA 故障模式与影响分析的方法,来最终确定在哪里注入实验,能够获得最大的收益(混沌工程中称为能让团队学习到新东西)

所以第一版是采用专家设计模式:

1、 掌握待实验系统的知识

2、 基于业务功能设计实验

功能点级别设计表(以实际场景举例)

示例服务:

假定有这样一个链路,P服务是登陆服务,Q是用户数据库的中台,Redis缓存用户的登陆态、用户的账户信息等。目前都已经做了跨区部署,且P、Q无状态。

备注:下表只是出于演示,故障原因、故障模式并未穷举。列出一些经典的用来解释思维模式。

功能点

故障模式

故障影响

严重程度

故障原因

故障概率

风险程度

登陆

Q无法访问MySQL

当redis中无缓存时,用户无法登陆系统,预计有60%用户

Q到MySQL网络中断

登陆

MySQL集群掉电

登陆

Q部分服务无法提供服务

如果超过半数的节点无法提供服务,用户会有访问延迟、无法登陆等情况发生

设备down机

登陆

Q访问MySQL变慢

超过60%用户访问变慢或失败

MySQL中有较多慢查询、全表扫描、负载高等情况

登陆

Q到MySQL网络抖动

登陆

MySQL底层设备异常而切换的,导致集群缓存丢失

.........

大面积故障设计表

地域/可用区故障,是上面功能点级别故障的特例,主要考验的是业务系统设计完备性、人员的应急能力、应急自动化等能力。

基本工做扎实后才开始实施,这里不做展开。

最终设计

进行最终设计,要拉相关干系人进行讨论,因为对于复杂系统,一个人没办法掌握系统的方方面面,所以需要拉干系人进行讨论,避免认知上的缺陷。

讨论包括:

1、 讨论选择哪个实验(根据 混沌工程原则 -- 实验选择)

2、 该实验的业务KPI及资源特征(构建具有可证伪性的假说)

3、 如何实现实验(方法简单、可长期执行)

4、 爆炸半径控制方案,特别是生产环境有损的故障注入,要考虑注入时爆炸半径及恢复时爆炸半径(根据 混沌工程原则 -- 最小化爆炸半径)

5、 补偿能力,如果实验过程中对用户数据有影响,如何在结束时进行补偿

6、 应急处理,如果实验推翻了假说,团队如何动作来恢复业务

7、 快速终止实验的方法

最终方案表

最终实验表的选择,也是采用专家模式,基于下面的 实验选择 原则进行权衡。

功能点

故障模式

故障影响

故障原因

风险程度

是否演练

原因

稳态设置

演练方法

爆炸半径

补偿能力

应急处理

终止通道

登陆

Q无法访问MySQL

当redis中无缓存时,用户无法登陆系统,预计有60%用户

Q到MySQL网络中断

1、 发生概率太低 2、 是主链路,发生时系统一定出问题

登陆

MySQL集群掉电

登陆

Q部分服务无法提供服务

如果超过半数的节点无法提供服务,用户会有访问延迟、无法登陆等情况发生

设备down机

1、 需要在容量规划、监控环节cover 2、 实验学到的东西太少

登陆

Q访问MySQL变慢

超过60%用户访问变慢或失败

MySQL中有较多慢查询、全表扫描、负载高等情况

1、 该故障模式发生概率高 2、 发生时,会显著影响用户体验,有造成用户流失的风险

1、 前端有UI交互提示速度变慢 2、 登陆成功率 3、 Q服务资源监控

1、 在Q服务注入接口级延迟即可,没必要在网络、MySQL集群注入故障,以控制爆炸半径、保证演练可持续性 2、 借助推销员CFG,可以快速模拟CDB切换

针对select请求

无需

无需

执行实验工具的命令进行终止

登陆

Q到MySQL网络抖动

登陆

MySQL底层设备异常而切换的,导致集群缓存丢失

.........

我正在参与2023腾讯技术创作特训营第二期有奖征文,瓜分万元奖池和键盘手表

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
混沌工程权威指南(中)
Gremlin是领先的托管混沌工程平台,提供SaaS服务,专注提升系统可靠性。它支持资源耗尽、网络延迟、状态攻击等多种故障注入,适用于云、容器和混合环境。GameDay功能便于团队协作演练,集成Datadog、Prometheus等观测工具,确保实验安全。其仪表板提供可靠性评分,量化系统韧性。通过精细控制“爆炸半径”,Gremlin降低实验风险,广泛用于金融、零售行业。虽需商业许可,30天免费试用无需信用卡,适合快速上手。Python SDK(Alpha阶段)增强定制化能力,是企业级混沌工程的首选工具。
FunTester
2025/05/19
1030
混沌工程权威指南(中)
混沌工程工具:混沌工程定位及原则梳理(8)
很多人都会把混沌工程和测试区分不清楚,我从执行时机、执行后是否对系统产生新认知,做了一张图如下。
AIOPS
2023/10/07
7870
混沌工程工具:Chaos-mesh与Chaosblade技术实现与原理分析(1)
随着云计算的广泛普及和云原生实践,越来越多的公司开始将目光投向云上的稳定性治理。混沌工程的概念最早来自Netflix,并且在NF取得成功,证明了混沌工程在云计算中扮演关键角色,通过有计划地引入故障和不稳定性,确保系统的健壮性和可靠性,使组织能够充分利用云计算的优势,并实现高质量的应用交付。
AIOPS
2023/10/01
4.2K0
混沌工程和故障演练
混沌工程是近年来新出现的概念,主要用于稳定性方面的研究,英文全称为chaos engineering,由网飞公司最先提出。因为最开始混沌工程称作chaos monkey,形容就像有一只猴子在系统中捣乱一样,以至于到现在每次提到混沌工程都会用一只捣乱的猴子来比喻。
FunTester
2023/08/04
7580
混沌工程和故障演练
去哪儿网基于ChaosBlade的混沌工程实践
微服务架构已经在去哪儿网(Qunar)实施多年,微服务应用数量达到数千之多,随着服务之间的调用链路越来越复杂,故障频频发生,给公司带来巨大的经济损失,稳定性建设工作就成为了一项重要的工作。从 2010 年 Netflix 提出通过 Chaos Engineering 的方式提升系统稳定性之后,到今天 Chaos Engineering 已经被证明是一种有效的发现系统弱点,建立对系统抵御生产环境中失控条件的能力以及信心的有效手段。从 2019 年底去哪儿网也结合自身的技术体系开始进行混沌工程相关的探索,下面就来介绍下我们的实践经验。
heidsoft
2021/08/26
1.2K0
去哪儿网基于ChaosBlade的混沌工程实践
混沌工程工具:chaos-mesh在服务器上注入项原理分析(2)
上篇文章,总体上分析了chaosmesh和chaosblade两个工具的对比和原理,本文继续分析chaosmesh的原理;几个常用的项dnsChaos、stressChaos、NetworkChaos和IOChaos注入项的原理。
AIOPS
2023/10/02
1.2K0
Chaos Mesh® 在腾讯——腾讯互娱混沌工程实践
腾讯互娱运营活动每天的访问人次超过 100 亿次,高峰的 QPS 超过 100 万,每天活动代码发布更新超过 500 次,数据量也超过 200 TB。面对海量的用户请求和快捷的版本发布迭代速度,如何才能又快又稳地保障服务的运营?腾讯互娱活动运营团队给出的解决方案是 DevOps 和云原生。
CNCF
2021/05/27
9980
Chaos Mesh® 在腾讯——腾讯互娱混沌工程实践
混沌工程(Chaos Engineering) 到底是什么?
2014年,Netflix团队创建了一种新的角色,叫作混沌工程师(Chaos Enigneer),并开始向工程社区推广。项目目标、业务场景、人员结构、实施方式的不同导致了对于稳定状态行为的定义不太标准。
一个会写诗的程序员
2020/04/30
20.7K0
混沌工程(Chaos Engineering) 到底是什么?
混沌工程工具:chaosblade在服务器上注入项原理分析(3)
前面文章,分析了chaos-mesh在服务器上注入项的原理,本文继续分析chaosblade在服务器上注入项原理,实际他们的思路还是比较一致的,只是实现的路径不太一样。
AIOPS
2023/10/03
1.2K1
Chaos Mesh® 在腾讯——腾讯互娱混沌工程实践
本篇文章整理自腾讯互娱高级工程师吴召军在 PingCAP Infra Meetup 上的演讲实录,欢迎点击【阅读原文】查看视频回放,后台回复 “135” 即可获取本期 PPT 链接。
PingCAP
2021/05/19
1.5K0
混沌工程工具:Chaosblade Java业务代码注入原理(5)
上篇文章(混沌工程工具:业务代码注入原理(4)-腾讯云开发者社区-腾讯云),讲了Java程序从源代码到Native code的流程、JVM字节码修改的基本原理。本节分析Chaosblade的几个经典注入项Servelet、Redis Jedis库、MySQL JDBC库故障注入的原理。
AIOPS
2023/10/05
1.1K1
混沌工程工具:混沌工程实施过程及持久价值(7)
通过前面对混沌工程工具的详细分析,我们已经对如何进行故障注入有了更明晰的了解。然而,本文将详细介绍混沌工程的具体实施过程,以便提供全面的指导。
AIOPS
2023/10/06
8001
干货 | 通过不断地失败来避免失败,携程混沌工程实践
Ctrip SRE,负责携程网站系统可靠性保障,探索和落地高可用体系的运维架构,如多活容灾、全链路压测、混沌工程、AIOPS等。
携程技术
2020/06/09
1K0
奈学教育:“混沌工程”的基本理念和使用原则
混沌工程师一门新兴的技术学科,它的初衷是通过实验性的方法,让人们建立复杂分布式系统能够在生产中抵御事件能力的信息。
江帅帅
2020/06/24
7340
卷死同行之混沌工程ChaosBlade详解
ChaosBlade 是阿里巴巴开源的一款遵循混沌工程原理和混沌实验模型的实验注入工具。 定义:混沌工程是一门对系统进行实验的学科,旨在了解系统对应生产环境的各种混乱状况的能力,建立对系统的信心。所有系统的用户都希望系统具备可靠性,但影响可靠性的因素有很多。混沌工程师能找到证据,指明那些异常但不可回避的状况下系统的应变情况。
IT运维技术圈
2022/10/24
6.1K1
混沌工程权威指南(上)
混沌工程是一门通过主动注入故障来测试分布式系统弹性的学科,旨在研究系统行为并优化设计,避免用户在使用软件时遭遇意外中断。它与站点可靠性工程(SRE)结合,后者量化“不可能事件”的影响,为系统可靠性提供依据。以下从混沌工程的演变、实施步骤、优势及实践原则等方面,探讨这门技术的核心价值。
FunTester
2025/05/17
980
混沌工程权威指南(上)
《混沌工程》读书笔记
拜占庭故障(例如性能差或有异常的节点发出有错误的响应、异常的行为、对调用者随机地返回不同的响应等)
粲然忧生
2022/09/28
1830
混沌工程入门指南
混沌工程是一门专注于通过在系统和应用中引入控制的混乱来验证系统弹性和稳健性的学科。其核心目标是建立对系统在面对生产环境中不可预知问题时的抵御能力的信心。混沌工程通过实验和假设的方法,将结果与系统稳定状态进行比较,以发现和修复潜在的弱点。
FunTester
2025/01/23
1680
混沌工程入门指南
混沌工程:通过试错的方法来提升稳定性
2008 年 Netflix 在整体微服务化和数据中心迁移至 AWS 云的背景下,开始了在生产环境进行系统弹性的测试。最早为大家熟知的是 Chaos Monkey,一个在生产环境中随机选择并关闭服务节点的工具。它的名字来源于其工作的方式:如同一只野生、武装的猴子,释放到在数据中心,来造成严重的破坏。
butterfly100
2021/07/16
1.2K0
混沌工程:通过试错的方法来提升稳定性
为什么你需要混沌工程以及 Chaos Mesh®
在我最开始学习编程的时候,我一直觉得写程序是很简单的事情,程序总是按照我的想法串行的执行,给一个输入,总是有着符合预期的固定输出。那时候写代码,可能大的挑战在于理解分支,循环,但无论怎样,只要控制得当,事情总是确定的。
PingCAP
2020/07/14
9400
推荐阅读
相关推荐
混沌工程权威指南(中)
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档