前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >No.178# 混沌工程相关内容梳理

No.178# 混沌工程相关内容梳理

作者头像
瓜农老梁
发布2022-12-03 09:27:58
5800
发布2022-12-03 09:27:58
举报
文章被收录于专栏:瓜农老梁瓜农老梁

引言

随着公司规模业务的快速增长,数以千计甚至万计的微服务,依赖的各类组件越来越多。

分布式体系架构体系越来越复杂,没有任何一个人能够掌控所有复杂的耦合性。

也就是说复杂性无法避免,不可能再回到单体应用,也无法彻底消除这种复杂性。

需要考虑的是如何应对这种复杂性问题。

一、混沌工程要点梳理

在《混沌工程--复杂系统韧性实现之道》给出了对了混沌工程的定义:

混沌工程在分布式系统上进行实验的学科,目的是建立对该系统能够能够承受生产环境的动荡条件的信心。

混沌工程原则5条黄金标准:

  • 建立关于稳态行为的假说
  • 多样化的引入现实世界的事件
  • 在生产环境中进行实验
  • 持续运行自动化实验
  • 最小化爆炸半径

稳态行为需要关键指标衡量,所以监控的关键指标就特别重要。

多样化的引入现实世界的事件,注意演练case的质量,多个视角观测,不拘役简单实现,也不忽略用户体验。

在生产环境中进行实验,其实刚起步阶段基本都是在非生产环境执行的,随着成熟度的提升,逐步在生产环境演练。

持续运行自动化实验,从最开始拉着运维手动干,逐步沉淀到混动系统中。

最小化爆炸半径,提升精准打击能力,某个集群、某个节点、某个应用、某个接口、某次调用。

通过混沌工程建立一种文化,在不确定的结果出现时保持系统的韧性。

通过混沌工程不断探索未知、将未知变为所知、提升应对不确定风险的韧性。

二、混动工程平台建设

构建蓝绿对抗平台:案例编排、演练自动化、沉淀案例、统计可视化、成熟度度量。

故障点注入
  • 注入的故障类型
  • 注入的目标服务
  • 注入的故障内容
  • 注入的故障监控

备注:例如故障监控关联日志、链路、操作记录等。

可视化统计
  • 故障演练执行CASE数量
  • 攻防成功失败CASE数量
  • 演练发现问题数量
  • 演练故障类型分布
  • 演练问题类型分布
成熟度模型
  • 成熟程度的等级
  • 引发的故障等级
  • 演练的时间范围
  • 故障的持续时间
  • 故障的恢复能力

三、精准打击实现方法

「最小化爆炸半径」 是混沌工程的5条黄金法则之一,下面梳理两种精准打击方法。

1、通过流量染色实现精准打击

下面对服务C做故障演练,例如:注入对某个方法注入超时5秒故障,此时对A服务和B服务均会造成故障。

可以通过对故障流量染色,只对属于故障演练的请求注入故障。

另外可以对iptables出口流量干扰,制造请求级故障。

2、通过输入参数控制爆炸半径

例如:通过拦截器分析入参,对输入用户ID在特定范围的请求,篡改返回参数制造故障。

四、强弱依赖自动判定

强弱依赖治理 平台能力在强弱依赖治理演进上可以考虑下:梳理强弱依赖主要是保障核心服务的稳定性 ,避免由于弱依赖服务故障对核心服务造成拖累。

服务之间的依赖:微服务之间的上下游调用形成服务之间的依赖。

强依赖:服务A调用服务B,B服务出现故障时A服务也不可用

弱依赖:服务A调用服务B,B服务出现故障时A服务仍然可用

方式一:强弱依赖人工梳理

通过走查服务代码核心逻辑,识别哪些链路接口是核心服务,哪些是非核心链路。

针对这些非核心链路逻辑能够拆分到非核心服务中去,针对非核心链路可以配置降级措施。

方式二、通过对依赖接口注入故障

步骤1:为选定服务或接口拉取依赖关系

步骤2:为接口依赖设置预判预期

步骤3:为依赖接口注入故障并引入流量

步骤4:监控指标并观测影响

步骤5:强弱依赖结果判定

五、常见通用故障Case梳理

故障类型

事项说明

节点故障

杀掉ecs节点、进程、Pod、容器、节点重启等

网络故障

网络分区、网络中断、网络丢包、网络延迟、网络阻塞、带宽限制

IO类故障

磁盘损坏、写入IO延迟、写入返回错误等、IO瞬时飙高

CPU/缓存/域名

CPU瞬时飙高、内核内存分配异常、内存/CPU使用率过高、DNS域名解析错误

集群类故障

扩缩容、频繁变更节点角色

应用类故障

请求超时、网络异常、重复请求、入参修改、返回值修改、限流熔断异常、线程池填满、频繁GC、内存溢出等

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2022-11-27,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 瓜农老梁 微信公众号,前往查看

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

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 故障点注入
  • 可视化统计
  • 成熟度模型
  • 1、通过流量染色实现精准打击
  • 2、通过输入参数控制爆炸半径
  • 方式一:强弱依赖人工梳理
  • 方式二、通过对依赖接口注入故障
相关产品与服务
混沌演练平台
混沌演练平台(Chaotic Fault Generator)提供高效便捷、安全可靠的故障演习服务,除可视化故障注入服务外,还提供行业经验模板,监控护栏等核心功能,致力于帮助用户及时发现业务容灾隐患、验证高可用预案的有效性,从而提高系统的可用性和韧性。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档