其他
【FIW2022 精彩回顾】华能贵诚信托核心业务系统 Kubernetes 落地实践
The following article is from FCC30+ Author 王昆
精彩推荐
华能贵诚信托有限公司(以下简称“华能信托”)基础架构负责人王昆就华能贵诚信托核心业务系统 Kubernetes 落地实践作了分享。
一、项目背景
在业务层面,系统将大量需要录入的信息从历史项目复制过来,使业务人员从重复性的工作中释放出来,使员工工作效率提升了 50% 左右。
在数据标准化层面,系统能直接满足监管报送要求,把各个监管机构要求的对应信息从系统层面在项目建设伊始就已经融入整个系统中,实现监管报送无缝支持。
在公司战略层面,系统提供了准确、全面的业务数据,为高层领导决策分析、公司战略发展提供数据支撑。
新一代信托综合业务系统采用比较先进的基础架构,整合了信托日常工作中常用的业务,包括对第三方的产品和服务进行整合,实现了以客户为中心,提供包含信托业务展业平台、TA 资金平台、销售管理平台、信托综合业务管理,以及与第三方系统的交互,包括信托财务的核算模块、监管报送、老系统的数据迁移等。
新一代信托综合业务系统包含了华能信托最重要的一些业务,对系统的稳定性、安全性、可靠性和快速介入有较高的要求,要求 7×24 小时不间断运行。要建立长期稳定可靠高速接入的环境,现有的基础平台无法满足需求。
基于此,华能信托从 2019 年开始组织内部员工进行 K8s 的调研和学习,并组织通过 CKA 考试;2020 年 9 月,搭建了 K8s 的测试环境,并把部分业务迁到 K8s 的集群上进行验证;2021 年 3 月,完成了 K8s 开发环境的搭建和核心业务的整体迁移;2021 年 9 月,测试环境全部迁移到 K8s 集群中;截至 2022 年 9 月底,测试系统已稳定运行一年,后续核心系统生产业务也将陆续迁移至 K8s 生产集群,计划 2022 年 10 月以后投产。
二、核心业务系统介绍
华能信托核心业务系统是一个全流程管理的平台,打通前台、中台、后台业务流程,可实现从前端业务部门的申请提交,到领导审批、财务审批,再到最终的核算及监管报送的流程化管理。核心业务系统与其他部门系统及第三方系统进行了集成,包括 OA、家族信托系统、资产证券化系统、自动生成凭证、恒生估值系统等。此外,该系统也对接了短信平台、邮件平台和电子签章,实现了线上合同的电子签约;与各个银行对接,实现线上划款;与增值税开票系统对接,实现了发票的自动开票及电子票的推送。
在整体架构方面,核心业务系统包括五个部分:一是业务流程处理平台,包括信托项目的全生命周期管理、资金运用管理和季度结息等功能,可以完成数据录入、系统自动结息,全面实现自动化管理。二是 TA 销售管理平台,可实现资金端的全生命周期管理和银行代销数据的管理。三是财务会计平台,通过对信托财务模块进行重构,将相关功能集成到业务系统中,包括核算管理、核算场景设置和年终收益结转等功能。四是一体化监管报送平台,内置了人民银行、银保监会、中信登等 10 余个报送模块,在核心业务系统进行统一管理。五是第三方交互平台,具备外联接口监控和监控报警功能。
在技术架构方面,核心业务系统主要包括项目立项、审议、实施、中后期管理、项目清算、代销及委托端管理。信托管理的子业务系统中包含了信财管理,即上文提到的财务模块,其中有风控决策子系统,以及其他的总部业务管理系统。华能信托打通了新核心业务系统与旧系统,通过 ETL 工具将旧系统的数据迁移到新系统,底层技术支撑包括流程引擎、规则引擎、基于 ClickHouse 开发的大数据平台、基于方案报表开发的内部报表平台、SpringBoot 和 Kettle 工具等,同时还搭建了内部的大数据平台及报表展示平台。
在微服务架构方面,核心业务系统前端使用 Keepalived,可实现集群负载均衡的管理,并能够实现动态负载;中间层为从 Nginx 到前端的 SpringCloudZuul 的网关,网关对接的是后端各个资金项目、资产、结息、财务、TA、家族、ABS 等微应用;底层包括基础服务、流程服务、引擎组件,以及对外提供的 OPENAPI 应用;数据库包括 Redis、RabbitMQCluster、MinIO、MySQL 等。同时,这些微应用也通过 ELK 进行日志收集,包括 Zipkin 的链路追踪,实现了统一微服务治理。
三、K8s 容器管理平台
华能信托搭建了三套 K8s 集群,包括开发环境、测试环境和生产环境。K8s 架构如图 1 所示。
图 1 K8s 容器管理平台
目前,生产环境的一个集群有 22 个节点,包括 3 个 Master 节点和 19 个物理节点。其中,3 个 Master 节点放到了 SmartX 的虚拟化平台上面,其他 19 个物理节点通过物理机构建。测试环境的一个集群有 27 个微服务,默认为两副本,跑了 54 个容器,可从注册中心获取微服务以监控整个测试环境的资源利用情况。
四、DevOps 流水线
华能信托的 DevOps 流水线具体流程是:首先,从 GitLab 上面拉代码执行单元测试、代码扫描;其次,构建推送到 Harbor 镜像仓库,发布到开发环境的 K8s 集群;再次,开发验证通过后提交代码到根 GitLab 上,合并到测试分支后再提交到测试环境;最后,测试人员进行测试,在测试通过后把代码合并到生产分支,再进行发布。
在 DevOps 开发平台(如图 2 所示)中,开发人员只需在 GitLab 上修改参数,即可实现代码从发布至虚拟机到自动发布至 K8s 集群上的转变。同时,K8s 集群既支持直接从源码构建,也支持从外部拉取已编译好的二进制镜像进行发布。目前,K8s 集群还缺少单元测试,尚处于初级阶段,后续将借助自动化工具实现自动化测试,提升程序的健壮性。
图 2 DevOps 开发平台
五、可视化运维与监控
华能信托的开发人员通过 Jenkins 构建代码并将其发布到 K8s。和传统运维不同,在实现流程自动化之后,如果中间环节出现问题很难定位,所以监控就比较重要。目前,Jenkins 自带的编译工具在每一步都有完整的日志记录,可直接使用 Jenkins 默认的内部记录编译日志进行问题查询。除了 Jenkins 编译,华能信托还构建了 K8s 监控集群,对整个集群的 CPU、内存、存储和容器进行整体监控,包括 etcd,整个集群健康的状态能够通过可视化界面呈现出来,如资源、API 的调度情况等(如图 3 所示)。
图 3 可视化运维与监控架构
此外,华能信托还在 K8s 集群上部署了一个 KubeSphere,在实现对整个 K8s 集群进行监控的同时,还可对线上人员的权限进行管理。除了监控集群状态,KubeSphere 还能对 Node 节点的状态进行监控,在可视化界面完整展示所有节点的状态,包括 CPU、内存、磁盘 Node 数、负载数量等,在出现问题时能够及时告警;对容器的监控包括容器的运行状况、资源利用情况以及历史情况。
KubeSphere 对整个集群的监控依赖于 K8s,如果 K8s 本身出现问题将导致监控失效。因此,在 K8s 外层,华能信托引入了 Zabbix,对节点以及 K8s 整个集群状态进行监控,如果 K8s 的整体集群没有问题,可以通过 K8s 里的监控来掌握集群、Node 节点以及容器的状态。如果 K8s 集群出现问题,可以通过外部的 Zabbix 进行监控,达到类似灾备的效果。
推荐阅读: