蚂蚁集团混沌工程 ChaosMeta V0.5 版本发布
混沌工程 ChaosMeta 的全新版本 V0.5 现已正式发布!该版本包含了许多新特性和增强功能,为用户提供了支撑混沌工程各个阶段的平台能力,以及降低使用门槛的用户界面。
ChaosMeta V0.5 核心新特性介绍
当前版本主要是发布了平台界面组件(chaosmeta-platform)、度量组件(chaosmeta-measure-operator)以及流量注入组件(chaosmeta-flow-operator)。
▌平台界面
提供产品层操作界面方便用户更友好地使用 ChaosMeta 产品功能,当前产品层功能主要有:
1.空间管理:根据组织或活动隔离数据,确保数据的安全性和隐私性。
2.用户权限管理:为不同角色提供访问权限的控制,可有效管理混沌工程实验的使用。
3.编排实验:通过拖拉拽可视化操作,使实验编排更加友好和灵活,提高用户的工作效率。
4.实验结果:提供实验执行详情的追溯功能,让用户随时了解实验的执行情况和结果,方便用户进行数据分析和决策。
▌度量引擎
当前包括 4 种度量能力:
- monitor:对监控项的值进行预期判断,比如某个机器的 cpu 使用率监控值是否大于90%,默认支持prometheus
- pod:对 pod 相关数据进行预期判断,比如某个应用的 pod 实例数是否大于3
- http:对 http 请求进行预期判断,比如进行指定的 http 请求时,返回状态码是否为200
- tcp:对 tcp 请求进行预期判断,比如测试某个服务器的 8080 端口是否能通
▌流量引擎
当前流量注入的能力只实现了 HTTP 流量类型的注入,后续会逐步补充 RPC、DB client、redis client 等其他类型的流量注入能力。底层实现是基于开源组件 jmeter 实现的,每个流量注入任务启动一个 jmeter 的 job 执行。
ChaosMeta 核心设计理念
ChaosMeta 设计上主要是想要解决下面几个业界内普遍存在的问题:
混沌工程演练各个阶段的能力整合
当前业界主流混沌工程项目主要都是只关注如何制造故障的问题,而经常做演练相关工作的工程师,应该明白每次演练还有以下重复性工作的痛点:检测当前环境是否符合演练预设条件(演练准入)、业务流量是否满足(流量注入)、注入后判断故障效果是否符合预期(故障度量)、是否在预设时间内恢复了业务服务(恢复度量)、复盘分析总结风险点。
基于业界现状和上面的问题分析,结合蚂蚁集团在混沌工程领域的多年经验,ChaosMeta 平台从设计上覆盖了“准入检测”、“流量注入”、“故障注入”、“故障度量”、“恢复度量”、“注入恢复”等各个阶段的技术支撑,解放各阶段的人力。
故障实验设计的经验可复用性
我们在做混沌工程演练前,还有一个会消耗大量人力的工作,那就是在演练实验的设计上。这一部分当前主要还是得依靠人的设计能力,目前很难完全依赖机器去自动设计。但是我们可以把其中的可复用经验系统化抽象出来,整理成册,在对同一类组件进行混沌工程演练的时候,就可以快速复用起来,这个就是风险目录的设计初衷。
风险目录前期主要是以理论的方式开源,后期会以平台能力的方式内置到 ChaosMeta 项目中。
云原生基础设施的环境复杂性
当前大部分公司的基础设施环境都是在 Kubernetes 上的,无论是云自身还是云原生应用的稳定性都是至关重要的,传统的故障注入手段可能难以解决问题。为此我们希望 ChaosMeta 能从设计上解决以下问题:
对 Kubernetes 自身稳定性的故障注入能力
主要是围绕 Kubernetes 自身的稳定性,比如 APIServer、Scheduler 等核心组件,各类资源的状态异常处理流程,Operator 应用的异常等- 平台支持云原生部署ChaosMeta 设计上是基于 operator 开发的云原生架构(详见用户文档),因此天然支持云原生环境的部署
平台支持管理云上容器并进行故障注入
如果使用传统的方式对容器进行故障注入,需要把单机故障注入工具传输到目标容器内并执行命令,但是一般的业务容器的基础镜像都是极简版的,很多命令工具比如 tc、fallocate等都不支持,导致容器故障注入被环境因素受限过大。ChaosMeta 使用“容器化注入”的方式对集群内的 Pod 以及 Node 进行故障注入,单机故障注入工具chaosmetad 支持对宿主机上的容器进行故障注入,而不需要把 chaosmetad 拷贝到容器内,通过在宿主机上选择性进入目标容器的目标 linux namespace,达到使用宿主机的工具对容器的相应 namespace 产生异常的效果
平台支持管理云下容器并进行故障注入
每个公司都还有很多还没上云的业务,这类业务要么是在普通的物理机/虚拟机上部署,要么是在此基础上裸容器启动的(比如 docker 容器)。这个时候也需要平台能支持管理这部分集群外的目标,ChaosMeta 的单机故障注入工具 chaosmetad 支持以 agent 模式启动,定时上报机器的容器信息到平台中,平台可以直接选择集群外的目标下发故障注入任务。
多集群管理
虽然我们推荐每个集群部署一个管控平台,但是仍然有很多用户换机是希望能集中式管理的,ChaosMeta 的平台能力设计上也是支持管理不同集群的 kubeconfig 以及跨集群进行故障注入的。
可自动化的道路
平台技术的最后目标都是希望能解放人力,往自动化、智能化的方向演进的,或许当前还没能完全做到,但是至少需要走在正确的道路上。
ChaosMeta 的自动化混沌工程思想主要是以混沌工程演练的各阶段平台能力为技术支撑,“风险目录”作为理论支撑,使 ChaosMeta 朝着自动化混沌工程的方向逐步演进。
2023 年 roadmap
今年的目标主要是把平台能力进行完善,并且各阶段的基本能力都补全,还会跟其他开源社区(比如 OceanBase、SOFA 等)进行进一步的合作,争取达到 1.0 完整版。
平台能力
- 支持全部编排节点类型的能力
- 内置一些开源组件的通用实验模板
- 提供 Agent 管理界面,管理云上以及云下的物理机以及容器
- 支持跨集群管理
各阶段基本能力
- 流量注入能力,基于 jmeter 提供更多的流量注入能力
- 度量能力,提供更多云原生方向的状态度量能力
- 故障注入能力,主要往组件级别的故障注入能力上演进,比如集成对 OceanBase、MySQL、Redis、Etcd 等开源组件的故障注入能力
- 风险目录正式对外开源理论版本,内置到 ChaosMeta 平台中的能力主要以上述的“通用实验模版”以及“组件级别的故障注入能力”两种方式。
加入我们
作为一个开放的项目,我们认可开源的研发模式,并致力于将 ChaosMeta 社区打造成一个开放和有创造力的社区。后续,所有的研发、讨论等相关工都会在社区透明运行。
我们欢迎任何形式的参与,包括且不限于提问、代码贡献、技术讨论、需求建议等。期待收到社区想法和反馈,以推动项目往前进一步发展。
如果对我们的项目或者设计理念感兴趣,请 star 我们的项目给予支持。
项目 GitHub 地址:https://github.com/traas-stack/chaosmeta
官方文档:https://chaosmeta.gitbook.io/chaosmeta-cn
微信群:请添加负责人好友(微信号:KingsonKai)邀请入群
钉钉群:21765030887
也欢迎大家关注 ChaosMeta 公众号(ChaosMeta混沌工程),项目最新动态我们都会在这里发布。
蚂蚁集团混沌工程 ChaosMeta V0.5 版本发布的更多相关文章
- COMCMS v0.9 版本发布,带前后端的一个响应式企业站
前言:踏入十二月,人生也即将进入下一个阶段. 最近忙于其他,代码也是偶尔更新.目前算是0.9的版本,就是基本上可以完成一个简单的企业站/博客的功能. 主要特点:前台完整演示:文章.产品.留言.界面响应 ...
- 好玩又实用,阿里巴巴开源混沌工程工具 ChaosBlade
减少故障的最好方法就是让问题经常性的发生.在可控范围或环境下,通过不断重复失败过程,持续提升系统的容错和弹性能力. 那么,实施一次高效的混沌工程实验,需要几步呢? 答案:2 步. ① 登陆 Chaos ...
- 在 Ali Kubernetes 系统中,我们这样实践混沌工程
在传统的软件测试中,我们通常通过一个给定的条件来判断系统的反馈,通过断言来判断是否符合预期,测试条件和结果通常比较明确和固定.而混沌工程,是通过注入一些“不确定”因素,象放进了一群淘气的猴子,在系统资 ...
- 一线实践 | 借助混沌工程工具 ChaosBlade 构建高可用的分布式系统
在分布式架构环境下,服务间的依赖日益复杂,可能没有人能说清单个故障对整个系统的影响,构建一个高可用的分布式系统面临着很大挑战.在可控范围或环境下,使用 ChaosBlade 工具,对系统注入各种故障, ...
- [UE4]把工程升级到最新版本
右键UE4工程文件,选择“Switch Unreal Engine version...” 确定后,再次双击打开工程升级到最新版本了.
- 面向云原生的混沌工程工具-ChaosBlade
作者 | 肖长军(穹谷)阿里云智能事业群技术专家 导读:随着云原生系统的演进,如何保障系统的稳定性受到很大的挑战,混沌工程通过反脆弱思想,对系统注入故障,提前发现系统问题,提升系统的容错能力.Ch ...
- China .NET Conf 2019-.NET技术架构下的混沌工程实践
这个月的8号.9号,个人很荣幸参加了China.NET Conf 2019 , 中国.NET开发者峰会,同时分享了技术专题<.NET技术架构下的混沌工程实践>,给广大的.NET开发小伙伴介 ...
- STM32F429的新版用户手册更新记录, 改进、交流(2019-08-18发布V0.9版本)
2019-06-16 发布首版V0.1 2019-06-23 发布V0.2版本 新增章节: 第3章 STM32F429 整体把控 第4章 STM32F429 工程模板建立(MDK5) 第5章 STM3 ...
- [译][ABP vNext]ABP CLI,v0.18版本的新模板和其他功能
ABP CLI,v0.18版本的新模板和其他功能 ABP v0.18已发布, 包含解决的70+个issue,500+次提交 网站更改 abp.io网站完全更新以突出ABP框架的目标和重要功能.文档和博 ...
- Chaos Engineering 混沌工程 Chaos Monkey vs Chaos xxx vs Chaos Blade
Chaos Engineering的历史.原则以及实践https://www.infoq.cn/article/chaos-engineering-the-history-principles-and ...
随机推荐
- Mybatis查询
查询 查询的数据为单条实体类 使用实体类进行接受即可,或者使用list,map接口均可.后面两者比较浪费 使用实体类接受 mapper接口: User selectUserById(int useri ...
- Simple Factory Pattern 简单工厂模式简介与 C# 示例【创建型】【设计模式来了】
〇.简介 1.什么是简单工厂模式? 一句话解释: 客户类和工厂类严格分工,客户类只需知道怎么用,处理逻辑交给工厂类. 简单工厂模式(Simple Factory Pattern)是日常开发中常用的 ...
- Odoo 13之十三 :开发之创建网站前端功能
Odoo 13开发之创建网站前端功能 Odoo 起初是一个后台系统,但很快就有了前端界面的需求.早期基于后台界面的门户界面不够灵活并且对移动端不友好.为解决这一问题,Odoo 引入了新的网站功能,为系 ...
- How to fix the problem that Raspberry Pi cannot use the root user for SSH login All In One
How to fix the problem that Raspberry Pi cannot use the root user for SSH login All In One 如何修复树莓派无法 ...
- Go语言如何判断两个对象是否相等
1. 引言 在编程中,判断两个对象是否相等是一项常见的任务,同时判断对象是否相等在很多情况下都非常重要,例如: 单元测试:编写单元测试时,经常需要验证函数的输出是否符合预期,这涉及到比较对象是否相等. ...
- K8S in Action 读后感(概念简介)
一.K8S的用武之地 今天,大型单体应用正被逐渐拆分成小的.可独立运行的组件,我们称之为微服务.微服务彼此之间解耦,所以它们可以被独立开发.部署.升级.伸缩.这使得我们可以对每一个微服务实现快速迭代, ...
- 用 Python 帮运营妹纸快速搞定 Excel 文档
Microsoft Office 被广泛用于商务和运营分析中, 其中 Excel 尤其受欢迎.Excel 可以用于存储表格数据.创建报告.图形趋势等.在深入研究用 Python 处理 Excel 文档 ...
- 洛谷 P8179 Tyres
滴叉题/se/se 题意 直接复制了 有 \(n\) 套轮胎,滴叉需要用这些轮胎跑 \(m\) 圈.使用第 \(i\) 套轮胎跑的第 \(j\) 圈(对每套轮胎单独计数)需要 \(a_i+b_i(j- ...
- 14. SpringMVC执行流程
14.1.SpringMVC 常用组件 DispatcherServlet:前端控制器,不需要工程师开发,由框架提供 作用:统一处理请求和响应,整个流程控制的中心,由它调用其它组件处理用户的请求 Ha ...
- 13. 注解配置SpringMVC
使用配置类和注解代替web.xml和SpringMVC配置文件的功能 13.1.创建初始化类,代替web.xml 在Servlet3.0环境中,容器会在类路径中查找实现javax.servlet.Se ...