Upgrade to Pro — share decks privately, control downloads, hide ads and more …

ChaosBlade紹介[中国語]

 ChaosBlade紹介[中国語]

Chaos Engineering 2021/06/10 勉強会で発表資料
https://cnt.connpass.com/event/215331/

成臣 Chengchen

June 14, 2021
Tweet

More Decks by 成臣 Chengchen

Other Decks in Education

Transcript

  1. 自我介绍 • 肖长军,花名 穹谷 • 曾就职于搜狐、OneAPM • 阿里云云原生高可用架构团队 • ChaosBlade

    Founder&Maintainer • AHASChaos Founder&Maintainer • 混沌工程咨询师&布道师
  2. ChaosBlade 项目演进 Chaos 平台 Java Agent Shell 脚本 Handler Filter

    Listener Action Rule Taskset OpenSSL Curl Sandbox 代 码 耦 合 命 令 依 赖 应用进程 修改 JVM 启动参数 Java Agent ASM 插件接口规范 网络延迟 网络丢包 CPU 满载 CPU 网络 「统一参数」 Go 代码实现 调用 tc/pfctl Chaos/chaosblade-box 平台 ChaosBlade Executors 小程序 Executors Chaos 平台 ChaosBlade Java Agent OS Tools Kubernetes Operator 小程序 托管... ... ...
  3. 混沌实验模型-场景列举 Java Dubbo TDDL OS Network Disk 容器 服务 Kubernetes

    Docker 服务名、 版本号等 数据库名、 数据库操作等 网卡 磁盘 资源类型、名称 容器 ID 宿主机 VM 容器 集群 延迟 抛异常 线程池满 丢包 磁盘满 删除 停止
  4. 混沌实验模型-模型推导 10.0.0.1 磁盘 A 磁盘 磁盘满 所有节点 Dubbo 服务 B

    服务 延迟 Kubernetes A 集群 M 节点 CPU 满载 全部的核 Kubernetes B 集群 N Pod 网络 丢包 CNI网卡 故障范围 故障组件 具体故障点 故障行为
  5. 实验模型意义&应用 n更精准的描述混沌实验场景 n更好的理解混沌实验注入 n方便沉淀现有的实验场景 n依据模型发掘更多的场景 n混沌实验工具更加规范、简洁 n基于模型实现更多上层能力 Comcast 模拟常见网络问题的开源工具 使用模拟丢包命令如下:

    comcast --device=eth0 --packet-loss=10% --target-addr=10.0.0.0/24 --target-port=80,22,1000:2000 混沌实验模型: • Target: network • Host: 127.0.0.1 • Matcher: • device: eth0 • target-addr: 10.0.0.0/24 • target-port: 80,22,1000:2000 • Action: packet-loss • percent: 10 模型在集团多语言、多领域实现: n淘系 NodeJS 应用 n阿里妈妈 C++ 应用 n闲鱼 Dart 应用 n容器平台演练 n阿里云CDN等应用 模型 转换 意义: 应用: q 混沌实验模型使实验场景变量参数化, 参数规范化 q 可遵循模型实现实验场景领域化的水平 扩展 q 可将混沌实验模型和领域内标准化实现 相结合,便捷实现领域内场景垂直扩展 q 上层的领域场景可以复用遵循混沌实验 模型定义的场景 q 通过混沌实验模型声明的场景描述可以 很好的接入到 chaosblade cli 中 q 遵循实验模型可以很方便的构建上层混 沌实验平台 q 基于实验模型实现混沌实验工具托管
  6. chaosblade 技术架构 blade ChaosBlade Operator Container/Pod Node ChaosBlade CR watch

    channel deploy/manage Command Parser Experiment Executor Kubernetes Executor OS Executor Java Executor CPU Memory Kernel Network Disk ... JVM-Sandbox Java Agent Other Executors...
  7. chaosblade CLI Java 执行器 Java Yaml C++ 执行器 C++ Yaml

    … … 命令初始化 Yaml 解析器 转 换 CLI 命令 转换器 命令注册 (Cobra) 实验模型对象 Name ShortDesc LongDesc Example Actions Flags PreExecutor Name ShortDesc LongDesc Example Matchers Flags Executor Name Desc NoArgs Requeired 解析 注 册 基础资源 Yaml 基础资源 执行器 K8s Yaml K8s Operator Docker Yaml Docker 执行器 解析 n开箱即用,无需安装 n支持命令提示 n所有变量参数化 n所有参数规范化 n模块化,支持动态扩展 n对象化,方便管理
  8. 开源 Java 执行器 blade create mysql delay --time 600 --database

    demo --table d_discount --sqltype select --effect-percent 50
  9. 开源 Java 执行器-动态脚本 blade c jvm script --classname com.example.controller.DubboController --methodname

    getPets --script-file src/main/java/com/alibaba/csp.monkeyking/controller/ChaosController.java --script-name exception
  10. 开源 Kubernetes 执行器 ChaosBlade Operator apiVersion: chaosblade.io/v1alpha1 kind: ChaosBlade metadata:

    name: cpu-load spec: experiments: - scope: node target: cpu action: load desc: “node cpu 50% load” matchers: - name: names value: [”cn-hangzhou.192.168.0.205”] - name: cpu-percent value: “50” apply scope: node scope: container scope: pod copy Pod ChaosBlade Pod sidecar Container Node chaosblade ChaosBlade CR
  11. Kubernetes 下使用案例 blade ChaosBlade Operator Container/Pod Node apiVersion: chaosblade.io/v1alpha1 kind:

    ChaosBlade metadata: name: dubbo-delay spec: experiments: - scope: container target: dubbo action: delay desc: “dubbo consumer service delay” matchers: - name: names names value: [”demo-consumer-7979c55648- qpmcq”] - name: container-names value: [”demo-consumer ”] - name: service value: [”com.demo.service.PetQueryService”] - name: time value: 3000 - name: process value: [”demo-consumer”] ChaosBlade CR watch channel deploy/manage Command Parser Experiment Executor kubectl apply Kubernetes Executor create 举例: 云原生 Dubbo 应用调用下游 PetQueryService 服务延迟三秒。使用 chaosblade 自带 的 blade 工具或 kubectl 以及编码的方式都可以执行. blade create k8s container-dubbo delay --process demo-consumer --time 3000 --service com.demo.service.PetQueryService --names demo-consumer-7979c55648-qpmcq --container-names demo-consumer --kubeconfig ~/.kube/config blade create dubbo delay --process demo-consumer --time 3000 --service com.demo.service.PetQueryService
  12. chaosblade-box 介绍 关键功能 Ø 支持实验工具托管 Ø 实验工具自动化部署 Ø 统一实验用户界面 Ø

    实验目标自动获取 Ø 支持多维度实验 Ø 支持实验场景管理 Ø 支持混沌工程闭环 面向多环境、多集群、多语言的云原生混沌工程平台
  13. chaosblade-box 技术架构 Chaos Monitor Target Explorer chaosblade-box Console Deployment Proxy

    Chaos Tools Platform Supported Chaos Executor Scenario Explorer Chaos Reporter Collect Platform Resources to Explorer Report Import Scenarios to Explorer Deploy Tools to Platform Invoke Chaos Tools for Chaos Collect Metrics for Monitor and Reporter Account Manager Environment Manager OpenAPI
  14. 集团、商业化、开源 CNCF Sandbox 项目,标 准演练模型,平台可托管 行业混沌工程工具 标准 提供集成与被集成能力 开放 开

    源 更低门槛 丰富场景 流程闭环 安全可控 可观可控 开箱即用 能力开放 生态集成 集团内 商业化 故障演练产品 公共云 混合云 1.多年内部实践沉淀 2.丰富场景,集成演练上 下游生态系统 3. 满足大规模、多业务、 多团队演练诉求 安全生产 阿里巴巴混沌工程产品优势 应用高可用服务 领域沉淀深厚:6年打磨,多年双十一验证,阿里集团大规模(单次 20万+服务器不可用)故障模拟能力验证;开源产品被工商银行、浙 江移动、中国电信、小米集团、携程&去哪儿、滴滴、哔哩哔哩等 43 家企业客户;商业化产品被 华泰证券等大规模使用,国内唯一 混沌工程商业化产品 支撑商业形态丰富:覆盖电商、物流、云计算、新零售、新金融、 文娱、出行、政务等众多行业 领域实践多样化:覆盖高可用能力验证、资损防控能力验证、应急 能力验证、预案能力验证,以及搬站上云/机房选址等多场景 产品支持场景丰富: 支持多操作系统(Linux/Windows),多集群故障注入能力 原子故障场景支持200+,覆盖3000+参数 解决方案覆盖微服务演练、容器演练、中间件演练及容灾演练 支持系统依赖自动梳理、服务自动发现,架构多视图可视化等 售卖模式:多种商业产品&咨询服务规格,自由搭配