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

本文涉及的产品
Serverless 应用引擎 SAE,800核*时 1600GiB*时
性能测试 PTS,5000VUM额度
简介: 从早期的单机架构到微服务架构,再到现在的云原生架构,系统架构越来越复杂。在这样复杂的系统架构里如何快速定位问题,或将问题前置以提前暴露解决从而提高整个系统的韧性,变得尤为重要。

混沌工程平台ChaosBlade-Box

新版重磅发布

——蔡铭霞

ChaosBlade Maintainer

一、混沌工程是什么

image.png

2020 11 月,AWS 服务大面积故障,多个云服务受到影响,最终问题定位花费 4 小时,完全修复花费 15 小时。在不到一月时间里,谷歌出现了当年第三次大规模宕机,持续45 分钟,波及 20 亿用户,预估损失 170 万美元广告收入。


从早期的单机架构到微服务架构,再到现在的云原生架构,系统架构越来越复杂。在这样复杂的系统架构里如何快速定位问题,或将问题前置以提前暴露解决从而提高整个系统的韧性,变得尤为重要。

image.png

混沌工程通过主动注入故障的方式来暴露系统薄弱点,从而提高系统韧性一种方法。


云原生架构的原则可以与混沌工程原则实现多对多匹配。


以服务化原则为例,服务化潜在挑战是服务如何治理,也可以转化为强弱依赖问题,即服务之间是强依赖还是弱依赖。混沌工程通过不断最小化其爆炸半径,从机器到应用再到某个接口,通过对应用接口进行故障注入判断服务之间的调用是否正常,最终判断其依赖关系是强还是弱。

image.png

混沌工程的目标是打造韧性架构,包括韧性系统韧性组织两个维度


韧性系统包括冗余性、扩展性、不可变基础设施以及避免级联故障。比如,系统有多个单元或集群,对某单元或集群进行断网演练,通过整个系统是否能够自动扩展或自动扩缩容,是否能够正常提供服务来判断其是否具有冗余和扩展性。


韧性组织指高效交付效率、面向失败设计和应急响应机制。阿里内部主要通过1-5-10演练以及红蓝攻防演练来不断打造组织的韧性。


综上所述,混沌工程即通过主动注入故障的方式,提前发现系统薄弱点,推进架构改进,最后实现业务韧性。

image.png

混沌工程对于不同身份都能够带来不同的业务价值:对于价架构师而言,它可以验证系统架构的容错能力;对于开发或运维而言,它能够不断提高故障应急效率;对于测试人员而言,它能够提早暴露线上问题,降低故障复发率;对于产品和设计而言,它能够提高提升客户体验。


二、如何落地混沌工程


企业或业务如何快速落地混沌工程?

可以通过混沌工程实验实施工具 ChaosBlade

image.png

ChaosBlade 提供了 3+4 环境、200+ 场景以及 3000 + 参数。3+4 环境能够支持在 Linux 环境、Linux 环境的物理机或虚拟机上、 Docker 以及 K8S 环境下进行部署,支持 JavaC++Node.js 等不同应用层的故障注入。


ChaosBlade 是一个端侧工具,在业务实际落地过程中还会遇到其他问题,比如如何方便地、可视化地进行故障注入,如何对多个集群进行故障注入,如何整体演练统计信息等。想要解决上述问题,需要在故障注入工具层上再加一层平台侧来管控和编排这些演练工具,从而帮助企业进行落地。

image.png

上图为 ChaosBlade 新版开源平台架构。主要分为前端用户界面交互层、后端逻辑处理层、部署在不同业务集群或业务主机上Agent 层以及端侧故障注入工具ChaosBlade


后端服务侧包括以下几个部分:

  • 演练引擎:包括流量编排、安全管控、演练报告等功能。
  • 演练执行:能够支持不同工具,不仅支持 ChaosBlade,也支持开源工具LitmusChaos
  • 演练经验库:将演练编排沉淀成经验库,供其他人复用。
  • 探针管理:支持主机和 K8S 不同环境下部署,并且能够对探针进行自动安装部署以及应用管理功能。

