Chaos Mesh 是针对K8S的云原生混沌工程开源平台。 可以用它方便地模拟开发、测试、生产环境中可能出现的各种异常情况,发现系统中潜在的问题。 创建者 研发支持混合事务与分析处理的开源数据库TiDB的PingCap公司 一句话介绍 ChaosMesh是针对K8S的云原生开源混沌工程平台。 安全控制 安全控制,包括使用K8S原生提供的基于角色的访问控制功能,来管理故障注入的使用权限。还可以通过设置命名空间注解,来指定允许进行混沌实验的命名空间,进一步保障对混沌实验的控制。 优势 能提供K8S平台上的基础资源、平台和应用故障模拟。 具有故障场景编排能力。 为了降低混沌工程项目的门槛,Chaos Mesh提供了可视化操作。 使用K8S原生提供的基于角色的访问控制功能,来管理故障注入的使用权限。 劣势 只能在K8S集群上使用。否则,就只能使用针对节点进行故障注入实验的附带工具chaosd。 临时执行的实验会无限期地运行。
Chaos Mesh 是针对K8S的云原生混沌工程开源平台。 可以用它方便地模拟开发、测试、生产环境中可能出现的各种异常情况,发现系统中潜在的问题。 创建者 研发支持混合事务与分析处理的开源数据库TiDB的PingCap公司 一句话介绍 ChaosMesh是针对K8S的云原生开源混沌工程平台。 安全控制 安全控制,包括使用K8S原生提供的基于角色的访问控制功能,来管理故障注入的使用权限。还可以通过设置命名空间注解,来指定允许进行混沌实验的命名空间,进一步保障对混沌实验的控制。 优势 能提供K8S平台上的基础资源、平台和应用故障模拟。 具有故障场景编排能力。 为了降低混沌工程项目的门槛,Chaos Mesh提供了可视化操作。 使用K8S原生提供的基于角色的访问控制功能,来管理故障注入的使用权限。 劣势 只能在K8S集群上使用。否则,就只能使用针对节点进行故障注入实验的附带工具chaosd。 临时执行的实验会无限期地运行。
本文将介绍如何使用混沌工具对 Pod/Node 进行 CPU 负载故障注入,以达到指定的 CPU 负载百分比。 2. 参数 在进行 CPU 负载故障注入时,我们可以通过以下参数来控制: nice:指定 CPU 负载进程的 nice 值(静态优先级),取值范围为[-20, 19]。 实现原理 混沌工具在进行 CPU 负载故障注入时,主要通过以下方式实现: 启动 chaos_burncpu 进程,空跑 for 循环来消耗 CPU 时间片。 通过以上方法,我们可以轻松地对 Pod/Node 进行 CPU 负载故障注入,从而验证系统在不同负载下的表现,以及监控告警、流量调度、弹性伸缩等能力。 使用腾讯云混沌演练平台实施 CPU 高负载。 故障实现原理是预先在混沌演练平台探针管理处安装腾讯自研 Agent 探针。
本文将介绍如何使用混沌工具对 Pod/Node 进行内存负载故障注入,以达到指定的内存占用百分比。腾讯云混沌演练平台故障动作:标准集群 Pod/普通节点-内存利用率高。 2. 参数 在进行内存负载故障注入时,我们可以通过以下参数来控制: percent:内存使用率,取值是 0 到 100 的整数,默认值为 100。此参数为可选。 实现原理 混沌工具在进行内存负载故障注入时,主要通过以下方式实现: ram 模式:启动进程 chaos_burnmem 不断申请内存,模拟主机/容器内存负载升高。 为了保护该进程在故障注入期间一直存在,不被杀死,可以打开 oomGuard 保护,降低该进程 oom-kill 权重,优先杀死其他进程。 设置高负载的内存故障注入后,可能会使得机器无法登入与控制,请谨慎使用。 cache 模式:通过挂载 tmpfs 来实现内存占用。
腾讯云云顾问混沌演练平台应运而生,通过精准的负载类故障注入,帮助企业提前发现并解决问题,提升系统稳定性。1. 什么是负载类故障注入? 云顾问混沌演练平台如何精准实现负载类故障注入?腾讯云云顾问混沌演练平台利用创新的技术,通过创建稳定的辅助执行环境(称为chaos-helper-pod),实现容器故障的精准注入。 具体步骤如下:动态部署混沌辅助执行Pod: 混沌工程控制平台接收到用户的故障注入请求后,会在目标业务容器所在的节点动态启动一个chaos-helper-pod,这个Pod内置了各种故障注入工具,如CPU 注入前云顾问混沌演练平台容器监控注入后云顾问混沌演练平台容器监控4. 对操作系统的要求腾讯云云顾问混沌演练平台在执行此类故障注入时并不直接依赖目标容器内的操作系统环境,因此对操作系统本身无特殊要求。 小结腾讯云云顾问混沌演练平台通过其创新的PID迁移机制和独立的辅助执行环境,实现了容器负载类故障注入的精确控制,确保故障注入的效果真实、准确,同时保障了混沌平台自身运行的稳定性,成为企业提升容器应用弹性和可靠性的重要利器
混沌工程定位很多人都会把混沌工程和测试区分不清楚,我从执行时机、执行后是否对系统产生新认知,做了一张图如下。 图片混沌工程工具系列传送门: 1、 混沌工程工具:Chaos-mesh与Chaosblade技术实现与原理分析(1)-腾讯云开发者社区-腾讯云 2、 混沌工程工具:chaos-mesh注入项原理分析 5、 混沌工程工具:Chaosblade Java业务代码注入原理(5)-腾讯云开发者社区-腾讯云 6、 混沌工程工具:混沌工程实施过程及持久价值(7)-腾讯云开发者社区-腾讯云 7、 混沌工程工具 :混沌工程定位及原则梳理(8)-腾讯云开发者社区-腾讯云 8、 混沌工程工具:一个混沌工程设计的例子(9)-腾讯云开发者社区-腾讯云混沌工程原则解读及选择原则混沌工程高级原则,是国外混沌工程专家一起整理的实践指南 子网小比例先于全子网 2、 子网先于全网演练环境非生产环境优于生产环境演练模式1、 有剧本的演练先于无剧本随机演练 2、 通过程序固化故障注入方式稳态指标突破稳态指标立即中止演练终止通道可随时终止演练总结本文梳理了混沌工程的定位及混沌原则解读
图片 一句话介绍 ChaosBlade是阿里巴巴开源的针对7个检验软件系统稳定性场景的混沌工程故障注入开源工具:主机基础资源、CRI容器、K8S平台、Java应用、C++应用、阿里云平台、其他服务。 场景3:K8S平台 可注入故障包括向K8S平台内容器、node和pod注入故障。 场景4:Java应用 可注入故障包括代码缓存爆满,内存不足,增加延迟,返回特定值,动态执行脚本,抛异常等。 适用平台 主机,CRI容器,K8S平台,Java应用,C++应用,阿里云平台,其他服务。 适用场景 需要向主机、CRI容器、K8S平台、阿里云平台、Java应用和C++应用注入故障的场景。 案例 国内有金融行业的用户,已经基于ChaosBlade开发了混沌工程工具平台,在测试环境注入故障,检验基础设施和容器平台的稳定性。 你所阅读的文章,来自“吾真本说混沌工程”知乎专栏。
在K8S上部署的微服务,经常会依赖不受你控制的其他微服务。当两者之间的HTTP交互出现延迟或错误后,你的微服务能否按预期正常工作?应该做一个故障注入实验来检验一下。 如果在K8S上使用了Istio,那么恭喜你,你已经拥有了简单易用的混沌工程开源工具。 图片一句话介绍虽然Istio主要作为K8S服务网格,用于连接、保护、控制和观察服务,但在其流量管理功能中也支持故障注入。 故障注入实验利用了 Istio 在网络中的地位来执行实验,而无需添加任何额外的混沌工程工具或功能。 适用平台K8S适用场景如果已经使用了 Istio,那么这可以直接用它在集群上运行混沌实验,而无需部署或学习其他工具。 否则,仅仅为了这两种故障注入功能就部署 Istio ,就不值了。
Litmus 最初是 OpenEBS(K8S下存储系统) 的测试工具,后来发展成为知名的 Kubernetes 原生混沌工程开源平台。 图片创建者MayaData一句话介绍LitmusChaos 是一个在故障创建与编排方面更胜一筹的K8S混沌工程开源平台,如提供故障注入实验库 ChaosHub,使团队能够以受控方式,引入故障注入实验来识别基础设施中的弱点和潜在停机隐患 混沌工程可观测性可连接数据源(来自任何 Chaos Delegate)并监控故障注入场景。能可视化故障注入场景运行的统计数据和并做数据聚合。可比较两个或多个故障注入场景的观测数据。 可使用 Prometheus 数据源中的交错事件和指标实时监控故障注入实验的影响。K8S多租户Kubernetes 命名空间可用作 Kubernetes 上个人开发人员的完全托管环境。 适用平台K8S适用场景对于开发人员:在应用程序开发过程中运行故障注入实验,作为单元测试或集成测试的扩展。
注:它们Pod标签都有app: nginx,service服务发现根据这个标签选择,version是为后面定义版本设置的
上篇 腾讯云Status Page(健康看板)容灾设计与混沌演练实践——上篇 我们讨论架构设计和部署,接下来的内容是关于相应故障演练验证的实践 故障注入主要通过腾讯云混沌演练平台实现,腾讯云有对外服务的版本 ,可以前往混沌演练平台进行了解。 : 逻辑层故障演练 主源逻辑层地域所有POD异常 通过腾讯云混沌演练平台pod Failed注入 主源逻辑层单可用区所有POD异常 通过腾讯云混沌演练平台pod Failed注入 逻辑层地域所有POD异常和单可用区所有 POD异常2种故障注入后的请求示意图,都是主源VIP返回异常码后,进行备源重试: 主源逻辑层单可用区内部分POD异常 通过腾讯云混沌演练平台pod Failed注入,包括前后端不同场景 故障注入后的K8s ——上篇 腾讯云Status Page(健康看板)容灾设计与混沌演练实践——下篇
2019年3月8日,富途(Nasdaq: FUTU)正式登陆美国纳斯达克交易所。 数据层CDB/CRS/TDSQL容灾能力 上述故障演练均基于腾讯云混沌演练平台(CFG)完成,业务团队在混沌演练平台上完成了实例选取、演练场景动作的编排、可视化故障注入、演练报告等全流程操作。 演练前,用户可以在混沌演练平台上轻松完成多种资源类型的可故障注入动作组合编排;演练后,系统可以帮助自动化执行故障恢复流程,减少了人为干预的风险。 解决方案:混沌演练平台支持多实例并发故障注入,能够真实有效地模拟可用区级别的故障场景,极大提高了故障演练整体效率。 解决方案:混沌演练平台集成了腾讯云监控各类基础云产品的监控指标体系,用户可以在混沌平台上快捷地集中查看各类云产品实例级别的的指标监控变化,实时观测故障注入效果,并对演练中可能出现的风险进行有效把控。
Litmus 最初是 OpenEBS(K8S下存储系统) 的测试工具,后来发展成为知名的 Kubernetes 原生混沌工程开源平台。 创建者 MayaData 一句话介绍 LitmusChaos 是一个在故障创建与编排方面更胜一筹的K8S混沌工程开源平台,如提供故障注入实验库 ChaosHub,使团队能够以受控方式,引入故障注入实验来识别基础设施中的弱点和潜在停机隐患 混沌工程可观测性 可连接数据源(来自任何 Chaos Delegate)并监控故障注入场景。能可视化故障注入场景运行的统计数据和并做数据聚合。可比较两个或多个故障注入场景的观测数据。 适用平台 K8S 适用场景 对于开发人员:在应用程序开发过程中运行故障注入实验,作为单元测试或集成测试的扩展。 这对于刚刚接触混沌工程的团队来说,是一项挑战。
故障注入 vs. 混沌工程 故障注入测试和混沌工程有相似之处,但侧重点不同。前者主要是验证特定的故障场景,后者则更像是“随性破坏”,故意制造混乱,观察系统能否自行恢复。 混沌工程的核心理念是:真正稳定的系统,不是避免错误,而是能在错误发生时,快速恢复并保持服务可用。 Kubernetes 下的故障注入 随着 Kubernetes 成为云时代的主流平台,如何在 K8s 上进行故障注入测试,成了一个重要课题。 混沌工程工具 Azure Chaos Studio——微软 Azure 资源的故障注入工具。 Chaos Toolkit——模块化的混沌测试平台,支持 Kubernetes、AWS、Azure。 Chaos Monkey(Netflix)——开创混沌工程的工具,可以随机终止生产实例。 Litmus——CNCF 旗下的 Kubernetes 混沌测试工具,适用于云原生应用。
,还是只想要底层的远程注入、编排调度等平台能力,甚至是只想要单机故障注入能力,或者对云上/云下的目标进行管理以及注入故障,都有相应的部署方案可以满足 丰富的故障注入能力,云原生混沌工程 由于蚂蚁集团对攻防演练的高度重视 平台功能强大,支撑完整“混沌工程生命周期”,面向自动化 ChaosMeta 覆盖准入检测、流量注入、故障注入、故障度量、故障恢复、恢复度量等多个阶段的平台能力,作为“自动化混沌工程”的技术基础。 ) 用户层主要是由 chaosmeta-platform 组件构成,其主要任务是降低用户使用的门槛,提供可视化界面,方便用户使用计划、编排、实验配置、实验记录详情、Agent管理(k8s集群的pod/node 、跨集群对象、非k8s的物理机/容器等)等平台功能。 故障度量是对故障注入效果的有效性度量,而恢复度量是对防御平台恢复能力的有效性度量。度量能力是实现混沌工程自动化以及智能化的关键能力。
基于上面的两点,加上社区活跃情况等,选择 ChaosBlade 为故障注入的工具,加上自研的混沌工程控制台(当时还没有 chaosblade-box)作为最终方案。 提供了 chaosblade 的安装和卸载能力; 应用的资源分为 KVM 和 K8S 承载的容器,故障演练编排系统通过 Restful API 和 chaosblade 启动的 HTTP 服务进行通信 4 系统演进 去哪儿网这边的混沌工程主要经历了 2 个阶段: 1、故障注入能力的建设。 4.1 故障演练 通过故障注入来模拟故障发生是混沌工程的基础能力。 做了如下几个方案选型: 方案 说明 优势 劣势 chaosblade-operator 完全采用开源方案,Agent安装和策略注入都使用CRD的方式 贴近云原生,CRD比较完善 控制端需要重新开发一套对接K8s
什么是混沌工程? 2. 混沌工程的实践原则 3. 混沌工程的好处 4. 基于上述原则如何落地? 4.1 故障注入能力 4.2 平台化建设 4.3 应用推广 5. 以下是两个 star 较多、开源社区较为活跃的混沌工程项目。故障注入都做到了开箱即用、业务无感知,不需要业务配合写一些混沌工程相关的代码,也不需要更改系统的部署逻辑。 Servlet、MySQL、MQ 等,可指定任意类+方法注入复杂的实验逻辑 C++ 应用:指定任意方法或某行代码注入延迟、修改返回值 Linux 基础资源:CPU、内存、网络、磁盘、进程 云原生平台:K8S 4.2 平台化建设 基于故障注入的能力,将混沌实验的流程平台化,让用户更方便的使用。如下图: ? (1)平台产品层 基于上文「3. 、串行/并行、手动/自动的执行「故障注入、稳态验证、故障清除」等动作 观测大盘:混沌实验期间,实时清晰的观测「稳态指标、故障指标、止损指标」。
在这篇博文中,我将带领大家探索如何在服务网格中进行故障注入实验,分享Chaos Engineering的最佳实践,并深入研究服务网格如Istio中的故障注入功能。 对于关心系统健壮性、微服务稳定性和混沌工程 的读者,这篇文章将为你提供丰富的实践知识! 引言 混沌工程不仅仅是故意制造故障,而是一种科学的方法,通过故障注入来发现系统中的潜在问题,并验证系统的弹性。 服务网格,作为微服务架构的通信层,为我们提供了强大的故障注入工具,帮助我们更好地进行混沌实验。 正文 1. 什么是混沌工程? 混沌工程是一种通过主动注入故障来验证系统健壮性的方法。 2.1 Istio的故障注入功能 Istio允许我们在服务间的通信中注入故障,如延迟、错误等。 总结 混沌工程为我们提供了一种验证系统健壮性的强大工具。通过服务网格,我们可以更加方便地进行故障注入实验,验证微服务架构的弹性。正如混沌工程的创始人所说,要“通过混沌来建立信心”。
,帮助大家了解混沌工程故障注入的流程,以及在开源框架上的选型策略。 那业界混沌工程实施的工具这么多,那在工行进行混沌工程故障演练平台建设的时候,就要思考是选择自研故障注入工具,还是直接引用开源的故障注入工具。如果引用开源的故障注入工具,引入哪款开源工具。 最终,混沌工程故障注入介质将会安装在这些基础设施上实施各类的故障。 在基础实施层之上,基于 ChaosBlade 进行二次开发的混沌工具故障注入介质。 ,此外我们也开发了故障注入任务解析模块,该模块可将混沌工程故障演练管理平台下发的故障演练任务解析成多个故障注入事件,然后根据各个故障注入事件的开始和结束时间分别调用 ChaosBlade 故障注入工具实施故障注入和撤销操作 故障注入介质之上的是任务调度模块,负责平台和故障注入介质之间的交互,核心功能是实现混沌实验任务的批量下发和调度,该模块可以快速批量下发各种类型的混沌实验,支持失败重发、超时重发、高并发等机制。
Chaos Mesh® 是基于 K8s 的混沌测试平台,而对于部署在物理机上的应用来说,混沌测试同样重要。 这么好的工具当然想亲手试一试,动手的时候发现:没有 K8s 环境用不了! 这是因为 Chaos Mesh® 是云原生的混沌工程测试平台,专门为 K8s 设计的。 我们会继续加强它的易用性,提供 Dashboard web 管理功能,不仅可以管理物理机上 Chaosd 的实验,还可以管理 Chaos Mesh® 上的实验,这样就把物理机环境和 K8s 环境的混沌实验统一管理起来 更多的故障注入功能 目前 Chaosd 提供了进程、网络、JVM、压力、磁盘、主机总共六大故障注入功能,但是仍然需要继续拓展。 后续我们计划将 Chaos Mesh® 在 K8s 环境支持的一些故障注入功能在 Chaosd 中实现,包括 HTTP、IO 等。