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

本文涉及的产品
服务治理 MSE Sentinel/OpenSergo,Agent数量 不受限
可观测可视化 Grafana 版,10个用户账号 1个月
简介: 浩鲸科技在海量互联网服务以及当前爆炸式增长的流量场景实践过程中,沉淀出了包括,链路压测,流控管理,动态扩缩容,故障演练等高可用核心技术,并通过云上服务化、平台化和工具化的形式,帮助内部产品研发部门以及客户,提高开发效率,提升业务稳定性。为了打通故障发现,故障管理,故障演练,应急响应等多方高可用措施,形成稳定性建设的完整链路。浩鲸科技组建 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



相关文章
|
17天前
|
Kubernetes 监控 容器
K8S故障注入混沌工程开源平台ChaosMesh
总之,ChaosMesh作为一个Kubernetes混沌工程平台,为用户提供了测试和验证Kubernetes集群的可靠性的工具和框架,有助于提高系统的稳定性和性能。
31 0
|
1月前
|
tengine 算法 安全
ChaosBlade 是阿里巴巴开源的混沌工程工具
【2月更文挑战第23天】ChaosBlade 是阿里巴巴开源的混沌工程工具
16 1
|
测试技术 调度 C++
六年打磨!阿里开源混沌工程工具 ChaosBlade
减少故障的最好方法就是让故障经常性的发生。通过不断重复失败过程,持续提升系统的容错和弹性能力。今天,阿里巴巴把六年来在故障演练领域的创意和实践汇浓缩而成的工具进行开源,它就是 “ChaosBlade”。如果你想要提升开发效率,不妨来了解一下。
11695 0
|
7月前
|
监控 Java 数据安全/隐私保护
电商系统中混沌工程实践
本场景主要介绍混沌工程的思想及其原理,体验故障演练(AHAS Chaos),阿里云在混沌工程领域的产品。
72 0
|
10月前
|
消息中间件 Kubernetes Cloud Native
蚂蚁集团自动化混沌工程 ChaosMeta 正式开源
ChaosMeta 介绍ChaosMeta 是一款面向云原生、自动化演练而设计的混沌工程平台。它是蚂蚁集团内部混沌工程平台 XMonkey 的对外开源版本,凝聚了蚂蚁集团在公司级大规模红蓝攻防演练实践中多年积累的方法论、技术能力以及产品能力。经过公司内部多年复杂故障演练场景的驱动,XMonkey 在混沌工程领域沉淀了很多独特经验,是蚂蚁集团研发、测试、质量、SRE 等人员进行历史故障演练和挖掘系统
235 0
蚂蚁集团自动化混沌工程 ChaosMeta 正式开源
|
12月前
|
消息中间件 运维 监控
ChaosBlade 在工商银行混沌工程体系中的应用实践
ChaosBlade 在工商银行混沌工程体系中的应用实践
274 0
|
12月前
|
缓存 Kubernetes Cloud Native
混沌实施工具ChaosBlade实践
项目介绍 ChaosBlade 是阿里巴巴开源的混沌工程原理和混沌实验模型的实验注入工具。 ChaosBlade 使用比较简单,而且支持丰富的实验场景,场景包括: 基础资源:比如 CPU、内存、网络、磁盘、进程等实验场景; Java 应用:比如数据库、缓存、消息、JVM 本身、微服务等,还可以指定任意类方法注入各种复杂的实验场景; C++ 应用:比如指定任意方法或某行代码注入延迟、变量和返回值篡改等实验场景; Docker 容器:比如杀容器、容器内 CPU、内存、网络、磁盘、进程等实验场景; 云原生平台:比如 Kubernetes 平台节点上 CPU、内存、网络、磁盘、进程实验场景,Pod
171 0
|
机器学习/深度学习 运维 自然语言处理
硅基仿生业务全面 Serverless 容器化,14万+问答库助力糖尿病科普
“使用阿里云容器服务 Knative,解决了开发迭代慢的问题,加速了深度学习模型的性能提升;同时提供了弹性可伸缩的资源配置,满足网络服务需求,降低了服务部署成本。”
硅基仿生业务全面 Serverless 容器化,14万+问答库助力糖尿病科普
|
容器