Skip to main content

混沌工程平台 ChaosBlade-Box 新版重磅发布

· 10 min read
蔡铭霞(铭少,@MandssS)

image.png

1. 前言

  • ChaosBlade-Box是什么?

    ChaosBlade-Box是面向多集群、多语言、多环境,阿里开源的云原生混沌工程控制台。主要功能有:统一混沌实验用户界面、混沌工程工具部署(ChaosBlade、LitmusChaos...)、支持实验场景管理和多维度实验等。

  • ChaosBlade是什么?

    ChaosBlade是遵循实验模型、简单易用、功能强大的,阿里开源混沌工程实验工具。支持多平台、多语言环境,支持从 主机系统-> 容器 -> k8s集群 -> 常用组件(ElasticSearch\Redis\Mysql...) -> 应用 (Java\Golang\C++\NodeJS...)等200多个演练场景,3000多个参数。

  • 混沌工程是什么?

    混沌工程(Chaos Engineering)是在分布式系统上进行实验的学科,通过主动注入故障的方式,提前发现系统的薄弱点,推进架构的改进,最终实现业务韧性

2021年起进入混沌工程元年,各大公司纷纷关注并投入到混沌工程的研发当中。阿里巴巴开源的混沌工程工具ChaosBlade正式成为CNCF Sandbox项目。为帮助开源用户更好地落地混沌工程,发布新版ChaosBlade-Box,以下主要介绍此次发布新版本的功能及特性。

2. 新版ChaosBlade-Box介绍

ChaosBlade-Box旨在建设统一的混沌工程操作平台,从发布以来,受到了开源社区的广泛关注。但也存在以下几个问题

  • 社区版对于k8s集群上演练的支持不足,主要表现为无法自动获取集群相关数据来进行演练应用选择、演练步骤繁琐需要手动填充集群配置信息来定位集群等,导致用户使用不够便捷
  • 社区版无法满足国际开源社区同学的使用,也对探针的管控能力不足
  • 社区版和企业版较为割裂,这使得用户体验大大降低,也使得开源用户后续转向企业版,存在较大的迁移成本,这里不止是数据迁移成本,还存在操作习惯上的迁移成本

就以上问题,对ChaosBlade-Box及Agent进行一次大的改版,将社区版与企业版内核进行融合,统一用户操作习惯,升级社区版系统架构,并增强其组件功能。

2.1 平台整体介绍

新版ChaosBlade-Box控制台是一个面向多集群、多环境、多语言的云原生混沌工程平台。支持国际化中英文切换,支持全局命名空间,使得同一用户可根据自己需求,设置不同的全局命名空间,如:测试空间、沙盒空间和线上空间等。提供自动化的工具部署,简化工具安装步骤,提高执行效率。平台支持不同环境的探针安装和演练,如主机和Kubernetes,其中Kubernetes环境下支持 Node、Pod、Container维度下的演练。在Kubernetes环境下会自动收集集群内的Pod相关数据,并在应用管理中进行统一管理,这样简化用户演练查询步骤,无需去集群内查看要演练应用的Pod名或Container名。并支持一键迁移到企业版,按需将社区版的演练数据同步到企业版。 image.png

2.2 新版演练流程

以下是在新版ChaosBlade-Box平台上进行一次演练的全过程,支持顺序执行、阶段执行两种流程编排,顺序执行指的是多个演练场景依次生效,阶段执行指的是多个演练场景同时生效。通过多种安全策略保证演练得到恢复,如手动触发和自动停止,自动停止通过在演练配置的时候设置超时参数来进行配置,这样即便平台和探针(Agent)失联,无法进行手动停止时,也能在超时时间到达的时候,自动恢复故障。

image.png image.png

3. 架构介绍

下图说明了新版本ChaosBlade的系统架构及其组件功能: image.png 组件

  • ChaosBlade-Box Console: 混沌工程控制台前端,负责前端界面交互
  • ChaosBlade-Box Server: 混沌工程控制台服务端,主要提供演练编排、场景管理、演练工具托管和一键迁移等功能
  • Agent: 混沌工程探针,主要用于数据收集和演练命令下发执行
  • ChaosBlade: 混沌工程实验工具,支持主机、docker和k8s等不同的环境

4. 新版优势

4.1 ChaosBlade-Box功能升级

新版社区版的控制台相较于老版控制台,有以下的功能升级:

1)国际化 支持国际化的中英文切换

2)命名空间切换 支持全局的空间切换,使得同一用户可根据自己需求,设置不同的全局命名空间,如:测试空间、沙盒空间和线上空间等

3)更为流畅的演练编排 流畅编排和企业版的演练流程编排保持一致,支持同时多个故障演练的并行或串行的演练流程

4)完善的应用管理 提供了更为完善的应用管理功能,同时支持在主机和k8s环境下部署的应用,包括了:应用概览、机器列表、演练记录和应用配置等。

5)无缝迁移 与企业版的操作界面保持一致,并提供了一键迁移功能,能将探针自动替换成公有云探针,将演练机器注册到企业版中,并将演练数据同步到企业版。轻松简单切换到企业版中。

6)安全 多种故障恢复策略,保证下发演练可恢复

7)多环境部署 支持不同环境下的部署方式,包括主机、docker、k8s等

8)层次分明的演练场景 对演练场景进行分类展示,在创建演练时,会根据选定演练目标不同,而实时展示不同分类展示的可演练场景

4.2 Agent(探针)功能升级

新版本探针(Agent)相较于老版本,有了较为多 的功能提升:

1)支持不同环境演练通道 支持在不同环境作为演练命令下发通道,简化了老版在k8s环境下,需要指定集群的kubeconfig来进行演练

2)更为完善的API 统一了探针对外API接口,方便扩展与对接

3)数据自动收集并上报 新增在k8s环境下,将k8s相关数据进行上报到控制台的服务端,用于在k8s环境下,方便用户选择演练目标

4)探针自动卸载 新增了探针自动卸载接口,直接在控制台直接控制探针安装与卸载

5)持续保活 增加探活脚本,保障探针进程持续存活

6)多环境部署 支持不同环境下的部署方式,包括主机、docker、k8s等

5. 总结

混沌工程 -- 保障系统高可用的手段之一,ChaosBlade作为国内第一家开源的混沌工程工具,得到了广泛应用,在2021年开源ChaosBlade-Box(混沌工程控制台),旨在助力社区版混沌工程落地,纳管不同开源的故障注入工具,建设统一的混沌工程操作平台。此次新的版本无论是在用户界面的使用上,还是功能实现上都有很多的提升,让用户更简单、更方便的使用,并落地混沌工程。

6. 推荐社区

[1] chaosblade-box: https://github.com/chaosblade-io/chaosblade-box [2] chaosblade-box-agent: https://github.com/chaosblade-io/chaosblade-box-agent [3] chaosblade: https://github.com/chaosblade-io/chaosblade

欢迎钉钉搜索群号 23177705 加入 CNCF chaosblade 社区交流钉群!