云计算·大数据 频道

建设银行对混沌工程的探索与实践

  随着分布式架构的广泛应用,系统复杂度呈几何级快速增长,故障发生频率增高、平均修复时间(MTTR)延长,信息系统稳定性面临严峻挑战。建设银行将混沌工程引入稳定性管理体系,按照“主动攻击、提前预防”的思想,在系统全生命周期充分验证系统稳定性,为保障业务连续性提供有力支撑。

  建设银行2020年通过研究性课题的方式进行混沌工程技术性探索,经过三年的孵化和沉淀,于2023年完成面向研发和运维的故障演练平台建设。通过故障演练进行混沌实验,在系统全生命周期的各个阶段,对影响系统稳定性的各个因素进行把控。在架构设计阶段,明确管理要求,统一设计和能力评估标准,从上至下对系统进行规范化定义和约束;在研发测试阶段,深度挖掘应用故障场景,通过充分必要的故障模拟演练,严控应用投产质量;在日常运维阶段,联动生产应急处置,打造平台化、自动化、智能化的事件处置能力;最后,通过红蓝对抗攻防演练,全面检验系统面对随机故障时的稳定性。

  建立高可用管理体系,为混沌工程的引入夯实基础

  通过混沌工程验证系统稳定性,并不是简单地直接选取若干故障场景注入系统以发现系统脆弱点,而是在一套完善的管理体系基础上,有目的、有设计、有手段、有效果地在各个环节引入混沌工程思想,最大限度发挥其作用。

  建设银行高可用管理体系以业务有保障、指标可量化、问题早发现、风险能应对为管理目标,以贯穿始终的高可用设计、常态化的高可用自动化检查、有的放矢的高可用故障演练、促进良性循环的高可用优化形成闭环管理手段。

  1.“一把尺子量到底”全生命周期管理。高可用设计从顶层直接决定了系统在稳定性、可用性、鲁棒性上的表现。从架构标准层面,统一高可用故障场景定义,明确各类业务在不同场景下的业务连续性恢复要求,以此为基准设计高可用模型,明确各类运维对象高可用部署要求及高可用能力指标,并形成高可用标准部署套餐。从系统运行层面,将高可用架构标准贯穿系统研发、测试、投产、运维的全生命周期,为系统高可用管理奠定基础。

  2.“隐患风险日日查”常态化检核机制。将高可用设计落实到实际部署的过程中,难以避免因实施问题、资源限制等原因导致的非标情况。高可用自动化检查将架构标准转化为检查规则,通过对比高可用部署架构运行态和设计态的一致性,判断系统是否存在以及何处存在高可用风险,并能按照日、周、月等既定频率,以线上化、自动化、常态化的形式提供检查服务,第一时间做出风险提示,引导运维人员及时应对。

  混沌工程助力研发测试

  建设银行从研发测试条线启动混沌工程技术在测试环境应用场景的探索。2022年初步形成混沌实验专家库,挖掘了冲正交易时序异常、应用路由堵塞、慢交易等故障场景。将混沌工程故障演练深入应用于分布式平台相关组件,如应用路由、配置中心、分布式缓存、分布式消息、索引维护服务、分布式数据库等,助力建行核心业务顺利下移至分布式架构。

  相比开源工具及平台,建设银行混沌工程团队在磁盘、网络、进程等12类基本故障模拟的基础上进行了深度研发,对x86架构及arm信创架构均做了相应支持,从IaaS、PaaS、SaaS三个层次建立故障模拟能力视图(见图1),打造故障案例库,业务项目组可针对不同的检验任务,一键调用执行具体案例,达到故障模拟的效果。

  图1 混沌工程故障模拟能力视图

  以交易一致性故障模拟为例,业务项目组在日常的版本测试工作中,通过全链路压测或外部压测平台提供背景压力,在故障演练平台中选择交易一致性案例库。针对不同交易链路,平台将网络丢包、交易延迟等具体故障模拟动作,按照预设好的故障编排,依次/并行注入至业务应用节点/集群中,在执行故障模拟的过程中,进行单节点一致性校验、端到端一致性校验,确保业务应用在发生故障的情况下,交易仍可保持幂等性(见图2)。该能力的提供,可以使银行等金融系统建立起对交易一致性常态化、线上化的管控机制,切实提升相关业务系统的可用性。

  图2 混沌工程故障模拟平台故障案例库流程

  混沌工程支撑应急预案执行有效性

  面对突发的生产事件,传统的故障恢复模式主要是依靠运维专家和非数字化的应急预案,运维专家的经验越丰富、对应急预案的内容越熟悉,应急处置的效率就会越高。这种模式的弊端在于,一是对运维专家的现场处置依赖度高;二是很多应急预案没有在生产上经过演练与验证,由于生产环境的变化、预案失效等原因,无法保障应急预案一定能够顺利执行。因此,建设银行打造了一套用于故障定位和应急处置的专业工具——事件智能处置平台(见图3),将应急预案数字化为可定义、可编排、可匹配、可推荐、可执行的故障场景,在高可用模式失效的情况下快速匹配并执行预案恢复业务。而混沌工程则为验证数字化应急预案的有效性提供了强大支撑。

  图3 事件智能处置全局视图

  基于故障识别、场景编排、处置决策等能力,事件智能处置系统会自动识别混沌工程注入的故障对应场景,并自动匹配、自动推荐应急预案,生成一键式处置策略,或者人工确认执行应急处置(见图4)。故障恢复情况可以通过对故障指标的监控进行判断。数字化应急预案将专家经验结构化、数字化,并通过日常训练和优化,当生产发生类似故障,事件智能处置能够匹配应急预案并执行,快速恢复业务。

  图4 事件智能处置流程图

  目前,建设银行已经实现了167个故障场景的数字化应急预案,其中排查类145个,处置类22个,既涵盖了操作系统、数据库、交换机、路由器等对象,也涵盖了业务系统的特色应急处置操作。

  混沌工程支撑高可用演练

  系统在日常运行过程中是否具备真实有效的高可用能力,可以通过高可用对抗演练进行验证。但银行业生产系统运行环境对于稳定性要求高,无法直接在生产环境中开展高频次、全覆盖的故障演练。因此建设银行充分利用灾备环境与生产环境同构的优势,选定灾备环境作为混沌工程高可用故障演练的切入点,灾备环境演练成熟后逐步向生产推广。

  红蓝对抗是网络安全领域常见的一种对抗性演练方法,可以有效完善和提升网络安全防护管理能力。参照网络安全红蓝对抗演练形式,建设银行建立了一套高可用红蓝对抗演练机制,组建了高可用蓝军团队和红军团队。蓝军团队在故障演练平台中基于网络、数据库、存储等高可用组件的标准能力要求,针对性构建原子故障和防护机制,结合业务流量管理和集中监控能力,编排出各类高可用故障模板。在对抗演练时,蓝军团队通过故障演练平台的防护功能,建立出安全的对抗环境,采用预制参数载入高可用故障模板,快速实例化出对抗故障用例。红军团队利用智能运维平台中的事件监测系统密切关注业务运行情况,实时跟踪蓝军攻击和红军防御动态。按照有计划的和不定周期的组合策略,建设银行对信息系统进行全方位、饱和式对抗演练,有效验证高可用技术方案的可用性并提升红军技术体系的应急响应能力(见图5)。

  图5 红蓝对抗演练整体视图

  针对对抗演练过程中识别出的高可用失效风险事件,相关领域迅速复盘完善高可用技术方案,并批量化解决生产、灾备环境高可用技术风险,降低了生产系统高可用失效风险概率。

  依托混沌工程故障演练平台,建设银行开展了大量高可用故障演练实践,以FullGC场景为例,故障演练平台在灾备环境应用集群模拟了频繁发生的JVM FullGC故障场景,支持设置故障触发次数、间隔时间,并通过告警信息联动事件智能处置系统完成自动化应急处置。在基础设施故障场景中,开展网络和存储设备故障实战演练,支持关联系统和切换系统范围自动化分析判定、容灾能力评估、一键式组合执行等智能化处置,保障真实灾难场景下的事件应急响应及灾备恢复能力。

  未来展望

  建设银行将在保障生产安全的前提下,基于金融行业场景需求和混沌工程技术思想,持续探索新技术、新理念,构建集风险防御、风险发现、风险定位等于一体的一站式服务平台。通过不断丰富故障场景,同时结合故障诊断、根因分析等技术手段,对故障进行关联性分析,形成故障画像,构建金融场景的故障知识图谱,为应急方案的制定及故障预测提供依据,完善高可用管理体系,稳步提升系统处理异常事故及极端场景的应变能力,为业务稳健发展提供有效保障。

0
相关文章