Chaosblade:云原生架构下的混沌工程实践 肖长军

2020-03-01 465浏览

  • 1.自我介绍ChaosBlade:云原生架构下的混沌 工程探索与实践 肖长军(花名:穹谷) 阿里巴巴技术专家
  • 2.自我介绍
  • 3.自我介绍 • 肖长军,花名 穹谷,阿里巴巴高可用架构团队 • 多年应用性能监控研发和分布式系统高可用架构经验 • 阿里云 AHAS、APDS 产品核心开发 • 开源项目 ChaosBlade 负责人 • 混沌工程布道师
  • 4.自我介绍 目录 1. 混沌实验工具 ChaosBlade 2. 面向云原生的混沌工程实践 3. 混沌实验平台 AHAS Chaos
  • 5.阿里巴巴混沌工程演进 自我介绍 EOS 2012 2012 2016 2015 MonkeyKing ACP 2018 2018 2019 2019
  • 6.ChaosBlade 开源的背景 自我介绍 场景能力分散 缺少场景规范 很难扩展 上手难度大 难于控制 爆炸半径 缺少实验模型 场景难于沉淀 使用方式不统一 平台适配难度大
  • 7.ChaosBlade 的定位与特点 自我介绍 ChaosBlade(混沌之刃)是一款遵循混沌实验模型,简单易用,功能强大的混沌实验工具 q 场景丰富度高 q 使用简洁,易于理解 q 动态加载,无侵入 q 场景扩展方便 Github 地址:https://github.com/chaosblade-io/chaosblade
  • 8.ChaosBlade 的基石-混沌实验模型 自我介绍 简洁,层次清晰通俗易懂 Target 实验靶点:实验的组件 四层,边界清晰 通用,覆盖目前所有故障场景 Scope Matcher Action 实验范围:集群、机器、Pod 基础资源、应用、容器或 serverless 架构 易实现,实验场景共建简单 规则匹配器:匹配条件 实验行为:具体执行的实验规则 定义清晰的接口规范 语言、领域无关 可以扩展多语言、多领域实现
  • 9.ChaosBlade 丰富的实验场景 自我介绍 基础资源 chaosblade-exec-os CPU 负载、内存占用、网络延迟/丢包/阻塞、 杀进程、宕机、重启、磁盘填充、IO Hang、IO burn、shell 脚本 Service Mesh 网关 监控度量 分布式跟踪 chaosblade-exec-jvm 应用服务 chaosblade-exec-cplus 分布式事务 消息 RPC 框架 服务发现 chaosblade-exec-nodejs chaosblade-exec-golang 缓存 熔断限流 定时任务 web容器 数据库 dubbo/hsf scgateway prometheus eagleeye 容器服务 chaosblade-exec-k8s chaosblade-exec-aliyun 云平台 chaosblade-exec-aws ECS OSS FC … 投递延迟、异常、超时、重发 调用延迟、异常、超时 nacos tair/redis 调用延迟、异常、超时、修改返回值 sentinel 限流失效、异常 quartz 请求延迟、异常 servlet druid/tddl/mysql/postgresql 连接池满、调用延迟、异常 同基础资源场景、删、停容器 kubernetes … 打标识别 seata rocketmq/notify dubbo/hsf/http 语言本身 chaosblade-exec-docker 调用延迟、异常、超时 动态脚本能力(java&groovy),内存溢出,进程 CPU 负载, 指定类和方法做延迟、异常、修改返回值、修改参数 杀 POD、停止 POD、kubelet 异常、断网、 删容器、容器服务异常、etcd 异常等;容器内应用进程、基础资源场景
  • 10.ChaosBlade 简洁易用 自我介绍 完善的命令提示 CLI 方式执行 Web 方式执行 场景使用文档:https://chaosblade-io.gitbook.io/chaosblade-help-zh-cn/
  • 11.ChaosBlade 整体架构设计 自我介绍 命令初始化 n 开箱即用,无需安装 Yaml 解析器 n 支持命令提示 n 所有变量参数化 n 所有参数规范化 n 模块化,支持动态扩展 n 对象化,方便管理 模型实现 解析器 基础资源 K8s 演练 演练 执行器 执行器 … 解 析 Java Java Yaml 执行器 实验模型对象 C++ C++ Yaml 执行器 … … CLI 命令 转换器 命令注册 (Cobra) Name Name ShortDesc ShortDesc LongDesc LongDesc Example Example Name Actions Matchers Desc Flags Flags NoArgs PreExecutor Executor Requeired
  • 12.ChaosBlade 实践案例 自我介绍 实验场景:数据库调用延迟 监控指标:慢 SQL 数,告警信息 期望假设:慢 SQL 数增加,钉钉群收到慢 SQL 告警 混沌实验:对 demo-provider 注入调用 mk-demo 数据库延迟故障 监控指标:慢 SQL 数增加,钉钉群收到告警 问题排查:通过 ARMS 慢调用链路排查 备注: 应用架构拓扑图来自于阿里云 AHAS 产品 告警和链路跟踪来自于阿里云 ARMS 产品 blade create mysql delay --time 600 --database demo --table d_discount --sqltype select --effect-percent 50
  • 13.ChaosBlade 实践案例 自我介绍 实验场景:数据库调用延迟 监控指标:慢 SQL 数,告警信息 期望假设:慢 SQL 数增加,钉钉群收到慢 SQL 告警 混沌实验:对 demo-provider 注入调用 mk-demo 数据库延迟故障 监控指标:慢 SQL 数增加,钉钉群收到告警 问题排查:通过 ARMS 慢调用链路排查 备注: 应用架构拓扑图来自于阿里云 AHAS 产品 告警和链路跟踪来自于阿里云 ARMS 产品
  • 14.混沌工程的价值 自我介绍 人员 系统 韧性-提升系统容错、容灾能力 验证系统的高可用性-架构师 提升故障的应急效率-开发&运维 基础能力-具备可监控、可灰度、可回滚 运维高可用-提升监控运维系统的高可用能力 提早暴露线上问题,降低故障复发率-测试 提升用户体验-产品&设计 故障复盘,故障统计,问题持续演练验证-故障管理 流程 故障应急-故障等级划分的合理性,联系人的有效性,紧急预案的可行性
  • 15.自我介绍 云原生时代下,混沌工程的价值是什么?
  • 16.云原生架构下的稳定性挑战 自我介绍 云设施 容器 微服务 服务网格 Serverless
  • 17.自我介绍 云原生时代下,通过混沌工程推进“云原生”化
  • 18.面向云原生场景的 ChaosBlade 实现方案 自我介绍apiVersion:chaosblade.io/v1kind:ChaosBlademetadata:name:'>name: