浩鲸科技基于ChaosBlade的混沌工程实践
简介:浩鲸科技在海量互联网服务以及当前爆炸式增长的流量场景实践过程中,沉淀出了包括,链路压测,流控管理,动态扩缩容,故障演练等高可用核心技术,并通过云上服务化、平台化和工具化的形式,帮助内部产品研发部门以及客户,提高开发效率,提升业务稳定性。 为了打通故障发现,故障管理,故障演练,应急响应等多方高可用措施,形成稳定性建设的完整链路。浩鲸科技组建 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等故障场景;
- 故障注入自动化,具备故障生命周期管理能力;
- 故障爆炸范围可控;
- 故障注入类型具备良好的扩展性;
目前业内模拟故障的工具比较多样化,支持的功能和场景也各有优劣。通过对比来看,chaosblade 支持功能和场景比较丰富,同时社区也是比较活跃的。我们在充分验证了大部分注入功能后,选择了它作为底层注入的核心模块。
文章图片
混沌工程开源工具对比
3、故障演练步骤
结合 chaosblade 的混沌工程模型,我们将整个故障注入标准化,划分为五个步骤:
文章图片
文章图片
4、平台模块
作为故障演练的核心组件和故障注入引擎,平台的模块构建围绕服务业务演练展开。
文章图片
故障演练 1、演练过程详解
我们实际实施故障演练时,涉及环境准备、故障注入任务编排、实施故障注入、故障复盘、问题改进等一系列操作。
- 演练方案确认
- 故障演练用例编排
文章图片
- 演练实施
文章图片
- 演练完结/复盘
- 稳定性改进
故障演练用例则作为当前业务的建设资产沉淀在故障演练平台内,通用的还可予以复用。
2、从1-100
稳定性建设从不是一蹴而就的事,混沌工程旨在建设一个稳固的 PDCA 循环,促使 SRE 们在快速迭代的产品研发周期中不停验证,优化产品稳定性,跟上产品 DevOps 的脚步。而面临大量、反复、周期化的故障演练,标准化、自动化执行和演练过程固化沉淀成了提效利器。
在完成演练方案设计及对接后,利用平台,做到了单个 IT 蓝军即可完成全部自动化演练过程。
典型案例 验证消息队列单节点假死 hang 住时服务的可用性。
文章图片
- 演练场景:
- 稳定性预期:
- 演练中稳定性异常:
- 改进成果:
2. namesrv 路由服务主动将 broker 失效信息推送至客户端,减少故障恢复时长。
浩鲸混沌工程实践 基于混沌工程实践,我们意识到,故障演练属于稳定性建设中的一环,而要做到稳定性提升,故障的应急响应处理是一个环环相扣的链条,任一环节的缺失,影响总体的稳定性质量。建立故障协同处理响应链还是一个长足发展的过程。
文章图片
目前,我们在:
- 规划层面,推动故障演练能力分层;
- 平台层面,致力于打通架构感知及运维组件的联动协调;
- 制度层面,建立故障应急协同响应链;
- 演练实施层面,将故障演练从测试预生产环境向生产环境迈进;
- 积极贡献力量,回馈开源社区,随着底层注入工具chaosblade的蓬勃发展,引入更丰富的故障类型和灵活的注入方式。
【浩鲸科技基于ChaosBlade的混沌工程实践】
文章图片
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
推荐阅读
- 基于微信小程序带后端ssm接口小区物业管理平台设计
- 基于|基于 antd 风格的 element-table + pagination 的二次封装
- 基于爱,才会有“愿望”当“要求”。2017.8.12
- 《用科技实现乌托邦》第005章|《用科技实现乌托邦》第005章 自袒行踪,以示清白
- 远古科技之不起眼的石头
- javaweb|基于Servlet+jsp+mysql开发javaWeb学生成绩管理系统
- 好用,便宜
- JavaScript|vue 基于axios封装request接口请求——request.js文件
- 从前沿科技到现实应用,人脸识别智能门禁加速走进智慧社区
- 韵达基于云原生的业务中台建设 | 实战派