技术应用 | 基于云原生的混沌工程实践

技术应用 | 基于云原生的混沌工程实践
2024年04月23日 11:27 金融电子化

文 / 北京银行软件开发中心平台架构研发团队主管    王子健

近年来,云原生的普遍流行、微服务架构的落地、新型开源技术组件的快速引进,平衡系统迭代、技术升级与系统稳定,支撑敏捷开发与迭代上线日趋频繁的现状,使得银行科技发展面临巨大转型挑战。

在此背景下,北京银行于2021年11月,通过混沌工程测试了基于云原生的统一技术底座的健壮性,验证并提升平台服务能力,并于2022年7月开始混沌工程建设工作。

平台级混沌测试实践探索

为推进数字化转型战略,北京银行于2021年1月完成基于云原生的应用技术架构体系建设,实现了业界主流的基于微服务、分布式架构设计的统一技术底座。统一技术底座属于云原生框架体系的自研技术平台,本身健壮性、可靠性需要在已有测试方法基础上增加专项测试环节,微服务架构和组件需要外部测评检验综合能力,提出优化方案,验证平台下限的抗击打能力,提升平台上限的服务治理水平。同时,统一技术底座应用规模化推广过程中,近40套业务系统基于底座开发和部署,其中包含了分布式核心、新柜员系统等关键系统。不仅如此,统一技术底座带动整个软件研发体系向微服务、分布式架构转变,相应的业务系统复杂度、运行安全性要求、应急处置难度均随之提升,需要与之相配套的模拟测试和演练实验方法论。平台自身稳定性和故障应对能力影响深远,必须进行专项的故障模拟验证,符合国家信息安全等级保护要求。针对可信安全基础设施的兼容性、高可用、故障恢复能力(MTTR)需要进行测试验证,在此背景下,开展了混沌工程能力建设和持续实践。

2021年8月起,北京银行针对统一技术底座进行混沌测试。测试周期历时3个月,围绕统一技术底座的容器云和微服务组件,结合生产环境IaaS基础设施冗余切换经验,满足信创化测试要求,辅以云原生可观测性基础能力,以分布式核心系统、新柜员系统为试点验证混沌工程在应用场景化领域的拓展效果。

整体混沌工程实践从验证系统高可用性、容错能力、可观测性、自愈能力等方面进行,共执行175个故障场景、500余个测试用例,发现37项平台稳定性能力完善,云原生成熟度由2级(基础级)提升至4级(优秀级)。首次混沌测试覆盖基础资源、平台、应用中间件、监控告警、灾备、应急预案,从基础测试到组织流程,大大提高了技术架构的弹性能力,提升云原生新核心系统上线信心,增强抵抗高度复杂应用架构下不确定性因素影响的能力,验证了统一开发平台的健壮性,验证并提升平台服务能力,保证统一技术底座按照计划开展业务推广。

混沌工程平台一期建设实践

为提升混沌演练能力,保证重大系统定期进行混沌测试的计划,北京银行于2022年建设本地化混沌工程测试平台。2022年中,开展混沌工程一期建设项目,建设混沌工程平台,构建故障模拟演练场景库,形成针对微服务、分布式架构的高可用能力矩阵。完成一套体系化的混沌工程平台建设,其中包括基础设施纳管、故障场景、介质管控、场景库管理、演练计划、实验流程、实验防护、实验观测、实验报告、权限管理及安全审计等能力。

演练素材方面,多种故障因子、场景库以及指标库可供选择。混沌工程平台分别从系统进程、方法调用、硬件资源、网络传输、应用数据五个维度,结合选取的测试范围,设计129个故障因子,这些故障因子基于Kubernetes、物理设备、虚拟主机等类型,具备自定义方式快速组合的能力,创建混沌实验时可根据实验环境选择合适的原子故障。可根据发生频率和历史生产故障选取常用故障因子作为高频故障因子,可在故障演练中优先选择进行测试。同时,提供了场景库模式,可针对不同类型原子故障的进行组合编排,串联、并行组装执行故障注入测试,创建后的场景库也可在各类环境、系统、项目测试案例中多次使用。指标库提供多层次多角度的系统监测和指标策略配置功能,实验选择故障原子后会自动匹配相应的观测指标,实时观测指标变化,为实验结果提供参考。

演练过程方面,提供多种故障注入方式、启动策略、执行方式。多种故障注入启动策略,包括手动执行、按计划执行以及随机执行,演练过程灵活可控,可随时手动暂停实验、恢复环境或终止故障注入,还提供基于指标和告警的智能终止控制。为保障演练安全,支持对爆炸半径进行控制,对演练环境快速进行恢复;支持一键终止和暂停的手动保护机制,同时支持基于指标、告警的智能终止等功能来保障演练安全性。

