spx
作者spx·2023-12-11 10:07
其它·GUOTAIJUNAN

某大型证券企业云原生存储实战——需求路线选择分析篇

字数 7795阅读 4087评论 6赞 7

摘要:

云原生是一个不断丰富的理念和技术体系,它在基础架构、应用程序和管理上都将深刻的影响和改变企业云的未来!近年来,在证券行业数字化转型的驱动下,证券行业云原生实践已从试用阶段步入到大规模推广阶段,企业业务在转向微服务、容器化的建设,带来了海量的数据接入和业务的不确定性。数据系统管理弹性需求提升、数据系统访问查询需求提升,对数据存储、处理、挖掘的性能、稳定性、可靠性都提出了更高的要求。此过程中为有状态应用提供持久、高可靠和高性能的存储成为了一项挑战。除此之外,证券企业IT还要建立数据“敏态引擎”,不仅要通过统一的智能化编排系统配合业务上线,快速实现其敏态业务,而且利用存储系统自身的自动化运维能力夯实稳态业务,打造券商业敏稳双态引擎,助力企业快速转型与发展。全篇共分为二部分:《需求路线选择分析篇》《技术架构与实现篇》,希望能为同行带来参考价值。

1、背景

随着数字化转型的深入发展,云原生已深深融入到证券行业IT建设当中,大大提升了金融机构对IT资源的利用效率。证券行业云原生化建设遵循从非核心应用出发,逐步向集中式和分布式有机融合的架构体系转型。现阶段云原生已获得了市场的广泛的认可,整体上,行业驱动因素主要包括以下几个方面:

业务需求驱动:金融业务的线上化迁移与互联网业务模式的广泛渗透,使业务交易规模与业务每秒峰值呈现几何式增长,云原生作为企业上云的重要利器,业务团队已经享受到云原生带来的各种红利,不仅能够实现降本增效,提高系统资源利用率,简单易用,可用性高,拓展性强,并且具备智能负载、弹性伸缩、日志监控、DevOps等功能,可实现多应用按需选配和智能化发布,能够应对突业务发流量,快速实现扩缩容,大幅度提高开发效率,降低运维成本。容器云还结合服务治理功能,实现对应用持续集成与交付的全生命周期管理。随着云原生价值在实践过程不断中被证券行业企业认可,云原生也被越来越多企业的重视并提上建设日程。

政策导向驱动:“十四五“期间,在”产业数字化“、”数字产业化“量大建设的持续推进,云原生建设持续走强。中国人民银行、国家发展改革委、中央网信办、银保监会等监管部门陆续出台金融行业云计算发展的指导意见,不仅从宏观战略层面指明云计算的发展方向,也从微观视角引导具体实践内容。同时,应用规范和标准的建立也让金融机构上云提供更加“有据可依”的良好环境。在政策指引下,由党政延伸而来的信创在金融行业进入应用爆发增长阶段。金融信创生态产业链从2019年至今日渐成熟伴随金融信创带来的巨大技术风口,与云原生应用的成熟和生态的建立,使证券行业云市场有望迎来新的需求爆发。

行业趋势:容器应用从无状态走向有状态,2025年超8成企业将在生产业务用容器。Gartner预测,到2025年,将有85%的全球业务在生产中使用容器,而2019年仅为35%。CNCF 2020年的调查显示,超5成客户已在容器中部署有状态的生产应用;另有超2成用户正在考虑中。451 Research的研究,当前有95%的新应用是在容器中开发。Gartner:80%的客户反馈,缺少可靠的存储及高效的灾备方案已经成为容器技术被否定的主要原因。同样经过金融行业实际调研分析,大多场景适合容器化部署,比如说数据,信息分析服务类等。

2、云原生存储

在容器云中,我们对K8S中部署的应用都是以Pod容器的形式运行的,因为Pod是无状态的,如果Pod不挂载数据卷,那Pod被删除或重启后这些数据会随之消失,如果想要长久的保留这些数据就要用到Pod数据持久化存储。针对业务场景不同进行分类,容器云对于存储的需求可以分为非持久化存储和持久化存储两种。除了希望数据不在Pod重启后丢失,有时候也需要在Pod间共享文件。因此,衍生了Pod存储持久化的话题。在云平台的容器云中,都提供了一些方案来解决容器挂载持久化存储的问题,但是主要都是通过K8S提出的Volume对象方案进行封装来解决该问题。

