华为存储CLUB
作者华为存储CLUB·2023-08-01 10:06
CLUB专员·华为存储用户俱乐部

金融行业数据库容器化中如何保证性能及设计高可用架构?—— 7月22日华为存储MVP赋能活动邀您回顾

字数 6321阅读 3382评论 0赞 0

以容器为代表的云原生技术是大势所趋,有状态应用如何实现容器化是困扰很多企业生产容器云落地的难点,例如容器的无状态特性带来的数据持久化问题、容器是否能满足数据库对I/O 的性能要求以及高可用架构要求问题、容器的虚拟网络对应用连接数据库增加了复杂度问题等。除了以上常见的讨论热点,金融行业对容器应用本身的技术经验积累问题以及容器环境下面临的安全防控能力挑战,均是数据库容器化在金融业仍无法迈开步子大规模普及的原因。

但容器的灵活性、便捷性能力显而易见,介于此,如何通过新技术手段,解决数据库容器化中所出现的问题,例如通过对接共享存储,实现容器数据库的持久化、高可用、性能问题,规划合理的容器网络应用和数据库区,解决金融业对于基础架构的高稳定、高性能、高灵活度需求,需要大家共同研究共同讨论,解决新技术带来的问题从而享受新技术给我们企业生产带来的效能提升。

7月22日,华为存储用户俱乐部组织主题为 “金融行业数据库容器化中如何保证性能及设计高可用架构?”的MVP赋能活动,邀请来自银行的存储专家与华为专家进行分享,华为存储MVP及MVP候选人共同参与探讨。

社区根据用户专家、MVP、潜在MVP的反馈,甄选了在该主题方向下的核心议题:

议题一:数据库容器化如何保障I/O性能要求(特别是关系型数据库)?

议题二: 数据库容器化如何设计高可用架构保障业务连续性和数据安全性?


本次活动邀请中信银行资深容器云专家毛凯担任本次合作伙伴赋能培训活动的主持人,中国银联云计算中心解决方案架构师沈达、中国民生银行数据库架构师孔再华、华为闪存存储组合产品管理专家武装担任本次活动的分享嘉宾。本次交流活动共同探讨数据库容器化集群划分、存储规划、性能保障、高可用架构设计等方面面临的困境,深入交流数据库容器化在金融行业运用的实践和前景,协力推动金融行业数据库容器化进一步发展。

此次活动共有33位华为存储MVP及MVP候选人参与,其中银行用户14人,占比为42.42%,其余用户来自保险、证券、金融科技等行业。

在用户专家分享环节

沈达老师分享了《中国银联数据库容器化性能及高可用架构实践分享》。首先从监管层面和安全需求出发,介绍了数据库容器化的背景以及数据库容器化的价值,即:在混部场景下更好地实现资源隔离、避免数据库实例间的相互干扰,一键化部署、降低部署复杂度,降低维护成本,提供资源池化管理能力等。其次从总体逻辑架构、应用架构、设计思路、技术架构、平台容器技术、容器管理框架等方面全方位深层次的阐述了中国银联数据容器化平台的五高可用架构。该平台采用Docker容器技术、Swarm容器管理框架以及自主研发的容器数据卷管理器StorageMGM ,实现了快速部署、资源动态调度、平台化规模运维、问题精准定位。第三,披露了该平台在高可用、高性能、平台管理规模等UTA测试关键指标方面的实际测试结果。

现阶段,该平台已为近600余个业务系统的共计一万余个数据库实例和中间件节点提供数据库和中间件服务,并在银联春节红包、双十一、双十二等重要营销活动中,提供强有力的数据库支撑服务。银联最核心的清算系统现也已完成100%的容器化改造,对金融行业数据库容器化实践具有重要参考意义。

在华为专家分享环节

