浩鲸科技基于ChaosBlade的混沌工程实践

本文涉及的产品
性能测试 PTS,5000VUM额度
服务治理 MSE Sentinel/OpenSergo,Agent数量 不受限
应用实时监控服务-可观测链路OpenTelemetry版,每月50GB免费额度
简介: 浩鲸科技在海量互联网服务以及当前爆炸式增长的流量场景实践过程中,沉淀出了包括,链路压测,流控管理,动态扩缩容,故障演练等高可用核心技术,并通过云上服务化、平台化和工具化的形式,帮助内部产品研发部门以及客户,提高开发效率,提升业务稳定性。为了打通故障发现,故障管理,故障演练,应急响应等多方高可用措施,形成稳定性建设的完整链路。浩鲸科技组建 IT 蓝军,实施演练突袭,质量控制,联合作训。自2019年开始建设 IT 蓝军队伍,重点围绕生产环境,开展混沌工程实践,以推动代码、基础设施、流程、人员、监控上的提升。自今年起,深化演练力度,演练常态化、周期化,不断提高 SRE 单兵作战能力。

作者介绍:
叶文宸,浩鲸科技云原生技术专家,开源 chaosBlade 社区贡献者,多年分布式系统架构和稳定性建设经验,致力于稳定保障(SRE)、IT蓝军建设和运维数字化提升。


前言


1、敏捷开发,DevOps 的稳定性痛点


随着业务规模的快速扩张,敏捷开发、DevOps 实践、云原生架构和治理的出现,极大地提升了应用交付的能力,缩短了业务上市周期。且与之带来的微服务治理复杂度呈指数级扩大,业务敏捷和技术迭代的难度也在不断加大,同时还必须保证业务持续的高可用性和稳定性,面对故障过去传统的灾备方式已无法跟上这个节奏。


减少故障的最佳方法就是用反脆弱的思路来管理故障,将故障发生视为常态,通过不断重复异常过程,持续提升系统的容错和弹性能力。混沌工程正是因应这个挑战,主动注入故障,提前发现潜在问题,迭代改进架构和运维方式,最终实现业务韧性。


2、混沌工程需求

混沌工程是一套通过在分布式系统上进行实验,主动找出系统中的脆弱环节的方法学,最早由 Netflix 及相关团队提出。它旨在将故障扼杀在襁褓之中,也就是在故障造成中断之前将它们识别出来。通过主动制造故障,测试系统在各种压力下的行为,识别并修复故障问题,避免造成严重后果。2012年,Netflix 开源了 Chaos Monkey。今天,许多公司(包括谷歌,亚马逊,IBM,耐克等)都采用某种形式的混沌工程来提高现代架构的可靠性。


浩鲸科技在海量互联网服务以及当前爆炸式增长的流量场景实践过程中,沉淀出了包括,链路压测,流控管理,动态扩缩容,故障演练等高可用核心技术,并通过云上服务化、平台化和工具化的形式,帮助内部产品研发部门以及客户,提高开发效率,提升业务稳定性。


为了打通故障发现,故障管理,故障演练,应急响应等多方高可用措施,形成稳定性建设的完整链路。浩鲸科技组建 IT 蓝军,实施演练突袭,质量控制,联合作训。自2019年开始建设 IT 蓝军队伍,重点围绕生产环境,开展混沌工程实践,以推动代码、基础设施、流程、人员、监控上的提升。自今年起,深化演练力度,演练常态化、周期化,不断提高 SRE 单兵作战能力。



故障演练平台


1、搭建故障演练平台


基于这个指导思想,浩鲸科技决定建立故障演练平台,基于工具化故障注入和平台化故障演练管理来实现标准化,周期性的故障演练,从而提高产品韧性。

平台目标:


  • 提供自动化,可视化,可编排,无侵入的故障注入能力;


  • 作为高可用演练,故障测试的统一入口;


  • 积累沉淀高可用测试用例,建立量化的稳定性评估体系;


功能目标:

  • 适配目前JVM、CPP、容器化、K8S等故障场景;


  • 故障注入自动化,具备故障生命周期管理能力;


  • 故障爆炸范围可控;


  • 故障注入类型具备良好的扩展性;


2、故障注入工具选型


目前业内模拟故障的工具比较多样化,支持的功能和场景也各有优劣。通过对比来看,chaosblade 支持功能和场景比较丰富,同时社区也是比较活跃的。我们在充分验证了大部分注入功能后,选择了它作为底层注入的核心模块。