容器云挂在存储方式很多,内置由emptydir、hostpath、localpv等,外置主要是CSI、NAS和SAN存储等。他们各有优缺点,各有使用的应用场景。

EmptyDir:Node上自动分配一个空目录给Pod,只能一个POD内的容器共享,适合容器间临时交互文件,优势是使用简单,但非持久化,随POD消失。

HostPath:挂载宿主机上的目录或文件,使用宿主机的文件系统进行存储,单节点内多POD可共享,使用场景是访问Docker系统文件。优势是性能高,使用简单,Pod故障后数据不丢失,缺点是不支持跨Node共享,Node故障后数据会丢失,不支持Pod亲和性调度

Local PV:基于本地盘,提供FS或LUN,单节点内多POD可以共享,适用场景作为存在远端的持久化数据的本地Cache,优势是性能高,使用简单,Pod故障后数据不丢失,支持node间亲和性漂移,缺点是不支持跨Node共享,Node故障后数据会丢失。

数据库+CSI+外置LUN:集群内或跨集群,适用场景是数据库,优点是性能高、数据库实现锁和复制同步,无需底层参与,不足是数据逻辑拆分,技术难度高;读写分离,部署难度增加;多副本,浪费资源。

CSI+外置NFS:集群内或跨集群:读写,适用于文件类,优势是POSIX接口天然兼容,对容器应用开发更友好,天然支持多POD共享、可迁移性和扩展性,降低应用改造难度,支持快速飘移、无需多副本,节约资源,缺点显而易见是主流NAS的性能不足,企业级nas存储可保证高性能、易用易于维护、高可靠、使用简单。

外置对象集群内或跨集群,适用于非结构化对象优势设计简单、成本低,缺点是只读、性能低。如果适用使用华为存储还可保证其较高性能、高可靠、易于维护,简单,减少副本数,节省资源。

2.1.1 容器云非持久化存储需求

云原生容器云运行在物理或者虚拟服务器上,通常这类非持久化敏态业务存储需要使用到容器应用的有镜像仓库和运行态容器实例,以及一些容器产生的日志等。容器云需要使用存储的场景有:

(1) 容器实例的创建和运行。容器创建实例时需要使用到一定的存储空间,每个容器需求空间的大小根据容器个数以及容器中部署的基础环境及容器应用确定。整体容器工作节点的存储空间大小根据运行的容器类型以及容器个数决定。值得注意的是,单个工作节点的大小要能覆盖可能运行在该节点上容器的空间的总和。用于存储运行态容器的存储空间,对性能要求要相对高,能支持容器的快速动态伸缩和文件的快速读写。

(2) 一些不需要持久化存储的文件,例如容器应用运行过程中生成的一些临时文件。

类似互联网前端无状态业务支持业务高并发、支持容器在多个工作节点上启动或者停止的弹性伸缩;敏态业务容器对非持久性存储的要求主要集中在性能层面,对于空间要求并不高,但是要求工作节点能便捷的识别并且具备较好的IOPS并发读写能力。非持久化存储采用本地硬盘或者集中式存储映射的块存储较多。

2.1.2 非持久化存储选型经验

如果采用非持久化存储,应用场景包括高IO、低延时场景,主要采用本地存储和块存储两种类型,考虑性能和连接方式,可以本地硬盘构建HostPath或者集中式块存储,相对来说IOPS以及带宽都较高,本地SAS接口硬盘组或者FC提供的LUN吞吐通常可以达到1GB以上,基本可以满足单台工作节点的容器集群IO需求。如果采用工作节点的本地硬盘,则建议通过raid卡配置raid5以上保证存储一定的容错能力,虽然K8S集群本身具备单个容器实例的异常处理能力,但是因为工作节点单块硬盘故障导致整个工作节点的文件系统异常从而导致该节点上容器服务批量中断,在业务层面还是有所感知的,可能会带来用户的正常会话丢失,需要用户重新登录。建议配置Raid后,配置单硬盘的容错能力,提高整体业务系统的可靠性。

2.1.3 容器云持久化存储需求

随着云原生技术的不断发展,券商行业中越来越多重要交易业务也开始使用容器来支撑生产交易,因此容器使用持久化存储的场景越来越多,主要业务场景有如下几类:

