本文将介绍如何使用混沌工具对 Pod/Node 进行 CPU 负载故障注入,以达到指定的 CPU 负载百分比。 2. 实现原理 混沌工具在进行 CPU 负载故障注入时,主要通过以下方式实现: 启动 chaos_burncpu 进程,空跑 for 循环来消耗 CPU 时间片。 5. 验证故障生效 我们可以通过以下命令查看 CPU 负载情况,以验证故障是否生效: 物理机:通过 top 命令查看 CPU 负载情况。CPU 使用率 = 100 - CPU 空闲比例(idle)。 通过以上方法,我们可以轻松地对 Pod/Node 进行 CPU 负载故障注入,从而验证系统在不同负载下的表现,以及监控告警、流量调度、弹性伸缩等能力。 使用腾讯云混沌演练平台实施 CPU 高负载。 故障实现原理是预先在混沌演练平台探针管理处安装腾讯自研 Agent 探针。
本文将介绍如何使用混沌工具对 Pod/Node 进行内存负载故障注入,以达到指定的内存占用百分比。腾讯云混沌演练平台故障动作:标准集群 Pod/普通节点-内存利用率高。 2. 实现原理 混沌工具在进行内存负载故障注入时,主要通过以下方式实现: ram 模式:启动进程 chaos_burnmem 不断申请内存,模拟主机/容器内存负载升高。 为了保护该进程在故障注入期间一直存在,不被杀死,可以打开 oomGuard 保护,降低该进程 oom-kill 权重,优先杀死其他进程。 设置高负载的内存故障注入后,可能会使得机器无法登入与控制,请谨慎使用。 cache 模式:通过挂载 tmpfs 来实现内存占用。 # 2、计算内存占用的值,填充文件,速率为 100Mb/s dd if=/dev/zero of=${PATH}/burnmem_tmpfs/file bs=1M count=${fillMem} 5.
实验工作流 实验工作流,包括编排顺序或并行执行的故障注入实验,查看实验状态和结果,暂停实验,支持用YAML或Web UI定义和管理实验。 可视化操作 可视化操作,包括可以在Web UI上点击鼠标,定义实验的范围、故障注入类型和调度规则,最后能展示实验结果。 安全控制 安全控制,包括使用K8S原生提供的基于角色的访问控制功能,来管理故障注入的使用权限。还可以通过设置命名空间注解,来指定允许进行混沌实验的命名空间,进一步保障对混沌实验的控制。 使用K8S原生提供的基于角色的访问控制功能,来管理故障注入的使用权限。 劣势 只能在K8S集群上使用。否则,就只能使用针对节点进行故障注入实验的附带工具chaosd。 临时执行的实验会无限期地运行。 你还希望我聊有关混沌工程的其他什么新话题?欢迎在评论区留言。我会仔细阅读每一条留言。期待听到你的声音。 企业生意好,系统运行稳。你所阅读的文章,来自“吾真本说混沌工程”专栏。
Chaos Mesh 是针对K8S的云原生混沌工程开源平台。 可以用它方便地模拟开发、测试、生产环境中可能出现的各种异常情况,发现系统中潜在的问题。 实验工作流 实验工作流,包括编排顺序或并行执行的故障注入实验,查看实验状态和结果,暂停实验,支持用YAML或Web UI定义和管理实验。 可视化操作 可视化操作,包括可以在Web UI上点击鼠标,定义实验的范围、故障注入类型和调度规则,最后能展示实验结果。 安全控制 安全控制,包括使用K8S原生提供的基于角色的访问控制功能,来管理故障注入的使用权限。还可以通过设置命名空间注解,来指定允许进行混沌实验的命名空间,进一步保障对混沌实验的控制。 使用K8S原生提供的基于角色的访问控制功能,来管理故障注入的使用权限。 劣势 只能在K8S集群上使用。否则,就只能使用针对节点进行故障注入实验的附带工具chaosd。 临时执行的实验会无限期地运行。
腾讯云云顾问混沌演练平台应运而生,通过精准的负载类故障注入,帮助企业提前发现并解决问题,提升系统稳定性。1. 什么是负载类故障注入? 具体步骤如下:动态部署混沌辅助执行Pod: 混沌工程控制平台接收到用户的故障注入请求后,会在目标业务容器所在的节点动态启动一个chaos-helper-pod,这个Pod内置了各种故障注入工具,如CPU 注入前云顾问混沌演练平台容器监控注入后云顾问混沌演练平台容器监控4. 对操作系统的要求腾讯云云顾问混沌演练平台在执行此类故障注入时并不直接依赖目标容器内的操作系统环境,因此对操作系统本身无特殊要求。 5. 小结腾讯云云顾问混沌演练平台通过其创新的PID迁移机制和独立的辅助执行环境,实现了容器负载类故障注入的精确控制,确保故障注入的效果真实、准确,同时保障了混沌平台自身运行的稳定性,成为企业提升容器应用弹性和可靠性的重要利器
ChaosBlade可针对多达7个场景开展故障注入实验,但网上官方的中英文文档质量欠佳,内容缺失,真心没有站在一般用户的角度来写,只能通过运行blade命令的help了解究竟有什么功能。 图片 一句话介绍 ChaosBlade是阿里巴巴开源的针对7个检验软件系统稳定性场景的混沌工程故障注入开源工具:主机基础资源、CRI容器、K8S平台、Java应用、C++应用、阿里云平台、其他服务。 场景5:C++应用 可注入故障包括增加延迟,运行中修改变量值,返回错误。 场景6:阿里云平台 可注入故障包括卸载磁盘,挂载或卸载网络接口等。 案例 国内有金融行业的用户,已经基于ChaosBlade开发了混沌工程工具平台,在测试环境注入故障,检验基础设施和容器平台的稳定性。 你所阅读的文章,来自“吾真本说混沌工程”知乎专栏。
注:它们Pod标签都有app: nginx,service服务发现根据这个标签选择,version是为后面定义版本设置的
什么是混沌工程? 2. 混沌工程的实践原则 3. 混沌工程的好处 4. 基于上述原则如何落地? 4.1 故障注入能力 4.2 平台化建设 4.3 应用推广 5. 以下从 5 个角度描述了应用混沌工程的理想方式(源自 Netflix 的经验总结:http://principlesofchaos.org): 1、建立稳定状态的假设 我们将系统正常运行时的状态定义为系统的 5、最小化爆炸半径 在生产环境中进行混沌实验,让系统的薄弱环节曝光,有导致生产环境崩溃的风险,并造成不必要的客户投诉,所以需要最小化爆炸半径,保证这些后续影响最小化,精细化控制故障的影响范围。 3. 例如:对接口 /api/test 注入延迟 100ms 的故障,止损指标可以是接口失败率,当失败率 > 5% 时,需要立即终止实验 一键停止:可随机终止混沌实验的能力异常关键,避免对系统造成过度伤害。 先人工手动跑通完整流程,然后总结各场景混沌实验的规范,最后将流程规范平台化,可以定期的自动化运行,从而提升了效率,持续获得混沌实验的价值。 5.
因为国内业界对于创新工程实践的采纳相对滞后,估计混沌工程在国内应该有3~5年左右就能跨过鸿沟,进入主流。图片图片图片混沌工程在Thoughtworks公司的技术雷达上的位置,也能从侧面印证这一点。 如果是甲方购买了乙方的虚拟机和容器平台,然后再在上面做相关的故障注入实验,本质上是甲方再次花钱为乙方做回归测试。企业一旦在上面两个方面开展混沌工程应用工作,过程就相对固化下来。 2 你们所实践的混沌工程应用,与传统的测试团队的软件测试,以及与运维部门的传统故障演练,有什么区别?差异化优势在哪里?3 如何保障故障注入后的最小化爆炸半径? 4 你们所开展的故障注入实验,是否主要针对基础设施层或容器平台层?是否有针对应用服务层做故障注入实验? 5 你们向领导汇报混沌工程成效时,具体使用了哪些指标?成效数据前后是如何对比的?你可以思考上面这9组问题。选出一个能启发你把混沌工程和软件系统稳定性工程实践做得有意思的,并尝试解决该问题。
因为国内业界对于创新工程实践的采纳相对滞后,估计混沌工程在国内应该有3~5年左右就能跨过鸿沟,进入主流。 如果是甲方购买了乙方的虚拟机和容器平台,然后再在上面做相关的故障注入实验,本质上是甲方再次花钱为乙方做回归测试。 企业一旦在上面两个方面开展混沌工程应用工作,过程就相对固化下来。 2 你们所实践的混沌工程应用,与传统的测试团队的软件测试,以及与运维部门的传统故障演练,有什么区别?差异化优势在哪里? 3 如何保障故障注入后的最小化爆炸半径? 4 你们所开展的故障注入实验,是否主要针对基础设施层或容器平台层?是否有针对应用服务层做故障注入实验? 5 你们向领导汇报混沌工程成效时,具体使用了哪些指标?成效数据前后是如何对比的? 你可以思考上面这9组问题。选出一个能启发你把混沌工程和软件系统稳定性工程实践做得有意思的,并尝试解决该问题。
与运维团队一起实践了近一年的混沌工程后,获得了以下启发: 混沌工程的价值,就是要提升应对云生产环境线上事故的时效性和有效性 混沌工程实验与故障注入测试相辅相成,在证实稳态假说后,前者可以转化为后者 稳态行为假说 说到了测试,那么混沌工程实验与故障注入测试的区别是什么? 混沌工程实验与故障注入测试相辅相成 混沌工程实验是要证实或证伪复杂云系统在故障注入后的稳态假说是否成立,并研究其间系统的运行模式、未知的失效模式以及监控告警的有效性,以便增强系统稳定性设计。 比如,下面是一个较好的稳态假说:“即使在实例失效的条件下,系统仍然能在3秒之内,完成已受理的用户的交易,否则能在5秒之内提示用户业务暂时不可用。” 下面是两个供参考的稳态假说模版。 因业务量增大使得数据库连接数占满,导致批量作业部分用户业务报错 严重 几百分钟 批量作业部分用户业务报错 因业务量增大使得数据库连接数占满 优化配置,增大数据库连接数;优化异常处理,批量程序增加应用失败后重试机制 5
确定故障场景和工具:确定需要模拟的故障场景和需要使用的平台工具;本次演练大部分由用户采用混沌演练平台操作,少部分采用运维手动支持; 5. 数据层CDB/CRS/TDSQL容灾能力 上述故障演练均基于腾讯云混沌演练平台(CFG)完成,业务团队在混沌演练平台上完成了实例选取、演练场景动作的编排、可视化故障注入、演练报告等全流程操作。 演练前,用户可以在混沌演练平台上轻松完成多种资源类型的可故障注入动作组合编排;演练后,系统可以帮助自动化执行故障恢复流程,减少了人为干预的风险。 解决方案:混沌演练平台支持多实例并发故障注入,能够真实有效地模拟可用区级别的故障场景,极大提高了故障演练整体效率。 解决方案:混沌演练平台集成了腾讯云监控各类基础云产品的监控指标体系,用户可以在混沌平台上快捷地集中查看各类云产品实例级别的的指标监控变化,实时观测故障注入效果,并对演练中可能出现的风险进行有效把控。
主要梳理一下最近行业中比较火的混沌工程,本文简单先从以下5个方面介绍一下我对混沌工程的理解: - 混沌工程在故障管理闭环中的角色; - 从混沌角度看混沌工程的关注点; - 他山之石; - 混沌工程重点解决什么问题 为此,Netflix启动了Chaos Monkey,通过随机性的故障注入,了解在故障注入后相关联服务的健壮性、弹性,发现故障产生后的风险。 从公开信息看,国内的混沌工程实践比较早的是阿里,阿里的团队分享了一些混沌工程的实践经验,开源了故障注入的代码,阿里云还有一个故障演练的应用(虽然我认为混沌工程与演练是有区别的)。 (4)其它:根据应急处理过程 ,查看预案或手册完备度、B岗是否就位…… 5、混沌工程主流方法概括 没有亲身经历过混沌工程,我摘一个阿里同学梳理的混沌工程步骤: 确定初步的实验需求和实验对象; 通过实验可行性评估 执行层面,加强故障注入、故障观察、故障恢复的管控能力,控制好故障影响范围,在对生产保持敬畏之心的基础上践行混沌工程,并建立持续优化的闭环协同机制,混沌工程最终是为了解决问题。
“混沌工程实验性价比太低了。测试、研发和运维三个部门都投入了大量人力物力,在准生产环境做了不少故障注入实验。但发现的问题还是比较少。”在一次混沌工程实践回顾会上,一位测试人员如是说。 最先响应运维部门实践混沌工程召唤的,是测试部门。测试部门认为混沌工程的故障注入实验,能丰富他们的压力测试和探索性测试的场景,从而发现更多软件缺陷。 他们认为,混沌工程的故障注入实验,其实就是另一种测试而已。 确实,测试部门就是把混沌工程故障注入实验,当作探索性测试来做的。“混沌工程实验,类似于探索性测试。 缺乏明确的稳态行为假说 由于测试人员使用探索性测试的方法,来实践混沌工程故障注入实验,所以在实验结果报告中,找不到“系统稳态行为假说”的字眼。 这些测试人员正在使用一款开源工具,来进行混沌工程故障注入实验。由于这款工具,提供了5种可供注入的原子故障,于是测试人员也就设计了5个实验。
在这篇博文中,我将带领大家探索如何在服务网格中进行故障注入实验,分享Chaos Engineering的最佳实践,并深入研究服务网格如Istio中的故障注入功能。 对于关心系统健壮性、微服务稳定性和混沌工程 的读者,这篇文章将为你提供丰富的实践知识! 引言 混沌工程不仅仅是故意制造故障,而是一种科学的方法,通过故障注入来发现系统中的潜在问题,并验证系统的弹性。 服务网格,作为微服务架构的通信层,为我们提供了强大的故障注入工具,帮助我们更好地进行混沌实验。 正文 1. 什么是混沌工程? 混沌工程是一种通过主动注入故障来验证系统健壮性的方法。 2.1 Istio的故障注入功能 Istio允许我们在服务间的通信中注入故障,如延迟、错误等。 总结 混沌工程为我们提供了一种验证系统健壮性的强大工具。通过服务网格,我们可以更加方便地进行故障注入实验,验证微服务架构的弹性。正如混沌工程的创始人所说,要“通过混沌来建立信心”。
上篇 腾讯云Status Page(健康看板)容灾设计与混沌演练实践——上篇 我们讨论架构设计和部署,接下来的内容是关于相应故障演练验证的实践 故障注入主要通过腾讯云混沌演练平台实现,腾讯云有对外服务的版本 主源返回异常码 通过主源VIP指向Nginx制造异常http状态码返回 server { listen 443; location / { return 400; // 包括不同的 5xx 4xx } } 接下来观察页面访问是否正常,且分析各个可用区部署的请求日志和Nginx的日志 故障注入场景演练实施后请求的示意图: 逻辑层故障演练 主源逻辑层地域所有POD异常 通过腾讯云混沌演练平台 pod Failed注入 主源逻辑层单可用区所有POD异常 通过腾讯云混沌演练平台pod Failed注入 逻辑层地域所有POD异常和单可用区所有POD异常2种故障注入后的请求示意图,都是主源VIP返回异常码后 ,进行备源重试: 主源逻辑层单可用区内部分POD异常 通过腾讯云混沌演练平台pod Failed注入,包括前后端不同场景 故障注入后的K8s平台自动处理示意图 数据层故障演练 通过腾讯云混沌演练平台进行注入
“混沌工程实验性价比太低了。测试、研发和运维三个部门都投入了大量人力物力,在准生产环境做了不少故障注入实验。但发现的问题还是比较少。”在一次混沌工程实践回顾会上,一位测试人员如是说。 最先响应运维部门实践混沌工程召唤的,是测试部门。测试部门认为混沌工程的故障注入实验,能丰富他们的压力测试和探索性测试的场景,从而发现更多软件缺陷。 他们认为,混沌工程的故障注入实验,其实就是另一种测试而已。 确实,测试部门就是把混沌工程故障注入实验,当作探索性测试来做的。“混沌工程实验,类似于探索性测试。 缺乏明确的稳态行为假说 由于测试人员使用探索性测试的方法,来实践混沌工程故障注入实验,所以在实验结果报告中,找不到“系统稳态行为假说”的字眼。 这些测试人员正在使用一款开源工具,来进行混沌工程故障注入实验。由于这款工具,提供了5种可供注入的原子故障,于是测试人员也就设计了5个实验。
,帮助大家了解混沌工程故障注入的流程,以及在开源框架上的选型策略。 那业界混沌工程实施的工具这么多,那在工行进行混沌工程故障演练平台建设的时候,就要思考是选择自研故障注入工具,还是直接引用开源的故障注入工具。如果引用开源的故障注入工具,引入哪款开源工具。 最终,混沌工程故障注入介质将会安装在这些基础设施上实施各类的故障。 在基础实施层之上,基于 ChaosBlade 进行二次开发的混沌工具故障注入介质。 ,此外我们也开发了故障注入任务解析模块,该模块可将混沌工程故障演练管理平台下发的故障演练任务解析成多个故障注入事件,然后根据各个故障注入事件的开始和结束时间分别调用 ChaosBlade 故障注入工具实施故障注入和撤销操作 故障注入介质之上的是任务调度模块,负责平台和故障注入介质之间的交互,核心功能是实现混沌实验任务的批量下发和调度,该模块可以快速批量下发各种类型的混沌实验,支持失败重发、超时重发、高并发等机制。
1、Chaos Mesh 介绍 Chaos Mesh是一个开源的混沌工程平台,旨在帮助用户在生产环境中测试、验证和优化其应用程序的可靠性和稳定性。 通过引入故障注入和混沌工程原则,Chaos Mesh可以模拟各种故障场景,如网络延迟、节点故障、磁盘故障等,以帮助用户发现和解决系统中的潜在问题。 总的来说,Chaos Mesh是一个强大的混沌工程平台,可以帮助用户在生产环境中进行系统稳定性测试和故障模拟,从而提高系统的可靠性和稳定性。 5、调整实验参数:根据实验结果和反馈,调整故障注入实验的参数,如故障类型、注入时间、注入范围等,以便更好地模拟真实生产环境中的故障情况。 请确保在生产环境中谨慎使用混沌工程工具,以避免对系统造成不必要的影响。 温馨提醒:2024年最新实战测开专项技能提升训练营开学了!
之前在定义定期执行的混沌时,仅使用 “cron: @every 10s” 与 “duration: 5s” 描述行为并不能满足大家的需求。 更多的故障类型 Chaos Mesh 已经支持了如 NetworkChaos,IOChaos,StressChaos 等系统层面的故障注入,也支持了如 AWSChaos,GCPChaos 这种云服务类型的故障注入 我们在 Chaos Mesh 2.0 中也加入了应用层的故障注入功能。 目前 Chaos Mesh 借助 chaos-exec-jvm 实现了 JVMChaos,能够进行例如方法延迟,返回值修改,内存溢出,抛出异常等应用级别故障注入。 支持在物理机上进行进程,网络,JVM,压力,磁盘等不同类型的故障注入。