武装老师分享了《基于存算分离架构的数据库 容器化方案》。首先,分析了当前数据库本地盘部署存在的问题主要有:一是资源利用率低,故障处理能力低,影响周期长;二是在运维层面,扩容难、固定容量限制;三是替换难,应用迁移数据慢、数据无法共享,容器无法漂移,多应用容灾较为复杂。其次,详细阐述了容器+外置企业NAS具备了多读多写可共享、应用适配性强、自动漂移、秒级拉起、租户体系天然对接云平台、完整的认证鉴权能力、两地三中心的应用级容灾、资源(容量/IP)可视华等诸多优势,总结出在容器存储选择中,企业NAS已成为金融客户的主流选择,在海内外有大量实践案例。再次,分享了在存算分离架构下,企业容器平台探索:一是基于同城异步ADG+日志存储同步+异地存储异步技术架构的华为BCManager工具,可打通Oracle+存储同城容灾联动,实现同城RPO=0;二是采用华为GaussDB存算分离双集群容灾架构,实现全栈数据库去0,打造高性能高可靠新标杆;三是正在加速推进轻量化、少副本、少节点的GaussDB/OpenGauss共享存储方案等。最后介绍了MySQL+ K8S+ NOF + Dorado,MySQL +企业NAS + Binlog下沉存储复制、同城RPO=0容灾方案、Kafka+容器+企业NAS等依托企业NAS底座,围绕应用构建方案/平台/产品三层体系的数据库+容器的创新解决方案实现原理及其实际探索。

互动交流环节中

参会用户积极提出了自己在数据库 容器化过程 中,如何规划 容器集群、如何实现数据库连续性和一致性 的痛难点问题,整体交流提问涉及的问题涵盖容器存储 的 方式及优缺点、容器集群如何划分和管理、多数据库共用一个容器集群 如何 规划、数据库容器化后 如何实现 同城双活 等 方面,与会的专家老师也都相应给出了技术解答。精彩问答节选如下:

1. 某城商行用户提问: 数据库通常有性能要求,会开辟出如buffer pool等工作内存区域用于对数据、执行计划等进行缓存。在容器环境下,数据库是如何对内存进行分配的?如何保证该部分内存保持相对稳定?

用户专家沈达回复: 容器资源本身是隔离的,它通过固化在电容器中的脚本设置来设计数据库参数。当对容器内存进行动态扩容后,会相应调整脚本,并同步至数据库参数中生效。

2、 某保险用户提问:数据库 容器化后如何保障I/O 性能 要求 ?同一个物理节点跑多个云数据库,如何减少相互影响?数据库 容器化后如何保障故障/ 漂移 对应用无影响?

用户专家沈达回复:

为保障数据库容器化后的 性能 ,建议 数据库底层优先使用 本地 固态盘 ,再辅配NAS存储保障业务 备份 、 恢复 。如果单节点数据库无法满足性能需求,建议可以进行应用改造,以支持多分片分布式数据库。对于单台物理节点上部署多个云数据库的情况,由于数据库部署在裸机上,业务应用在前期进行资源申请时已开展过相关性能评估,通过这种方式尽可能降低多个数据库在单台物理机上出现大量I/O类操作,影响性能的情况。

在数据库容器化后的稳定性,银联目前采用的是自研组件代理实现切换,尽可能降低影响,基本实现应用无感知。

用户专家孔再华回复:

目前我行测试环境数据库使用了o penG a u ss,全部实现了容器化。就存储性能而言,经过大量详细测试发现:数据库容器化后,一台物理机上装载多个数据库容器,当存在大量数据访问的高性能业务需求时,由于分布式存储带宽较大、盘数较多,分布式存储稳定性更高。因此,我行现有数据库容器化环境存储已全部从本地化存储切换为分布式存储,以解决本地盘存在的性能瓶颈、容量瓶颈,同时可以实现pod漂移。

数据库容器化后,就数据库高可用性而言,在充分利用容器平台本身的高可用性,实现pod漂移的同时,采用数据库级别的主从复制实现主从切换来保障高可用性。

3.某农商银行用户 提问:*容器化的数据库应用中数据持久化卷的介质如何选择,是选择NAS还是SAN?如何保证I/O性能?

华为专家武装回复:

(1)从历史习惯上,更多客户习惯于使用SAN存储,但是大家可以回顾一下,之所以采用SAN存储,是因为DB2/Oracle等主流生产数据库都具备企业级的文件系统,比如Oracle的ASM,具备多节点数据共享、数据自动均衡、镜像,数据再均衡等一系列企业级能力。从产业视角,当数据库足够强大,是会考虑做文件系统,降低副本数量,简化对外置存储的要求,尤其是更适配数据库要求的定制化文件系统。