探针侧主要提供以下几个功能:

  • 对外提供 API 接口。
  • server 侧进行注册建联。
  • server 保持心跳。
  • 上报 k8s pod 数据。
  • 作为演练命令下发通道。

image.png

上图为新版ChaosBlade 平台概览。此次新版ChaosBlade支持中英文切换、全局命名空间切换,提供了快速启动导航,能够对演练记录进行统计以及提供演练日志大屏。


演练空间指对演练进行管理与统计,并且可以进行演练编排和故障注入。演练场景罗列了支持的所有演练场景,演练经验库即将历史演练沉淀为经验库,探针管理会对对探针上报的数据在应用管理侧进行统一管理,以及对探针进行自动安装和卸载等管理,支持主机和 k8s 环境。一键迁移功能支持从社区版一键迁移到企业版。

image.png

应用管理支持主机和k8s两种环境。在 k8s环境下,能够主动收集 Pod 相关数据,根据 pod 标签判断其属于哪一些应用并进行自动分类,不再需要获取集群上所有 pod 信息或 content 信息再进行演练,无须手动填写参数,而是以自动填充或选择和筛选的方式取而代之。

image.png

演练场景包括k8s和主机,可以分为系统资源和 Java 应用资源。演练经验库能够将之前编排好演练沉淀为演练经验库,供其他用户复用。

image.png

新版ChaosBlade-Box 演练流程如下:首先需要选择k8s 主机演练,k8s 又分为应用和非应用演练。应用演练可以通过应用管理来筛选具体的应用,此处选择非应用。然后选择集群,再选择演练场景。演练场景包括两种,分别是节点上 CPU 满载以及节点上网络乱序。


演练可支持两种编排模式,分别是顺序执行和阶段执行。顺序执行指先执行 CPU 满载再对 CPU 满载进行恢复,再进行网络乱序对网络乱序进行恢复,两种故障依次生效;阶段执行指同时进行 CPU 满载和网络乱序,执行生效后再进行恢复,两种故障同时生效。

image.png

执行演练后可查看演练结果,如上图。页面上方展示演练整体进度,支持自动停止和手动触发两种方式终止演练,能够避免因为系统问题导致演练意外故障而无法停止演练。比如可以设置为 15 分钟后自动恢复,如果server 端与 agent 失联,即使平台侧无法点击手动恢复按钮,可以通过设置好的 15 分钟自动恢复策略自动恢复。


页面展示的结果确认包括执行结果、错误信息、执行日志以及配置参数。

image.png

新版 ChaosBlade-box 还支持从社区版到企业版一键迁移,可将数据同步到企业版。


三、新版优势是什么?

image.png

新版 ChaosBlade 与企业版进行了内核统一,其优势主要体现在以下三个方面:


用户前端界面与企业版进行统一,支持更完善的中英文切换,并且支持命名空间切换。


后端侧提供了更流畅的演练编排、更完善的应用管理以及更好的对探针的管控。此外,还包括多种故障恢复策略以保障安全可恢复,支持一键迁移到社区版。


Agent 侧支持了多环境部署,支持不同环境演练通道,提供了更加完善的 API ,支持自动安装和卸载功能,能够主动收集数据并上报 server 端。

 