内容管理:作业中心,单据中心,后台稽核;这类属于非结构化信息,如影像,图片的存储/检索/管理。

客服类:呼叫中心,这类属于非结构化信息,如语音的存储/检索/管理

移动,协同,社交服务类:Email,对话,社交网络服务;这类业务拥有快速扩展,处理可能的尖峰负载等特点。

渠道处理:柜员系统,网银,电话银行,前台不同接入设备协议转换,需求变更快,安全性要求高,个性化定制。

数据,信息分析服务类:智能分析,客户行为分析,人脸识别 并发计算,AI分析,大量非结构化信息。

流程处理及整合:CRM,ERP,信用卡,贷款审批;多角色可中断流程处理,流程实例运行时间长,信息稳定性要求高。

集成服务类:比如服务注册,各系统协议转换。

企业核心业务交易服务类:OLTP联机交易,联机批量,批量;需要满足ACID,满足数据及交易的完整性,实时一致性,需满足高IO吞吐率。
从技术栈角度分类有状态应用:
表1 有状态应用分类

表1 有状态应用分类

那么对于云原生持久化存储需求的主要特性如下:

(1)持久化需求:生产系统业务日志,业务分析的基础,永久保存。
(2)Pod漂移后,通过另外节点挂载同一块存储实现状态数据迁移。
(3)共享存储需求:业务文件、图片分布式共享需求。
(4)扩容需求:存储灵活扩容需求,容器节点灵活扩容、迁移能力需求。
(5)性能需求:应用文件,例如图片、文档等写入性能直接关系到业务系统的并发支撑能力。
(6)安全、高可用需求:须内网存储,保证双中心架构。

2.1.4 持久化存储选型经验

在选择持久化存储时,在选型过程中建议考虑容器适应业务场景、存储的性能、是否支持K8S CSI、是否支持扩容、是否支持克隆、是否支持容灾等角度进行选型。目前持久化存储常用的有NAS和对象存储两种。

(1) 对象存储
容器选用对象存储的场景和选用NAS存储的场景有一定重合之处,例如对于容器实例需要进行文档、图片等小文件共享时,可以考虑NAS和对象存储两种。但是面临选择时有一定区别,例如应用如果是影像类系统、视频库管理类系统、图片采集、分析等系统的话,存储图片数据量达到数PB级别,单个文件大小为MB级别以上,文件数量数万或者更高,则更推荐采用对象存储。媒体、图片等媒体文件只读场景可以通过对象存储读取上述文件类型。对象存储使用的过程中,一般不需要配置CSI,对象存储不需要PV/PVC来做资源抽象,应用可以直接访问和使用只需要在应用中配置对象存储的地址,秘钥等进行读写,还可结合云原生租户配额管理想对应。对象存储有他的弊端,不允许按片段更改数据。在对象存储系统中,添加新行并将整个对象写回只能修改整个对象,这会影响性能,因此不适用于核心应用系统或者对读写性能要求高的业务。因此,这种存储不适用于数据经常变化的应用,对象存储非常适合存储静态资源,如备份、日志、影像等等。

(2) NAS存储
NAS存储支持多个容器读取一个共享目录并且长期保存,如日志保存、归档材料,将不同pod 副本的日志存在同一个目录中,如共享文件,多个pod同时读写问题。较为常见的方案是采用集中式NAS存储或者分布式NAS存储提供持久化存储服务,划分文件系统给容器云挂载PV卷。目前采用集中式或分布式NFS存储提供持久化存储服务,能较好的满足在稳定性、高可用、灵活扩容能力、便捷管理几个方面的要求。

容器在进行弹性伸缩或者进行故障恢复时,同时将频繁的发生存储卷的挂载和卸载,为了保证整个生产环境的稳定性,在进行卷的挂载和卸载操作中需要保证足够的稳定性,同时也需要PV卷服务端能保证较高的性能,避免应用延迟。采用专用的集中式存储NFS可以提供较为稳定、高性能的存储服务。集中式存储设备通过Raid、冗余存储机头、分布式集群多节点等能力,保证了硬件故障情况下的高稳定性;当NFS表现出性能不足的情况下,集中式存储可采用增加端口绑定的方式提升带宽,分布式存储也同样可以采用增加绑定端口提升带宽,扩容分布式节点提升整体集群存储性能。云原生容器存储方案中,企业NAS脱颖而出,成为证券企业的主要选择。

