No.178# 混沌工程相关内容梳理
创始人
2024-04-13 21:52:50
0

引言

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

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

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

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

一、混沌工程要点梳理

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

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

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

  • 建立关于稳态行为的假说

  • 多样化的引入现实世界的事件

  • 在生产环境中进行实验

  • 持续运行自动化实验

  • 最小化爆炸半径

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

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

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

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

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

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

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

二、混动工程平台建设

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

故障点注入

  • 注入的故障类型

  • 注入的目标服务

  • 注入的故障内容

  • 注入的故障监控

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

可视化统计

  • 故障演练执行CASE数量

  • 攻防成功失败CASE数量

  • 演练发现问题数量

  • 演练故障类型分布

  • 演练问题类型分布

成熟度模型

  • 成熟程度的等级

  • 引发的故障等级

  • 演练的时间范围

  • 故障的持续时间

  • 故障的恢复能力

三、精准打击实现方法

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

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

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

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

4d9ceb3c342dc5c0127667543ade8cd5.png


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

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

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

四、强弱依赖自动判定


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

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

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

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

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

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

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

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

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

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

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

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

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

06c4c74e410e371f4ef6990a11897cb2.png


五、常见通用故障Case梳理

故障类型事项说明
节点故障杀掉ecs节点、进程、Pod、容器、节点重启等
网络故障网络分区、网络中断、网络丢包、网络延迟、网络阻塞、带宽限制
IO类故障磁盘损坏、写入IO延迟、写入返回错误等、IO瞬时飙高
CPU/缓存/域名CPU瞬时飙高、内核内存分配异常、内存/CPU使用率过高、DNS域名解析错误
集群类故障扩缩容、频繁变更节点角色
应用类故障请求超时、网络异常、重复请求、入参修改、返回值修改、限流熔断异常、线程池填满、频繁GC、内存溢出等

相关内容

热门资讯

AWSECS:访问外部网络时出... 如果您在AWS ECS中部署了应用程序,并且该应用程序需要访问外部网络,但是无法正常访问,可能是因为...
AWSElasticBeans... 在Dockerfile中手动配置nginx反向代理。例如,在Dockerfile中添加以下代码:FR...
AWR报告解读 WORKLOAD REPOSITORY PDB report (PDB snapshots) AW...
AWS管理控制台菜单和权限 要在AWS管理控制台中创建菜单和权限,您可以使用AWS Identity and Access Ma...
北信源内网安全管理卸载 北信源内网安全管理是一款网络安全管理软件,主要用于保护内网安全。在日常使用过程中,卸载该软件是一种常...
​ToDesk 远程工具安装及... 目录 前言 ToDesk 优势 ToDesk 下载安装 ToDesk 功能展示 文件传输 设备链接 ...
Azure构建流程(Power... 这可能是由于配置错误导致的问题。请检查构建流程任务中的“发布构建制品”步骤,确保正确配置了“Arti...
群晖外网访问终极解决方法:IP... 写在前面的话 受够了群晖的quickconnet的小水管了,急需一个新的解决方法&#x...
AWSECS:哪种网络模式具有... 使用AWS ECS中的awsvpc网络模式来获得最佳性能。awsvpc网络模式允许ECS任务直接在V...
不能访问光猫的的管理页面 光猫是现代家庭宽带网络的重要组成部分,它可以提供高速稳定的网络连接。但是,有时候我们会遇到不能访问光...