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

Razor

2019/10/19 发布于 技术 分类

文字内容
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/v1 kind: ChaosBlade metadata: name:'>name: cpu-load spec: experiments: - scope:'>scope:'>scope:'>scope: node target: cpu action: load desc: “cpu 50% load” flags: - name:'>name: cpu-percent value: “50” Node ChaosBlade ChaosBlade CR apply ChaosBlade Operator Pod d po : pe o c s scope:'>scope:'>scope:'>scope: container Volume ChaosBlade 声明式实验场景配置 scope:'>scope:'>scope:'>scope: node ChaosBlade sidecar Pod mount Container
19. 面向云原生架构的 ChaosBlade 实践案例 自我介绍 实验场景:随机删除业务 Pod,验证业务的稳定性 监控指标:业务指标和 Pod 数 期望假设:业务不受影响,Pod 副本数在预期之内 混沌实验:随机删除包含 system=demo 标签的 Pod,同类 Pod 删除数量为 1 验证结果:业务受影响,不符合预期 apiVersion: chaosblade.io/v1 kind: ChaosBlade metadata: name:'>name:'>name:'>name:'>name:'>name:'>name:'>name:'>name:'>name:'>name:'>name:'>name:'>name:'>name:'>name: random-delete-pods spec: experiments: - scope: pod target: pod action: delete desc: “delete business pods randomly” flags: - name:'>name:'>name:'>name:'>name:'>name:'>name:'>name:'>name:'>name:'>name:'>name:'>name:'>name:'>name:'>name: mode value:'>value:'>value:'>value:'>value:'>value:'>value:'>value: random - name:'>name:'>name:'>name:'>name:'>name:'>name:'>name:'>name:'>name:'>name:'>name:'>name:'>name:'>name:'>name: count value:'>value:'>value:'>value:'>value:'>value:'>value:'>value: “1” Matchers: - name:'>name:'>name:'>name:'>name:'>name:'>name:'>name:'>name:'>name:'>name:'>name:'>name:'>name:'>name:'>name: selector value:'>value:'>value:'>value:'>value:'>value:'>value:'>value: “system=demo” - name:'>name:'>name:'>name:'>name:'>name:'>name:'>name:'>name:'>name:'>name:'>name:'>name:'>name:'>name:'>name: groupKey value:'>value:'>value:'>value:'>value:'>value:'>value:'>value: “app”
20. 自我介绍 混沌实验平台 AHAS Chaos
21. AHAS Chaos 平台设计理念 自我介绍 集成&被集成 操作简洁 编排灵活 专家经验
22. AHAS Chaos 平台架构设计 自我介绍 上层业务 平台模块 流程引擎 日常 演练 突袭 演练 权限管理 机器集群管理 应用管理 标签管理 演练空间 演练管理 演练运行 演练通知 演练推荐 演练计划 场景分类 场景检索 场景扩展 场景配置 演练报表 流程编排 底层能力 攻防 演练 资损 演练 上云 演练 流程执行 … 节点扩展 小程序 ChaosBlade 应用高可用服务 AHAS 基础设施 阿里云 ACK 自建的 Kubernetes 阿里云 ECS 非 ECS
23. 面向云原生架构的 AHAS Chaos 实践案例 自我介绍 实验场景:调用数据库延迟,验证 Pod 的水平扩容能力 监控指标:业务 RT 和 Pod 数 期望假设:业务 RT 会短暂的升高,但很快恢复 混沌实验:对指定的业务 Pod 做数据库端口访问延迟
24. 总结回顾 自我介绍 q 通过混沌工程能推进系统“云原生化” q 混沌实验模型适用目前所有场景,简单清晰 q ChaosBlade 除简洁易用外,也支持云原生场景 q AHAS Chaos 平台使企业实施混沌工程更加简单
25. 自我介绍
26. 自我介绍