1.jpeg

混沌工程开源工具对比


3、故障演练步骤


结合 chaosblade 的混沌工程模型,我们将整个故障注入标准化,划分为五个步骤:


2.pngimage.gif


4、平台模块


作为故障演练的核心组件和故障注入引擎,平台的模块构建围绕服务业务演练展开。

3.png


故障演练


1、演练过程详解


我们实际实施故障演练时,涉及环境准备、故障注入任务编排、实施故障注入、故障复盘、问题改进等一系列操作。


  • 演练方案确认

实施故障演练之前,确认实施故障注入的目标服务/节点,并确认纳入故障演练平台管理。确认故障实施的时间,地点,干系人,服务稳态,演练预期,观测指标及完整的演练执行顺序。


  • 故障演练用例编排

基于高可用演练工具 HATT ,完成自动化演练任务编排、并实施演练全流程操作。


4.png


  • 演练实施

通过演练工具监控演练全生命周期并获取演练结果。演练过程中出现的告警、监控异常,稳定性指标同步至演练执行结果,验证稳定性预期。

5.png


  • 演练完结/复盘

基于故障演练平台输出当次演练结果,演练报告,基于指标分析输出演练问题复盘报告。


  • 稳定性改进

基于演练复盘报告,确定稳定性改进建设方案,并跟踪执行。便于下次演练的故障回归。


故障演练用例则作为当前业务的建设资产沉淀在故障演练平台内,通用的还可予以复用。


2、从1-100


稳定性建设从不是一蹴而就的事,混沌工程旨在建设一个稳固的 PDCA 循环,促使 SRE 们在快速迭代的产品研发周期中不停验证,优化产品稳定性,跟上产品 DevOps 的脚步。而面临大量、反复、周期化的故障演练,标准化、自动化执行和演练过程固化沉淀成了提效利器。


在完成演练方案设计及对接后,利用平台,做到了单个 IT 蓝军即可完成全部自动化演练过程。


典型案例


验证消息队列单节点假死 hang 住时服务的可用性。

6.png


  • 演练场景:

消息队列单个 Broker 节点 hang 住,验证消息收发是否正常。


  • 稳定性预期:

单个 broker 异常不影响其他节点消息发送,故障节点将被排除出可用节点列表。短暂 tps 下降后,消息发送恢复正常 tps。


  • 演练中稳定性异常:

节点 hang 住后,tps 骤降为 0,不符合预期;


  • 改进成果:

1. 客户端引入熔断机制,消息发送重试失败后不再尝试往故障节点发送消息,避免了持续不可用;

2. namesrv 路由服务主动将 broker 失效信息推送至客户端,减少故障恢复时长。



浩鲸混沌工程实践


基于混沌工程实践,我们意识到,故障演练属于稳定性建设中的一环,而要做到稳定性提升,故障的应急响应处理是一个环环相扣的链条,任一环节的缺失,影响总体的稳定性质量。建立故障协同处理响应链还是一个长足发展的过程。


7.png


目前,我们在:

  • 规划层面,推动故障演练能力分层;


  • 平台层面,致力于打通架构感知及运维组件的联动协调;


  • 制度层面,建立故障应急协同响应链;


  • 演练实施层面,将故障演练从测试预生产环境向生产环境迈进;


  • 积极贡献力量,回馈开源社区,随着底层注入工具chaosblade的蓬勃发展,引入更丰富的故障类型和灵活的注入方式。


以浩鲸科技内部混沌工程实践为例,对 30+ 重要产品线编排实施各种类型的演练,形成 月/季度 周期性故障演练累计 200+ 用例,以确保整个产品线能应对业务极端条件下的压力。全面提升开放平台应用服务水平,为浩鲸云系统架构的持续优化、产品的快速创新提供坚实支撑。

8.png



