菲龙网编辑部7 发表于 2024-4-8 11:53

实战 | 工商银行混沌演练场景探索及典型案例分享



文 / 中国工商银行金融科技研究院云计算实验室
在金融业数字化发展背景下,金融产品和服务模式不断创新,银行信息系统已逐步从原有的单体集中式架构转向分布式架构,实现了灵活、高效的服务特性。工商银行从2015年开始,率先启动IT架构转型工作,全面实施金融云平台及分布式体系的建设工程,基于容器、微服务等云原生技术构建了坚实的数字化基础支撑。相对于集中式架构,分布式架构下的部署结构更为复杂,对系统的可靠性提出了更高要求。为此,工商银行于2019年引入混沌工程理念,并在信创转型、主机下移、单元化架构转型过程中,充分发挥了混沌工程在生产稳定性保障中的作用,有效保障了系统稳定性和业务连续性。本文侧重从工商银行混沌工程演练平台建设情况和金融领域演练场景探索实践两个方面来分享。
混沌工程演练平台建设
工商银行采用“自研+开源”方式构建故障演练平台,提供故障编排、介质下发、任务调度、演练防护、演练可视化监控、环境恢复、演练报告自动生成及一键式自动化演练等能力,在满足了日常混沌测试演练需求的基础上,提供了支持红蓝攻防、应急演练和灾备演练等高阶能力,持续检验并提升应用高可用水平和运维水平。下面,将重点从混沌演练平台的技术架构、故障注入能力以及高可用专家库建设经验三大方面进行阐述。
1.混沌工程演练平台的技术架构介绍
工商银行在混沌工程核心能力规划上遵循三大宗旨:一是要屏蔽应用架构和底层部署架构的差异,针对诸多底层设施,实现统一封装,对用户而言只要关注故障实施内容,无需关注底层差异。二是在故障注入工具之上,提供故障编排、任务调度、演练场景配置等核心能力,实现企业级平台支撑。三是支持基于应用自身架构特性自动匹配高可用专家库,达到一键生成多类故障的能力,降低使用门槛。
基于以上三大宗旨所关注的能力封装、配套服务和演练策略核心要点,工商银行将混沌演练平台分为五个层次,其中基础设施、底层能力和任务调度实现能力封装,做到对用户透明;上层业务和系统集成实现配套服务,如通过混沌演练平台与持续集成环境、性能测试平台集成,基于高可用专家库演练场景,形成自动化演练和持续守护能力,全面提升混沌演练效率。同时,故障演练平台提供的特色化服务,如混沌测试、红蓝攻防、灾备带压演练等场景;平台管理则实现演练策略核心要点,包括流程编排、故障注入、演练监控、安全防护、分析度量等核心能力,为用户提供演练实施、观测和度量的便利性(如图1所示)。

图1工商银行混沌工程故障演练平台架构示意图
2.混沌工程演练平台故障注入能力建设
工商银行故障演练平台屏蔽应用底层部署差异性,将物理机、虚拟机、容器等多种基础部署环境透明化,形成系统、应用、容器三方面故障演练能力,覆盖三大类100余种故障类型。同时,基于工商银行云平台特性和平台能力支撑,自顶向下形成SasS、PaaS、IaaS各层丰富故障注入能力,依托平台可视化灵活配置,高效易用满足如优雅启动、优雅停机、自动扩缩容、容器自愈、限流熔断、NOS缓存熔断、数据库故障等各类演练场景需求(如图2所示)。

图2工商银行混沌工程故障能力和专家库示意图
3.混沌工程演练平台高可用专家库经验分享
高可用专家库是验证应用高可用水平的方法和策略组成的专业领域知识库,是混沌工程测试人员通过生产问题总结、混沌测试实践、业界场景探索等方式归纳总结得到的高可用测试模型。工商银行为了降低混沌演练场景设计难度,提升混沌演练效率,结合金融领域业务和架构特点,重点建设了金融领域混沌演练高可用专家库,包含应用层、数据库层、平台层、缓存层、消息中间件层、路由层等六大类上百种演练场景案例,覆盖应用自隔离、同城双活、优雅启停、限流、降级、熔断等多方面重点高可用保障能力。通过金融领域高可用专家库建设工作,较大程度地降低了混沌测试门槛和资源投入成本,并为后续基于应用自身架构特点自动化匹配高可用专家库下的测试案例,实现一键式生成故障演练任务的高阶能力夯实基础(如图2所示)。
金融领域演练场景探索实践
快捷支付作为工商银行的重点业务,对系统的可用性、稳定性、容错性等要求非常高。首先,快捷支付的整体交易链路复杂,涉及多个业务应用系统,针对不同的业务场景,快捷支付需要调用后端不同应用系统提供的分布式服务,以个人金融服务为例,个金业务系统作为服务提供方,将个金相关业务的服务注册到注册中心,快捷支付作为服务消费方,从注册中心定义个金的服务。其次,快捷支付业务场景是一个双活的架构设计,业务服务器和注册中心均部署在A、B两个园区,无论哪个园区哪个环节出现故障,都不会影响整个系统的运行。但在实际运行过程中,常常会因为基础设施的偶发性故障(网络故障、存储故障、服务器宕机等),影响快捷支付交易成功率(如图3所示)。

图3快捷支付演练实例示意图
演练场景基于快捷支付链路个金业务涉及的重要节点,针对快捷支付链路开展服务提供方/服务消费方节点异常、注册中心集群异常的进行故障设计。结合快捷支付涉及的重点节点和基础设施可能会发生的故障问题,制定可实施的故障演练场景,并逐个开展演练。
按照全链路交易流程,开展网络、硬盘、进程破坏等故障注入,观察快捷支付链路的交易成功率、TPS、交易耗时变化,同时制定交易成功率、TPS在一分钟内恢复正常的系统稳态指标。
演练场景见表1,演练结果见表2。
表1演练场景


表2演练结果


根据上述演练结果进行分析,主要发现两个问题。
一是当A园区“个金路由层”节点全部故障时,会出现雪崩效应,最终导致A园区整体不可用。某个应用节点的故障,会引起园区级故障,容错性非常低。
二是当A园区注册中心恢复期间,大量服务提供方开始重新注册,消费方开始重新订阅。当提供方只注册了少量服务到注册中心时,消费方正好拉取了新的服务列表,并更新到本地缓存,就会出现可用服务急剧减少,服务调用出现大量线程不足、超时等异常情况。
优化措施:采用双园区注册、订阅的方案。A园区的服务提供方,同时注册服务到A园区和B园区的注册中心;消费方也同时订阅A园区和B园区的注册中心。B园区亦然。经过再次验证后,上述问题解决。
成果总结及未来展望
截至2023年底,工商银行已有超过300多个应用系统开展了基于混沌工程的稳定性测试,并逐步建立高可用专家库、故障自动化能力、常态化演练机制及红蓝攻防演练机制。2023年全年累计完成9971个混沌演练场景测试,共发现163个高可用问题。通过混沌工程实践,工商银行在系统高可用服务能力、生产应急响应处理时效等方面都有了较大的提升。
后续工商银行将基于大模型、机器学习等技术,在系统自动稳态判断、智能化演练案例生成等能力方面深入探索,进一步提升混沌工程实践效能,为持续提升高水平系统稳定性保障能力保驾护航。
(此文刊发于《金融电子化》2024年3月上半月刊)
页: [1]
查看完整版本: 实战 | 工商银行混沌演练场景探索及典型案例分享