(2)回到信创背景下的今天,绝大部分数据库是源于MySQL或者PG 等开源数据库,自身并不具备企业级共享文件系统,所以才有了当前多副本的数据冗余机制,消耗了大量的容量资源。同时,基本都采用了本地文件系统对接外置存储或者本地盘。而本地文件系统的相关能力,是无法与企业级文件系统相提并论的。首先本地文件系统不能跨节点共享,只有本地能力,其次,自动均衡等等能力也十分受限,各种增值能力,如快照等等,都不具备,容灾能力就更无从谈起了。

(3)无论从容器本身视角看,还是企业级文件能力来讲,在国内配合国产数据库,企业NAS都是更好的一种选择。从容器视角看,从云的适配能力,从租户的权限管理,从漂移能力,从RWX共享等等,企业NAS都更适合容器平台;从数据库视角,其实国内头部客户,多年前就已经采用MySQL + 企业NAS的主流方案,在海外,如知名的ERP公司,SAP,90%+的数据库跑在N厂商的企业NAS上,完全满足性能,可靠性的相关诉求。从容器结合数据库的视角看,企业NAS更适合提供高可靠高性能高安全的外置文件系统,年内就会支持NFS over RoCE/NFS+等高阶能力,比传统TCP提升50%+性能,同时支持多节点并行访问,控制器失效、阵列失效业务不影响的能力;同时,结合容器平台的固有底座优势,提供快速漂移等平台化能力。未来,从华为存储的视角,更建议金融客户使用企业NAS存储承载容器化数据库的数据底座。

4.某理财公司用户提问:(1)传统数据库如何解决I/0需求?规划高I/0需求的容器数据库,对存储规划需注意什么?(2)容器存储有几种方式及其优缺点?(3)容器数据库对比传统数据库的主要变化在哪里或者是在架构上的哪一层发生了变化?(4)容器集群如何划分和管理?是多数据库共用一个容器集群?如果是的话,相关的规划要注意什么?

用户专家沈达回复:

(1) 对于传统I/O系统数据库,根据以往经验,建议使用固态盘来保证磁盘的I/O。如果单个节点无法满足需求,建议使用多分片数据库或者使用分布式数据库。对于高I/O需求的容器数据库,建议使用企业级NAS存储,实现pod漂移和高可用。

(2) 容器存储分为本地存储和分布式存储两种模式。本地存储成本较低,时延控制好,后期扩容较繁琐;分布式存储可动态扩容,资源使用率及分配更加合理,但是成本比较高。

(3) 与 传统数据库 相比, 容器数据库在时间分配 、 数据库备份 、 迁移 以及 高可用 业务场景下 灵活性更高 , 对应用 层 相对 更 透明。

(4) 容器集群 的 划分要充分考虑高可用性, 如:需在 创建数据库容器时 制定 相关规则 , 数据库 的 主备容器 须 分布在不同的物理机上,同一套数据库 的 主备分布在不同的集群中 , 不同 的 集群 应部署在不同的 物理机 、接入不同的 交换机等, 上述均 是 需 关注 的重 点。

5.某证券公司用户提问:数据库容器化后是否可以实现跨机房同城双活?应用数据库的连续性和一致性如何保障?

用户专家沈达回复:

数据库容器化会使同城双活实现更简单,可以将数据库储备在不同分片,多数据库分布在不同的集群。银联目前不同集群或站点对应在不同的机房,通过自研组件实现多套数据库之间的秒级数据同步。

华为专家武装回复:

(1) 先抛开容器来讲数据库的问题,客观而言,无状态应用实现双活较为常见,但数据库跨机房双活目前尚未实现。双活指的是数据库在同城两个数据中心的两侧都支持读写能力。

(2) 生产数据库的天花板Oracle本地支持RAC能力,是本地高可用的能力,但是如果是同城数据中心,超过20公里通常采用主从ADG模式,从端可读,实现高可用。也是典型的AP逻辑,也没有实现双活读写的能力。

(3) 同样,国产主流数据库连RAC都不支持,更谈不上同城双活,绝大部分数据库的双活,都是以宣传为目的的混淆视听。

(4) 数据库的业务连续性或者容灾,常见的经典方案就是上层走ADG,下层走存储复制日志。ADG保证快速切换能力,存储传输日志保障RPO=0的能力。应用一致性需要依赖数据库自身的快照能力,存储层主要是保证存储一致性。