相关文章
|
4月前
|
Cloud Native Devops 持续交付
云原生之旅:从混沌到秩序
在数字化浪潮中,云原生技术如同搭建现代软件架构的乐高积木,让企业能够灵活、快速地适应市场变化。本文将通过一个虚构的故事,讲述一家传统企业如何拥抱云原生,实现从技术债务累积的混沌状态到高效、自动化的秩序转变。我们将一探究竟,云原生技术是如何一步步引领这场变革,并为企业带来前所未有的灵活性和创新能力。
|
测试技术 调度 C++
六年打磨!阿里开源混沌工程工具 ChaosBlade
减少故障的最好方法就是让故障经常性的发生。通过不断重复失败过程,持续提升系统的容错和弹性能力。今天,阿里巴巴把六年来在故障演练领域的创意和实践汇浓缩而成的工具进行开源,它就是 “ChaosBlade”。如果你想要提升开发效率,不妨来了解一下。
11974 0
|
5月前
|
存储 人工智能 运维
ChaosMeta for AI:混沌工程让AI稳定性更上一层楼
1.混沌工程不仅仅是技术过关的利器,更是AI系统完美运转的“防火墙”。ChaosMeta通过全方位、多层次的故障注入和演练,帮助AI系统在复杂多变的环境中维持高稳定性。 2.结合混沌工程的思想,我们不仅可以在开发阶段找到和修复问题,还能在运维阶段持续提升系统的鲁棒性。在这个高速发展的AI年代,ChaosMeta将为AI系统提供稳定性保障,让AI系统走得更远、更稳。 3.抽空试试ChaosMeta,也许下一个故障发生时,你会发现,原来一切尽在掌握。
245 0
ChaosMeta for AI:混沌工程让AI稳定性更上一层楼
|
7月前
|
tengine 算法 安全
ChaosBlade 是阿里巴巴开源的混沌工程工具
【2月更文挑战第23天】ChaosBlade 是阿里巴巴开源的混沌工程工具
146 1
|
SQL 数据采集 运维
蚂蚁第三代混沌工程助力风险防控提升
蚂蚁第三代混沌工程助力风险防控提升
2216 1
蚂蚁第三代混沌工程助力风险防控提升
|
消息中间件 Kubernetes Cloud Native
蚂蚁集团自动化混沌工程 ChaosMeta 正式开源
ChaosMeta 介绍ChaosMeta 是一款面向云原生、自动化演练而设计的混沌工程平台。它是蚂蚁集团内部混沌工程平台 XMonkey 的对外开源版本,凝聚了蚂蚁集团在公司级大规模红蓝攻防演练实践中多年积累的方法论、技术能力以及产品能力。经过公司内部多年复杂故障演练场景的驱动,XMonkey 在混沌工程领域沉淀了很多独特经验,是蚂蚁集团研发、测试、质量、SRE 等人员进行历史故障演练和挖掘系统
416 0
蚂蚁集团自动化混沌工程 ChaosMeta 正式开源
|
消息中间件 运维 监控
ChaosBlade 在工商银行混沌工程体系中的应用实践
ChaosBlade 在工商银行混沌工程体系中的应用实践
394 0
|
缓存 Kubernetes Cloud Native
混沌实施工具ChaosBlade实践
项目介绍 ChaosBlade 是阿里巴巴开源的混沌工程原理和混沌实验模型的实验注入工具。 ChaosBlade 使用比较简单,而且支持丰富的实验场景,场景包括: 基础资源:比如 CPU、内存、网络、磁盘、进程等实验场景; Java 应用:比如数据库、缓存、消息、JVM 本身、微服务等,还可以指定任意类方法注入各种复杂的实验场景; C++ 应用:比如指定任意方法或某行代码注入延迟、变量和返回值篡改等实验场景; Docker 容器:比如杀容器、容器内 CPU、内存、网络、磁盘、进程等实验场景; 云原生平台:比如 Kubernetes 平台节点上 CPU、内存、网络、磁盘、进程实验场景,Pod
236 0
|
监控 容灾 Cloud Native
被你质疑价值的混沌工程,阿里巴巴已落地实践了9年
无可讳言,对于混沌工程的价值,目前在业内还没有一个明确的度量标准,但是可以通过简单的例子来有效佐证。据中亭介绍,一方面可以先选定一个场景,从结果上看,混沌工程可以保证场景不劣化;另一方面,如果度量组织进行突袭,不管系统架构和人员架构怎么变,监控结果都在合理的范围内。总体而言,混沌工程的核心就是增强信心,保证系统在某个场景下的能力不退化。只要这个组织有度量“特定场景下能力是否退化”的指标,混沌工程的价值就显而易见了。
774 7
被你质疑价值的混沌工程,阿里巴巴已落地实践了9年
|
容器
下一篇
DataWorks