2021年10月,中国人民银行等联合发布了《关于规范金融业开源技术应用与发展的意见》(银办发〔2021〕146 号),规范金融机构合理应用开源技术,提高应用水平和自主可控能力,促进开源技术健康可持续发展。前期,为助力成员单位做好开源技术应用与发展工作,北京金融科技产业联盟开源专委会组织了金融业开源技术应用、创新等方面的案例征集,现对部分优秀案例进行宣传,发挥先进典型示范引领作用。

【金融机构开源技术应用创新成果案例 第十三期】

中国工商银行——混沌演练平台产品

申报单位:中国工商银行软件开发中心

技术领域:混沌工程、分布式、云原生

技术产品:ChaosBlade

业务场景:通用

应用时间:2019年9月

一、案例背景

一、案例背景

在金融产品和服务模式不断创新的发展背景下,金融行业的日均交易量也在飞速增长,传统的单体IT架构暴露出很多缺陷。为此业界广泛应用云计算、分布式等新技术,构建分布式架构和运维体系,以支撑金融业务的快速发展。工商银行自2015年起开始IT架构转型,基于分布式、云计算初步构建了开放平台核心银行系统,目前分布式体系累计部署容器超过23万套,日均服务调用量达120亿,交易峰值逾20万TPS。与此同时,分布式体系的基础设施、底层架构、平台系统日趋复杂,不可预见的用户行为和事件交织在一起,生产运行不确定因素相较于主机明显增多,对系统、应用架构的可靠性提出了更高要求。

为解决分布式系统的不确定性,确保生产稳定运行,混沌工程应运而生。混沌工程是在分布式系统上进行实验的学科, 目的是建立系统抵御生产环境中湍流条件的能力。通常来说,混沌工程指对分布式系统中的服务器随机注入不同类型的故障,发现并修复系统中的潜在问题,从而提升整个分布式系统高可用能力。

针对以上暴露的痛点问题,有如下三点原因:一是金融行业的业务架构一直以来都相对比较复杂,尤其是在银行业务中,交易链路长,对交易可靠性、幂等性要求比一般非账务类的业务系统要高出很多。二是业务系统底层部署架构复杂,涉及诸如IBM大机,PC,虚机、物理机、容器及其他非标准设施等多种类型,随着主机下平台的推进,将大幅增加平台侧系统的运维复杂度,导致应用运行中的不确定性增加。三是由于银行传统业务运行在主机之上,故测试人员相对侧重于业务功能的测试,在分布式高可用领域测试能力还在培养和发展阶段,这也是一个薄弱点。综合以上三点,金融行业亟需探索一种可以在架构转型过程中,确保所有业务可持续稳定提供服务的机制。而混沌工程就是在分布式系统上进行实验的学科。混沌工程的目的就是建立系统抵御生产环境中失控条件的能力和信心,通过主动制造故障,提前发现问题,让业务系统更好地适应复杂多变的运行环境。

2019年,工商银行引入混沌工程,运用混沌工程技术,建成故障演练平台,形成涵盖系统、应用、容器三大类100余种故障演练能力,提供介质下发、压测发起、故障实施、环境恢复的自动化演练能力,形成常态化的故障演练机制,以夯实系统健壮性、提高应用架构的高可用能力。

二、创新成效

二、创新成效

技术方案

工商银行在建设混沌工程演练平台中主要有三大宗旨:一是要屏蔽应用架构和底层部署架构的差异。针对诸多底层设施,平台实现统一封装,对用户而言只要关注故障实施内容,无需关注底层差异。二是在故障注入工具之上,提供故障编排、任务调度、演练场景配置、自动生成故障演练报告等核心能力,实现企业级的平台能力。三是通过应用自身架构自动匹配高可用专家库的方式,达到一键生成多类故障的能力,混沌平台需要具备通用、便捷甚至智能的特性。

基于上述宗旨,工行的混沌故障演练平台整体技术框架包括基础设施、底层能力、任务调度、系统集成和上层业务。

基础设施类型包括物理机、虚拟机、容器等多种目标类型资源;底层能力指的是注入介质,集成了超100种系统级和应用级原子能力;任务调度负责将用户在前台编排的任务进行批量下发和调度;系统集成则代表混沌工程故障演练平台,集成了演练编排、监控、专家库等多个核心功能;上层业务代表各业务系统根据需求对平台进行特色化应用的场景,如进行红蓝攻防、日常演练和应用评级等。

混沌演练实施流程:

工商银行实施混沌工程故障演练,可以分为几个关键步骤:一是选定假设,明确故障场景;二是设定实验范围;三是明确监控指标;四是需要组织内沟通到位;五是开始执行故障;六是分析实验结果,并在后续复盘中根据实际判定是否需要扩大范围并进行下一步自动化故障实验。