(1) 使用NAS提供持久化存储,相比Hostpath实现分布式应用在多节点容器日志集中管理,降低日志管理复杂度,提高排障效率。
(2) 使用NAS存储平台,可采用端口绑定的方式提升带宽,保证高业务负载下的带宽性能,支持业务的高并发。
(3) 使用NAS存储平台,提供了具备高稳定性、高容错能力的存储服务。
(4) 切实的容灾方案:重要业务需进行多中心部署,通过使用NAS存储,实现多中心架构的容器集群数据同步构建,提供一种切实可行的重要业务容器化部署的容灾方案。通常银行业会要求重要业务进行两地三中心部署,通过集中式存储和分布式存储本身的双中心双活能力,也可以构建双中心架构的容器集群。
(5) 简易化运维管理:随着容器有状态应用的增长,对传统存储运维工作也会带来挑战,整体方案需要兼顾运维敏捷和安全。集中式和分布式NAS存储产品,均具备界面化、便捷的管理手段。采用NAS存储产品,具备直观的图形界面,能进行便捷的配置、切换管理,降低运维的复杂性。
(6) 客户端可以启用用户认证机制,且数据是通过明文或者密文传送,安全性相对较高(一般建议在局域网内使用)

虽然NAS存储有明显的优势,但是与其他类型对比时,也有一定的缺点:

(7) NAS 存储在高并发下iops效率/性能,相比块存储是处于劣势,如果承载的容器数量过多,IOPS性能相比块存储要弱。
(8) 在K8S场景中,一个NAS目录如果配置给K8S集群中,则无配额限制,所有用户申请资源等于申请了所有NFS 的存储池。

云原生有状态应用典型案例就是中间件数据库,中间件数据库作为公共组件会出现在很多的应用系统中。在实际的生产系统中,会出现各开发团队间没有统一的中间件标准版本,各系统维护各自的中间件服务。当遇到漏洞时,升级维护消耗大量时间。我们希望将之前零散的中间件管理方式转变为统一的管理方式,将中间件服务云化,提高中间件管理的效率,实现中间件的部署和供给,减少运维时间。

券商行业中云原生数据落地也是从相对轻量型的、周边业务系统的数据库入手,例如:单机Oracle、MySQL,Postgres,MangoDB等,以及其他对于IO性能有一定要求的业务系统。此类应用一般要求存储系统能够提供5ms以内的IO延迟。“个体规模小、业务负载轻、总体数量多、位置分布散”是此类系统的特点。中间件在性能方面要求没有数据库高,例如Kafka、Redis、Mango等,以及应用服务器、Web服务器,或其他一般业务系统。此类应用一般要求存储系统能够提供10ms以内的IO延迟。

3、华为企业级存储助力云原生应用

为什么要外置NAS存储?存储的需求一种情况是来自业务需要外置存储,尤其是共享存储,另一种主要是为了通过云化的解耦资源池架构来充分发挥容器化的价值。云原生存储首先要满足业务需要,同时可被容器云平台管理。

华为NAS存储具有十分出色的能力:

(1) 极致性能:CI/CD海量小文件、小IO对存储的性能要求极高,华为OceanStor Dorado NAS,OPS可达200万,时延小于0.5ms,提升代码读取和编译速度、极大提高开发效率。AI分析类业务,同样GPU也无等待。
(2) 共享:不同的业务容器可共享访问同一份代码或发布包,节约存储空间,节省成本,容器化应用间可使用共享存储进行数据交互,更加适配容器云的灵活性,不再更多依赖底层资源。
(3) 高可用:容器故障后,漂移到其他节点,共享NAS可以保证0数据拷贝和0数据丢失。
(4) 极致弹性,容量和性能扩展完全按需。
(5) 单个文件系统支持数万容器共享,毫秒挂载和卸载,容器极速扩展。
(6) 华为OceanStor Dorado支持scale-up和scale-out,满足0-10PB容量的诉求,性能随scale-out线性扩展。