结果观测方面,基于项目对混沌工程实验、实验记录及实验基线进行分类划分,测试人员可以更专注于针对项目下的服务、资源和应用进行实验,有针对性的创建专属于某个项目的混沌工程实验计划,同时有效地避免实验资源及对象的冲突。提供排期功能,解决因实验资源冲突而导致实验无法正常进行,或实验结果不准确的情况,根据资源进行实验排期,合理利用有效资源开展混沌实验。实验结果显示实验编排情况、指标概览、实验事件;展示实验是否成功,可根据指标情况分析该故障是否产生较大影响;自动根据实验结果提供实验报告,可编辑可导出;实验流程的开始时间、结束时间、历时、执行情况;实验流程中各阶段性能表现和实验趋势图。

2022年11月末,混沌工程平台一期项目正式交付使用,目前北京银行混沌工程平台支持从多个层级进行系统全覆盖测试。首先,硬件服务器、容器云平台、微服务组件等基础设施和公共组件层面,均提供相配适故障类型,可根据实验环境特征进行对应实验编排。其次,在系统层面,针对核心、柜员系统等重要系统,借助混沌测试工具进行场景分析,编写脚本程序自动化注入故障因子,批量完成测试任务。同时,混沌平台对接监控告警系统,利用云原生监控手段,实验全阶段可视化。

自平台上线运行以来,设计实验计划300余条,执行实验1500余次,平均一条实验计划调整五次参数进行实验,复用率较高,其中符合实验预期的结果占实验总数的99.32%。

针对使用情况进行统计,其中PodCPU满载、Pod伸缩、Pod网络延迟是最常用的三种故障类型。通过混沌演练发现多种缺陷漏洞,提前整改。实现的功能如:通过注入网络延迟故障,发现系统上下游超时时限设置问题,提出合理性超时配置建议,提升系统间关联处理健壮性;通过混沌工程平台提供的故障观测能力,发现系统投产前监控告警阈值未设置或设置不合理,提出合理性监控指标阈值建议,提前预见监控缺失带来的问题监测失效;通过注入Pod伸缩故障,发现系统Pod重启过程中发生业务中断,提出合理性优雅停机配置建议,提升特殊状态下的业务连续性水平;通过强制杀死服务、网络延迟大于超时时间、内存溢出等故障实验,针对批处理或批量交易终端,验证批量交易缺乏补偿机制,投产前制定了针对性的人工干预重跑预案。

混沌工程平台的使用相较于传统测试方法有较大优势。与手工注入故障相比,利用混沌工程平台自动化注入故障简单便捷,操作步骤大大提高了效率,用户体验良好。实验结果统计维度一目了然,便于整体统计分析。从项目管理维度对实验进行管理,使实验更加匹配业务特征。与此同时,总结了一套基于故障注入演练的实施方法论。通过制定混沌测试指南,面向开发人员对混沌测试概念、实施方法、结果分析、缺陷修复、报告编写等环节做了详细描述。通过定义混沌测试整体流程,使开发人员明确混沌中的需求调研故障演练准备和实施、结果分析和缺陷修复,以及报告总结的流程,便于混沌测试推广和开展。

混沌工程平台二期建设实践

在2022年混沌工程平台的功能基础上,2023年年中开展了混沌工程二期建设项目,新增多核心能力建设,纳管开源多类型原子故障库,除现有支Kubernetes、主机类型故障外,支持跨平台操作系统、中间件和Windows操作系统类故障注入。进行强弱依赖能力建设,对接统一平台,获取微服务架构,感知展示服务之间的依赖关系,验证系统预设的限流、熔断、降级等策略。建设体检套餐能力,将实验经验做为故障风险检查点,针对不同技术栈和组件组合设计故障风险检查套餐,各场景经验库整合编排,形成同种类型体检套餐。通过对接测管平台,构建统一的测试平台,统一管理传统测试和混沌测试。使得混沌工程演练能力大幅度提高。

混沌工程与开发、测试、运维、业务等体系相结合,为业务连续性提供技术保证。目前,北京银行获评中国信通混沌工程实验室副理事长单位、混沌工程通过等保金标三级,云原生成熟度显著提升,已形成针对微服务、分布式架构的高可用能力矩阵。

未来,北京银行信息科技立足稳字当头、稳中求进的总方针,将在金融科技创新的稳定性建设方面投产更大投入、更强支撑,为满足云原生应用体系下的更多更复杂的实验场景,将持续深入地开展混沌工程平台建设,全面推广已建平台在稳定性测试方面的检验检查工作。面向新金融场景化的业务价值交付,提供更为全面、更加可靠的稳定性验证体系,为全行数字化转型保驾护航。

(此文刊发于《金融电子化》2024年3月下半月刊)

财经自媒体联盟更多自媒体作者

新浪首页 语音播报 相关新闻 返回顶部