● 一是选定假设:明确对什么场景进行故障注入,比如在系统层面可对应用服务器、容器、数据库、WAS、操作系统、网络等进行故障注入;应用层面则可以对应用软件的线程、连接池、事务、异步、队列等场景进行故障注入。

● 二是设定实验范围:需要对哪些节点实施故障注入,需要评估出现故障时可能会受到影响的应用范围,确保不会造成灾难性结果。

● 三是识别要监控的指标:在混沌演练过程中要对各个维度的指标进行全方位的监控。在所有监控的指标中,其中有四个是需要重点关注的:系统自身的健康检查、平台层面的健康检查、能否实现优雅停机、业务指标。

● 四是组织内做到沟通到位:监控指标明确之后,当涉及到上下游应用时,需要协调爆炸半径内应用的相关支持人员,确保有问题时能及时发现和恢复,所以必须做好事前的沟通,避免演练过程产生不必要的影响。

● 五是执行实验:当所有准备工作就绪后,开始执行演练。演练结束后,需对整个演练进行复盘并分析实验结果,包括是否达到预期的演练效果,假设是否成立,系统是否弹性,是否出现了预期之外的问题等,并针对故障演练中暴露出的问题,进行架构优化和漏洞修复。当在小范围的实验中获得信心之后,就可以逐步扩大实验范围,比如增加链路应用数目等,并加入自动化实验案例。

技术创新

工商银行于2019年完成混沌工程故障演练平台建设,并率先在快捷支付、聚合收单等重点业务领域开展混沌演练工作,然后逐步在全行全面推广使用。在这过程中,工商银行基于推广经验,不断优化推广方案,以降低推广难度。

(1)建设高可用专家库

为提高故障演练效率,降低推广难度,工商银行组合并封装了多类高可用测试场景,支持一键生成多类故障,具有通用性、便捷性等特点。

(2)混沌演练自动化能力建设提供了演练编排、环境安装、任务自定义执行的全流程自动化混沌演练能力,简化了测试人员手工操作,提升测试效率。

业务创新

为降低混沌测试门槛、规范混沌测试场景,形成《混沌测试工作指引》、《混沌测试公共案例》、《混沌工程故障演练平台高可用专家库使用指南》、《混沌工程演练的标准场景要求》等文档。建立常态化演练机制,通过存量混沌自动化、增量混沌演练的模式,实现混沌工程常态化演练的目标。同时引入红蓝攻防演练体系,通过丰富高可用专家库的标签能力、组建红军团队以及定期组织红蓝攻防的活动,赋能开发达到风险应急能力。

组建混沌演练专家团队,对各部门混沌实施人员进行分层培训,包括混沌演练平台能力介绍、混沌演练最佳实践案例、混沌测试工作指引等,并在日常工作中对基地各混沌人员进行点对点指导。

三、产业价值

三、产业价值

混沌工程在工商银行实践过程中体现出了其应有的目标价值,截止目前,日常使用混沌平台人员700余名,已落地300余个业务系统,累计超1万个演练案例,覆盖应用自隔离、同城双活、优雅启停等六方面生产常用重点高可用能力,帮助落地应用发现600余个高可用问题。

1、提升应用架构,增强应用高可用能力

首先完成应用去中心化改造实现全局库双活,解决了全局库故障时无法加载参数,重启容器的问题,同时引入配置中心和分布式数据缓存,降低对数据库的依赖;其次为了解决因底层ceph故障引发大量交易超时失败的问题,完成去存储依赖改造;然后优化优雅停机策略,规避投产期间容器滚动升级、重启以及应急期间容器下线等造成交易有损的问题;

2、提升应用监控能力,支持故障定位和决策

优化监控可视化展示,通过应用画像日志采集信息绘制交易链路拓扑图,从交易入口可视化展示交易链路节点信息,结合监控报警展示故障节点、园区信息,给应急决策层提供故障快速诊断定位和决策信息支持。细化监控指标,按园区(外高桥、嘉定)、渠道(银联、网联)、业务类型(支付、退款、提现、签约)分别进行监控展示;同时内外联动工商银行以及网联侧监控数据,更全面反应系统在行内和行外的运行状况,为远程决策和数据报送提供支持。

3、提升运维能力,提高故障应急效率

应用自隔离方面,增加对数据库和服务的可用性探测,提升容器节点故障下的自隔离能力,实现单节点、集群、园区级故障下交易自动接管,系统分钟级完成自隔离自恢复。人工应急方面,细化应急手册,针对不同故障类型、故障影响范围制定不同的应急操作方法,提高应急处理效率。

后续工商银行也将持续全面推广混沌工程文化,建立常态化的攻防演练机制,持续提升金融系统稳定性水平。

本文来源:开源专委会
投稿邮箱:News@bfia.org.cn