蚂蚁集团混沌工程 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 ...
随机推荐
- 将远程oracle数据库导入到本地
一.切换用户 先从普通用户 切换到root (有些时候会因为无权限直接执行 su - oracle 会被拒绝) fssa@jzsql.sn.com:/home/fssa>su - 从当前用户切换 ...
- Elasticsearch 之 join 关联查询及使用场景
在Elasticsearch这样的分布式系统中执行类似SQL的join连接是代价是比较大的,然而,Elasticsearch却给我们提供了基于水平扩展的两种连接形式 .这句话摘自Elasticsear ...
- 玩转服务器之数据传输篇:如何快速搭建FTP文件共享服务器
FTP 文件共享服务器介绍 FTP服务(File Transfer Protocol,FTP)是最早应用于主机之间数据传输的基本服务之一,是目前使用最广泛的文件传送协议.FTP文件共享服务器在日常办公 ...
- 【理论积累】Python中的Pandas库【一】
Pandas库介绍 Pandas 是一个用于数据分析的 Python 第三方库,能够处理和分析不同格式的数据,例如:CSV.Excel.SQL 数据库等.Pandas 提供了两种数据结构,分别为 Se ...
- Tr0ll-1项目实战
前言 Tr0ll的灵感来源于OSCP实验室内机器的不断拖动. 目标很简单,获取root并从/root目录中获取Proof.txt. 不适合那些容易受挫的人!公平的警告,前方有巨魔! 靶机环境 kali ...
- 1.redis常见数据类型-字符串String、列表List、集合Set、Hash哈希、Zset有序集合
背景: 这里说的数据类型是value的数据类型,key的类型都是字符串. 命令不区分大小写,而key的值是区分大小写的 help @+数据类型 会出现命令提示 比如 help@string,help@ ...
- 看懂java序列化,这篇就够了
前言 相信大家日常开发中,经常看到 Java 对象 "implements Serializable".那么,它到底有什么用呢?本文带你全方位的解读序列化与反序列化这一块知识点. ...
- C# - DTO 的字符串表达
第一阶段 重写 DTO 的 ToString() 方法.利用 Newtonsoft.Json 序列化 DTO 对象. 第二阶段 为 DTO 设置基类,重写基类的 ToString() 方法.利用 Sy ...
- -Xmx参数建议设置为系统内存的多少?
在设置 -Xmx 参数时,建议将其设置为系统内存的一定比例.具体的比例需要根据应用程序的特点.系统资源的限制等各种因素进行综合考虑. 如果将 -Xmx 参数设置得过小,可能会导致 JVM 分配的堆内存 ...
- 【后端面经-Java】AQS详解
目录 1. AQS是什么? 2. AQS核心思想 2.1 基本框架 2.1.1 资源state 2.1.2 CLH双向队列 2.2 AQS模板 3. 源码分析 3.1 acquire(int) 3.1 ...