容器本身对数据库的双活,或者一致性等等,并没有影响,只是承载平台从物理机变成了容器。只是产业出现了一种比VM性能更高,资源消耗更小,更接近物理机环境的硬件虚拟化平台。

用户专家孔再华回复: 数据库容器化后两地三中心的建设,可实现同城不丢数据,但异地无法实现RTO为0。容器化云平台的两地三中心在顶层架构上有两种部署方式:一是一个K8S集群部署至不同的中心;二是每个中心中部署各自的K8S集群。第一种部署方式可以基于K8S内部实现如pod直接漂移到同城集群、整个集群可以在同一个operate中进行管理等,但可能会存在:如单中心故障、多中心故障、集群软件或者其他任何的因素出现整个集群不可用时会导致整个灾备中心全盘覆没等不确定风险。第二种部署方式是每个单中心单独部署K8S集群,那么在两地三中心的灾备建设中就会拥有三个中心、三套K8S集群。数据库容器化部署后,它支持同一套数据库集群能够部署在三个中心的不同的K8S集群中,那么在不同K8S集群中的数据库节点逻辑上又同属于同一个数据库集群,这些数据库节点之间做好主从复制、数据同步,从而实现两地三中心的数据容灾备份。在这种部署方式下,需要在顶层设计一个完整的数据库管理平台,通过该平台去查看、监控、管理所有的数据库集群以及数据库同步工作,实际上仍然沿用了原金融行业中两地三中心的建设思路。就数据同步的方式而言,采用数据库日志复制还是利用存储传输,还有待后续探索。数据库日志直接通过存储中的文件系统同步至备中心,备中心数据库在读取日志后完成回放。现阶段,大部分数据库不支持这种方式,高斯数据库现已支持,但尚未完全开放,有待后续观察。

本次活动中,针对数据库 容器化过程 中,容器集群如何划分和管理 ,如何规划高I/0需求的容器数据库的存储 形成了诸多重要的共识,概括如下:

1、 容器集群如何划分和管理?容器集群的划分要充分考虑高可用性,如:需在创建数据库容器时制定相关规则,数据库的主备容器须分布在不同的物理机上,同一套数据库的主备分布在不同的集群中,不同的集群应部署在不同的物理机、接入不同的交换机等,均是需关注的重点。

2、 对于 高I/0需求的容器数据库,对存储规划需注意什么? 对于高I/O需求的容器数据库,建议使用企业级NAS存储,实现pod漂移和高可用。

3、 在哪些场景下适宜使用数据库容器化?(1)交易和交换系统:用来进行股票、衍生品等交易。这些系统需要快速处理大量交易,容器化数据库可以提供良好的可伸缩性。(2)核心银行系统:如核心银行账户系统、核心行业务支出系统等。这些系统需要高可用性和高性能,容器化数据库可以方便进行水平伸缩。招商银行就使用了Kubernetes容器编排技术来管理其核心系统中的数据库容器。(3)保险行业系统、风险管理和分析系统:这些系统需要处理大量的数据,容器化数据库利于横向伸缩。中国人寿保险就使用了Kubernetes容器编排技术来管理其核心系统中的数据库容器。(4)财务和会计系统:如清算和结算系统。这些系统中也开始采用容器化的MySQL、PostgreSQL等数据库。(5)客户关系管理(CRM)系统:跟踪和分析客户信息。CRM系统也开始使用Docker等工具容器化自身的数据库层。(6)反欺诈和监控系统:这类监控系统也会采用容器来部署数据库和其他组件,得益于其高可用性和可伸缩性。总之,主流金融机构如银行、证券商等,都在逐渐将核心应用及其数据库部署到容器或Kubernetes中,来提高系统的弹性和敏捷性。容器化数据库已经成为金融行业中的一个趋势。

如果觉得我的文章对您有用,请点赞。您的支持将鼓励我继续创作!

0

添加新评论0 条评论

Ctrl+Enter 发表

本文隶属于专栏

活动总结
活动总结是社区交流活动内容的总结及延伸,为大家提供了社区专家们丰富且高水平的理论知识、实践经验以及常见问题的最佳解决方法,非常值得大家收藏学习。

作者其他文章

相关文章

相关问题

X社区推广