胡盼盼 | 微众银行数据库平台负责人
【摘要】随着金融业务持续增长,数据库存算一体的部署架构在可靠性、扩展性和资源利用率等方面的局限性逐渐显现,而存算分离架构能够实现计算和存储资源的独立扩展,进一步提升数据库服务的可靠性。我行自2023年下半年开始调研数据库存算分离的方案,经过详细的产品调研和长久的POC测试验证,我们最终选用华为智能盘框存储设备OceanDisk作为存算分离架构的外置存储池,结合TDSQL、鲲鹏计算服务器以及欧拉操作系统,实现全栈国产化数据库存算分离架构,并顺利投产上线,有效解决存算一体下服务器存储稳定性差、扩展性差、节点重建效率低以及资源利用率低等痛点,整体TCO成本预估下降35%以上;创新性采用软硬件双层高可用和半集中式轻量化存算分离架构,在充分发挥存算分离架构优势的同时,也规避了存储集中带来的整体风险;采用标准化的架构和协议,方案易复制易推广。
一、项目背景
金融业作为信息技术应用的前沿阵地,展现出对新技术的较高敏锐度和快速响应能力。中国人民银行印发的《金融科技发展规划(2022-2025年)》中,强调打造数字绿色服务体系,建设绿色高可用数据中心,架设安全泛在的金融网络,布局先进高效的算力体系,夯实数字基础底座,助力数字金融高质量发展。
在创新发展和安全可控的双重驱动下,我国数据库作为金融信息系统的重要组成部分,在金融机构中的持续创新应用有效推动数字金融安全生态的构建。随着金融业数字化转型的深入,金融数据库架构正逐步从传统封闭走向创新开放。在此过程中,数据库存算一体架构可以有效满足金融新兴业务初期对快速和敏捷交付的需求。但随着金融业务的增长和基础设施规模的扩大,存算一体架构在可靠性和扩展性方面的局限性逐渐显现。因此,开放解耦的存算分离架构,不仅能够根据业务需求实现计算和存储资源的独立扩展,提供灵活的弹性扩缩容计算能力,还能利用存储的高可靠性优势,进一步提升整个集群处理海量数据的可靠性,重新成为数据库场景的架构选择。
我行的核心数据库采用腾讯云国产数据库TDSQL产品,采用存算一体本地盘服务器架构,在线业务数据存放于数据库服务器本地高性能NVME SSD盘。TDSQL数据库采用单实例主备强一致性同步架构,通过在应用层进行单元化拆分,实现水平扩展性。经过多年的稳定运行,该架构支撑了我行近十年的业务快速发展,同时数据库规模也快速增长。但随着数据库服务器的规模快速增长,本地盘存算一体的硬件部署架构,也存在以下几个问题:
(1)业务连续性影响:本地盘服务器故障率较高,经实际生产测算,本地盘服务器的年可用率约为99.9%,且大部分原因为服务器本地盘故障。根据生产环境实际的统计数据,每年因本地盘故障发起的自动或人工数据库主备切换可达20次以上,每一次切换都会引起数据库服务抖动,进而影响业务连续性。
(2)资源扩展性不灵活:本地盘单盘容量固定,IOPS性能有上限,无法灵活扩缩容。当前我行使用的单盘NVME SSD约3.2TB,限制了数据库一个单实例的容量,当业务需要4TB、6TB等数据库需求时无法灵活扩缩容。
(3)计算与存储资源利用率不均衡,存在资源浪费:在存算一体架构下,计算与存储资源绑定,无法根据业务场景的需求去灵活调配计算资源和存储资源,导致整体的资源利用率低,成本高。根据生产运行的实际数据统计,80%左右的服务器CPU平均利用率在10%以内。
(4)节点重建效率低:在存算一体架构中,如果数据库备节点服务器故障,就需要切换到新的服务器节点,并进行数据重建,需要从其它数据节点全量拷贝数据,效率低,同时在重建期间会带来可用性风险。经生产数据统计,重建2TB的数据库节点约需2小时。
基于以上痛点,我行自2023年下半年开始调研数据库存算分离的方案,经过详细的产品调研和长久的POC测试验证,我们最终确定采用华为OceanDisk智能盘框存储系统作为存算分离架构的外部存储资源池。该方案与TDSQL数据库、鲲鹏服务器以及欧拉OS协同配合,成功构建了完全基于国产技术的存算分离数据库体系,并已实现稳定运行。
二、架构设计与建设要点
1、架构设计
如图1所示,在数据库存算分离架构中,计算层采用X86或ARM架构服务器进行虚拟化部署,存储层采用华为OceanDisk存储池。数据库服务器通过高速RoCE网络协议直接访问OceanDisk。
数据库以资源池的形式交付。一个资源池包含多台计算服务器和3台OceanDisk,这部分硬件资源均匀分布在3个不同的数据中心(IDC)。
在计算层面,通过TDSQL一主两备的三副本架构实现计算节点高可用和主备数据一致性,主节点可读写,备节点只读。主备间通过binlog做数据同步,由TDSQL内置强同步机制保证主备数据一致性。单台计算服务器可部署多个TDSQL实例,通过Cgroup技术为每个实例设置CPU资源限制,也可直接使用虚拟机或者容器来分配计算实例。每个实例使用独立的存储逻辑卷,借助OceanDisk的SmartQoS特性,设置单个逻辑卷的IOPS和带宽上限,从而保障关键实例获得优先的IOPS、带宽和时延保障。
在存储层面,基于OceanDisk自身的双控架构,以及多盘RAID架构,可实现单台OceanDisk自身的高可用。限制单组OceanDisk部署的TDSQL实例数量(如36个),降低单台OceanDisk故障影响半径。此外避免OceanDisk负载过高,保证实例获得的IOPS、吞吐量和IO时延在可接受范围内。此外,将数据库主备节点均匀分布在不同的OceanDisk,实现存储资源负载尽量均衡。
整个运行环境最终将由多组TDSQL计算节点和多台OceanDisk设备组成若干个TDSQL数据库资源池,提供数据库服务,实现轻量化的半集中半分布式的数据库存算分离架构,既解决了存算一体的架构痛点,也避免了存储过于集中带来的整体风险。
2、兼容性与平滑迁移
本方案可结合单元化架构方案,具有良好的扩展性和灵活性。对于外置存储池的配置,也可以根据需求灵活配置所需要的存储容量,预估可以支撑数万用户~数亿用户规模。
本方案中采用的外置存储池方案,采用标准化的存储协议,将远程的逻辑卷挂载于服务器,可以构建标准的文件系统并进行IO读写。在前期做好POC验证以及存储设备完整部署的前提下,可以通过数据库节点重建的方式,较为方便的将数据无损的从本地盘存储复制到远端存储池逻辑卷,也可以随时回退到本地盘模式;同时,也支持在同一组数据库主备实例节点中,实现本地盘节点和存算分离节点的混合部署,方便实现灰度迁移和快速回退。
3、容量与运维管理
1)容量管理
►磁盘容量规划
OceanDisk基于全闪存SSD构建,基于我行的实际需求,当前单台OceanDisk采用36块NVME SSD盘(36*7.68TB),配置RAID6冗余机制。在容量规划方面,需结合历史数据和未来增长预期,评估TDSQL的存储需求。建议将OceanDisk的整体空间使用率控制在70%以下,以预留足够空间应对数据突增及磁盘故障导致的可用容量下降。此外,TDSQL单实例挂载的逻辑卷支持在线扩容,但扩容上限为6TB。需避免因单实例过大导致影响范围大、恢复时间长等问题。
►IOPS资源管理
制定分层级的IOPS资源分配策略。新上线的TDSQL实例初始阶段设置一个较大的IOPS上限值,充分利用OceanDisk的性能优势。稳定运行一段时间后,根据实例的历史性能监控数据,分析其IOPS使用模式,并结合业务SLA要求,合理评估所需的IOPS能力。随后利用OceanDisk的SmartQoS功能,为不同TDSQL实例或数据库配置IOPS限额,避免资源竞争,保障关键业务的性能需求。
►OceanDisk控制器CPU资源管理
确保OceanDisk稳定可靠运行,需控制其负载在一定阈值下。OceanDisk采用双控制器架构,日常单个控制器的CPU利用率应控制在50%以下。当其中一个控制器发生故障,另一个控制器可以接管其请求,并保证CPU的性能足以保障业务稳定运行。
2)运维管理
►监控告警机制
OceanDisk内置监控告警系统,捕捉异常生成告警信息后,会上报到行内统一告警平台。通过RestfulAPI拉取OceanDisk的IOPS、吞吐量、延迟、容量使用率、I/O错误率等关键指标信息写入数据库,与TDSQL监控数据做联合分析:
- 捕捉IO、CPU等监控指标阈值趋势变化,关联导致资源消耗较大的SQL;
- 采集全量SQL语句,跟踪SQL耗时变化趋势,有助于提前发现隐患SQL。
►自动化运维
TDSQL运维管理平台覆盖了80%以上的日常运维操作,包括服务器资源管理、服务器故障替换、实例主备切换、扩缩容、节点重建、故障分析等。WEB页面操作通过设置多重检查规则,高危操作重复确认等,有效降低运维操作风险,提升操作效率。OceanDisk内置WEB管理平台DeviceManager,操作功能完善,包含了存储空间管理、任务配置、故障管理、性能管理等。
通过开发系列自动化工具,对接TDSQLOSS接口及OceanDisk RestfulAPI,将TDSQL和OceanDisk操作链接起来。如TDSQL一键部署功能,可自动完成服务器和OceanDisk资源分配,部署全程无需干预。
三、难点问题及解决办法
1、需谨慎评估IO时延对数据库性能影响
数据库存算分离方案将计算资源与存储资源独立部署,相对于本地盘服务器架构,不可避免的会带来IO延时增加的问题,进而会影响到数据库的SQL请求延时和吞吐。
业务应用系统使用TDSQL存算分离架构前,应针对各业务场景进行全面的压力测试,分析SQL耗时是否在可接受范围内,以及如何优化应用数据处理逻辑,从而减少IOPS消耗、缓解IO时延增高对业务的影响。
2、精细化的容量管理与成本控制
均衡资源使用率,提高资源利用率。1个TDSQL资源组包含3台OceanDisk和多台数据库服务器。TDSQL资源均衡包括如下3个层面:
►多个资源组之间的资源使用均衡;
►单个资源组内,不同服务器间、不同OceanDisk间的资源使用均衡;
►单台服务器上CPU、内存的均衡使用,单台OceanDisk容量、IOPS、IO时延的均衡。
存量TDSQL实例资源平衡。单个TDSQL资源组内,收集该资源组各TDSQL实例的运行数据。通过分析历史资源消耗数据,计算出各实例所需资源配置。依据这部分配置数据,在TDSQL资源组内进行合理的DB节点迁移调度,使资源池内各硬件负载尽量均衡。同时应兼顾实例重要程度,保障关键实例的IOPS能力及IO时延。
新实例部署资源分配。根据新实例所需的容量、业务TPS等数据,通过自研算法,考虑业务系统风险隔离以及资源均衡,选择合适TDSQL资源组下的3台服务器进行实例部署。新实例设置较高的资源上限,待运行稳定后,再评估实例实际所需资源。根据业务重要性决定如何实施资源限制。
3、运维复杂度与自动化运维能力建设
数据库存算分离架构下,DBA运维需要同时关注TDSQL和OceanDisk,更多监控信息,包括运行状态、性能指标和容量使用情况等。由于TDSQL的性能和故障问题可能与数据库自身、OceanDisk或网络连接相关,问题排查相对更加复杂。
针对以上问题,需要根据生产运维情况梳理对应的SOP步骤,配套开发对应的自动化运维工具,实现更加自动化、智能化的存算分离平台运维管理能力。
四、项目创新及实施成效
1、项目创新点
1)全栈国产化与软硬件双层高可用设计
软件层面,数据库采用腾讯金融级数据库产品TDSQL,操作系统采用openEuler,硬件层面,计算节点采用鲲鹏服务器,存储池采用华为OceanDisk智能盘框,结合自研的全局资源管理调度系统,从而实现数据库全栈国产化存算分离架构;在高可用方面,软件层基于TDSQL数据库强一致性主备同步和高可用自动切换,提供数据库高可用;外置存储池基于存储盘框双控机制、RAID等实现存储池的高可用。软硬件双层高可用可以提供更加稳定可靠的数据库服务。
2)轻量化半集中式存算分离,自研全局资源管理调度系统
由3台存储盘框和若干计算节点组成的数据库资源池(分布于同城三个IDC)可提供多个数据库实例服务,并有效控制存储故障的影响半径。全网环境由多组数据库资源池构成,并基于自研的全局资源管理系统,根据实际业务需求、存储池容量分配情况及IO/CPU负载状态,结合业务层的分散部署原则,动态调度和分配数据库资源池资源。该架构形成了一种轻量化半集中式存算分离模式,既解决了存算一体架构的固有痛点,又避免了存储过度集中导致的整体风险。
3)标准化兼容性架构,易复制推广
采用标准化LUN分区挂载模式,支持标准的存储协议和文件系统,可以方便的从本地盘模式切换到远端存算分离模式,也可以随时回切,软件层可适配多种数据库产品,具有易复制易推广的特点,为同业提供一个标准化且可实践的数据库存算分离架构。
2、项目实施效果
1)提升业务连续性,降低本地盘服务器故障影响
通过TDSQL的主备高可用机制,以及OceanDisk的内部高可用机制,整体可用性提升100倍以上,降低因本地盘故障带来的业务连续性影响。
2)提升容量扩展性,缓解容量瓶颈
TDSQL存算分离架构带来更灵活的容量管理,单实例容量规格支持从10GB到6TB,支持透明在线扩容和缩容。灵活容量管理也带来了空间利用率的提升。
3)提升计算资源CPU利用率
存算分离解绑了计算和存储资源,计算节点的CPU资源可以独立按需规划,预计整体CPU资源利用率可以提升1倍以上。
4)规避数据库节点重建风险
数据库服务器故障,无需再进行DB节点重建,将存放数据和日志的逻辑卷挂载到新的服务器上,可直接启动新实例。缓解了因节点重建拷贝数据带来的IO、带宽资源消耗,以及重建时间较长带来的高可用风险。
5)整体提升资源使用密度,降本增效
通过存储的半集中化管理,以及CPU资源的利用率提升,可以整体提升资源使用密度,减少服务器数量,从而减少机柜数量。经测算,整体的五年TCO成本可下降约35%,机房机位资源节省可达50%以上。
五、结语
总体来看,在国产化改造的大背景下,数据库存算分离并不是单纯的走向原来传统的集中式存储架构,而是要结合软硬件特性、业务场景需求、成本与风险平衡考量等,探索出符合自身需求的数据库存算分离架构,同时也要注重架构的通用性、易用性、可迁移性与可复制性,便于同行业对方案进行参考和实践。
*本文收录于《话数》用户专刊第2期
原文链接:https://www.oceanclub.org/cn/discuss/info/3762