更是在早期K8S版本中,CSI只具备基本的存储能力。能力较弱,故实际也有直接通过NFS共享挂载的方式使用存储。目前绝大部分Out-tree存储类型已替代In-tree存储类,Out-tree的Volume插件不侵入K8S的核心源码,更加灵活。存储供应商可以自己定制适配于自己产品volume插件。CSI就是属于Out-tree的Volume插件,CSI的生产级应用也越来越成熟。

简单对nfs和csi做个对比:
(1) 概念,nfs是直接将NFS共享的目录写到Pod里,或通过静态PV方式使用,而树外(Out-of-Tree)卷插件,是Kubernetes容器编排系统使用的标准接口;
(2) 功能对比方面,nfs功能有限:不能使用快照、克隆等功能 支持静态和动态PV,但是标准CSI插件功能丰富:拥有创建卷、删除卷、挂载卷、卸载卷、在线/离线扩容、创删快照、克隆等功能。
(3) 厂商扩展功能方面,nfs开源无支持;而csi可实现多租户、Qos、以及基于应用粒度的灾备:CDR等
(4) 卷的创建方式,nfs需要存储管理员手动在存储侧将卷创建好,CSI直接在K8S平台通过API接口调用存储功能
(5) 维护成本,nfs正常几个、几十个可以接受,成千甚至上万个NFS共享维护是非常困难的:需要一个个手动在K8S平台创建静态PV ;然而csi直接在K8S平台通过API接口动态操作存储。

3.1 华为存储特色

从底层技术角度上分析:
(1) 安全性,华为存储实现一个lif与对应一个K8S租户,做到逻辑上的端口隔离。
(2) 灵活性,利用华为存储已有输出能力,可协助容器云简单地实现双活、高可用、备份、卷管理等。
(3) CSI全面支持,高效易用。
(4) 高并发,CSI和存储深度优化,自动调整并发度,存储业务发布效率提升30%。
(5) 高性能,华为SAN存储拥有极致性能, IOPS高至2100万,稳定时延低至0.05ms。

站在应用角度,我们可以看到:
(1) 备份省:使用存储无损快照技术实现数据备份;无需额外采购备份软件,节省TCO;应用粒度备份、克隆、恢复;支持异地存储备份。
(2) 恢复快:数据恢复无需等待,立即可用;支持从异地存储恢复数据,秒级RPO;支持NAS AA双活,RPO=0。

不仅如此,华为存储对业务QoS的精细化管理,为容器云应用存储增添色彩。利用IO优先级调度技术,确保核心业务时延,实现业务按队列控制业务流量带宽、IOPS阈值。基于IO流量控制技术,限高保低,确保核心业务带宽、IOPS,我们确保了关键业务IO优先处理,保障高优先级IO时延。

点击阅读第二篇:《技术架构与实现篇》

本文协作专家:
王通-某证券公司-技术总监
黄庆-某证券公司 -资深工程师
刘明昭-某金融公司-技术工程部
蔡炯桐-某证券公司-系统工程师
黎果-某银行-项目经理

本文顾问专家
王帅-某证券公司-存储工程师

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

7

添加新评论6 条评论

匿名用户
2024-02-03 08:21
云原生的存储路线介绍的非常全面和实用
wangshuai_gowangshuai_go存储工程师证券
2023-12-27 09:30
这篇文章由很多干货,非常详尽的就云原生存储的概念、技术、理论、方法论、选型分析做了全面分析阐述,非常值得阅读学习和借鉴。
jyx314jyx314运维工程师光大兴陇信托有限责任公司
2023-12-26 15:12
很不错的文章,从实际使用的角度分析了云原生存储的使用场景,包括持久化和非持久化两个维度,适合使用场景普及性解惑
thiefqwthiefqw存储工程师B
2023-12-21 16:06
云原生的存储路线介绍的非常全面和实用
wt2001911wt2001911技术总监德邦证券
2023-12-21 14:14
云原生的存储路线介绍的非常全面和实用
whitewindmindwhitewindmind系统工程师浙商证券
2023-12-21 11:09
非常干的技术文档,给即将上云原生平台存储选型提供技术路线参考,避免踩坑
Ctrl+Enter 发表

本文隶属于专栏

最佳实践
不同的领域,都有先行者,实践者,用他们的最佳实践来加速更多企业的建设项目落地。

作者其他文章

相关文章

相关问题

相关资料

X社区推广