相关实践学习
容器服务Serverless版ACK Serverless 快速入门:在线魔方应用部署和监控
通过本实验,您将了解到容器服务Serverless版ACK Serverless 的基本产品能力,即可以实现快速部署一个在线魔方应用,并借助阿里云容器服务成熟的产品生态,实现在线应用的企业级监控,提升应用稳定性。
云原生实践公开课
课程大纲 开篇:如何学习并实践云原生技术 基础篇: 5 步上手 Kubernetes 进阶篇:生产环境下的 K8s 实践 相关的阿里云产品:容器服务 ACK 容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情: https://www.aliyun.com/product/kubernetes
相关文章
|
Kubernetes 前端开发 Cloud Native
混动工程平台 ChaosBlade-Box 新版重磅发布 | 学习笔记
快速学习混动工程平台 ChaosBlade-Box 新版重磅发布
763 0
混动工程平台 ChaosBlade-Box 新版重磅发布 | 学习笔记
|
1月前
|
Kubernetes 安全 Go
对于阿里开源混沌工程工具chaosblade-box-agent心跳报错问题的分析与解决
摘要: 本文记录了一个由chaosblade-box平台后台发现的偶发的chaosblade-box-agent不发送心跳的问题,从报错日志入手,结合chaosblade-box-agent源码进行分析,最终解决问题并修复打包的过程。
247 7
|
30天前
|
人工智能 Kubernetes Cloud Native
ChaosMeta V0.7.0 版本发布 & 进入CNCF混沌工程全景图
混沌工程 ChaosMeta 的全新版本 V0.7.0 现已正式发布!该版本包含了许多新特性和增强功能,在编排界面提供了多集群管理,在代码层面支持多命令下发通道的选择。另外由蚂蚁集团发起的ChaosMeta于北京时间2024年1月10日正式进入CNCF混沌工程全景图。
38 0
|
1月前
|
tengine 算法 安全
ChaosBlade 是阿里巴巴开源的混沌工程工具
【2月更文挑战第23天】ChaosBlade 是阿里巴巴开源的混沌工程工具
63 1
|
9月前
|
Kubernetes 监控 Cloud Native
蚂蚁集团混沌工程 ChaosMeta V0.5 版本发布
ChaosMeta V0.5 版本包含了许多新特性和增强功能,为用户提供了支撑混沌工程各个阶段的平台能力,以及降低使用门槛的用户界面
305 0
蚂蚁集团混沌工程 ChaosMeta V0.5 版本发布
|
7月前
|
监控 数据可视化 网络协议
自动化混沌工程 ChaosMeta V0.6 版本发布
混沌工程 ChaosMeta 的全新版本 V0.6.0 现已正式发布!新增了DNS异常、日志注入等故障能力,并且在可视化编排界面中提供了对流量注入、度量等各类节点的支持,提供自动化混沌工程的支撑能力。
412 0
自动化混沌工程 ChaosMeta V0.6 版本发布
|
运维 监控 JavaScript
如何用一个插件解决 Serverless 灰度发布难题?
灰度发布又称为金丝雀发布( Canary Deployment )。对于部署在 Serverless 平台上的函数应该怎么进行灰度发布呢?
|
自然语言处理 Kubernetes Cloud Native
混沌工程平台 ChaosBlade-Box 新版重磅发布
混沌工程(Chaos Engineering)在分布式系统上进行实验的学科,通过主动注入故障的方式,提前发现系统的薄弱点,推进架构的改进,最终实现业务韧性。从而避免故障在线上运行环境上发生。
混沌工程平台 ChaosBlade-Box 新版重磅发布
|
自然语言处理 Kubernetes Cloud Native
混沌工程平台 ChaosBlade-Box新版重磅发布
故障演练(Chaos)是云原生混沌工程平台,提供了大规模、低成本、影响可控、形式多样化的故障演练服务。Chaos 提供一站式架构分析、故障巡检、故障注入、系统稳态度量等功能,帮助用户增强分布式系统的容错性和可恢复性,帮助系统平稳上云。
混沌工程平台 ChaosBlade-Box新版重磅发布
|
容器 Cloud Native Perl
面向云原生的混沌工程工具-ChaosBlade
作者 | 肖长军(穹谷)阿里云智能事业群技术专家   导读:随着云原生系统的演进,如何保障系统的稳定性受到很大的挑战,混沌工程通过反脆弱思想,对系统注入故障,提前发现系统问题,提升系统的容错能力。ChaosBlade 工具可以通过声明式配置执行混沌实验,简单高效。