IT业务发展迅速,业务数据急剧增长,业务需求变化快,流量的波峰波谷的不可预测性,因此现有传统体应用架构无法满足当前业务需求。容器技术在此背景下,应运而生。基于容器云的数字化技术,带来对用户的服务质量的提升;提升运维效率;降低IT建设成本,提升资源利用率;能协助用户采用新的技术,快速上线新业务。随着企业应用上云越来越多地选择使用容器化方式,容器服务在不同的云厂商中都有大幅度的业务增长,容器服务已经逐步成为云原生时代新的基础设施和最佳使用云资源的入口。容器是随时可以销毁,当容器消失时,数据也会随之消失,因此容器数据的持久化,是必不可少的。同时,尤其是视频、5G、直播、大型金融服务商等突发应用弹性扩容大量只读容器,对资源弹性的能力要求非常高,数据存储需具备极致弹性和极速伸缩能力的应用场景。
二、云原生存储遇到的问题
问题如下:1.易用性:存储服务部署、运维复杂,云原生化程度低,缺少与主流编排平台整合。2.高性能:大量应用IO访问,IOPS需求高,低时延,性能成为应用运行效率瓶颈。3.高可用:云原生存储已经应用到生产环境,需要高可靠/高可用,不能出现单点故障。4.敏捷性:PV快速创建、销毁、平滑的扩展/收缩,PV随Pod迁移而快速迁移等。
三、云原生存储方案
3.1本地磁盘
3.1.1本地磁盘架构
3.1.2本地磁盘优缺点
优点:1.性能好,数据可靠。由于磁盘和应用系统中间的IO路径最短,本地磁盘可以提供最佳的性能。同时RAID提供了一定程度的可靠性的保证,可以避免因单个磁盘故障而导致的数据丢失。2.简单。在服务器的硬盘槽上插上硬盘,并利用HBA卡或软件的方式制作RAID,划分逻辑卷,格式化成某种文件系统后,挂载到容器中。缺点:1.由于容器的动态性,pod会漂移至其他节点,导致pod无法使用之前节点磁盘上的数据。2.本地磁盘无法提供节点级别的高可用,当物理节点发生故障时,由于数据都存储在故障节点上,所以应用无法被恢复到其他节点。3.本地磁盘在敏捷性上也无法满足业务需求,业务使用的存储空间受限于本地磁盘的大小,如果达到磁盘空间的上限后难以扩容。部署RAID也是相当耗时的操作,难以实现在短时间内部署大量的应用系统。4.后期运维耗费人力,维护困难。
3.1.3应用场景
无状态服务,应用服务pod固定的场景。
io密集型应用服务,特别对磁盘网络io敏感的服务。
3.2集中式存储NFS
3.2.1NFS系统架构
NFS是C/S架构,分为两部分:NFS客户端与NFS服务端,二者不直接通信,通过RPCbind服务传递信息。
NFS客户端和服务端,基于TCP/IP协议通信。
3.2.2集中式存储的优缺点
优点:1.容易上手。2.方便部署非常快速,维护十分简单。3.兼容Linux系统和Windows系统。4.基于TCP/IP协议通信,适用性和兼容性好。5.远程共享数据,解决了数据高可用的问题。缺点:1.尽管集中式存储可以为单个业务系统提供较高的性能保证,但是当面临大量业务并发访问时,存储控制器则成为了性能瓶颈。如果想要满足大量业务对性能需求,需要采用多套集中式存储系统,存储系统的管理成本也会急剧上升。2.此外,由于集中式存储诞生在几十年前,在设计上就没有把敏捷性和运维便利性考虑进去,无法应对短时间内大量Volume的并发创建和销毁操作,无法满足业务系统对敏捷性的要求。
3.2.3应用场景
多个不同应用系统,共享同一文件目录。
Pod漂移后,数据不丢失,而且不用固定pod所在的节点。
3.3云原生分布式存储OpenEBS
3.3.1OpenEBS系统架构
1.Openebs主要分为两部分:OpenEBS控制层和OpenEBS数据引擎。2.数据引擎是OpenEBS的核心,负责代表它们所服务的有状态工作负载对底层持久存储执行读写操作。3.控制层主要负责与KubernetesCSI交互,管理卷的生命周期;与Prometheus/Grafana集成,遥测和监控存储。
3.3.2分布式存储OpenEBS优缺点
优点:
容器附加存储的声明式供应。
使用同步数据复制的持久性和高可用性。OpenEBS通过Jiva,cStor和Mayastor存储引擎,能够保障数据复制同步和高可用性。
通过快照和克隆进行数据保护。cStor存储引擎,支持快照和克隆,且对快照的数量没有限制。
通过备份和还原进行灾难恢复。通过OpenEBSVelero插件,实现数据的备份和恢复。
使用Prometheus指标和Grafana仪表板的可观察性。OpenEBS提供存储相关指标,比如卷的IOPS、吞吐量、延迟和数据模式等。
缺点:
架构复杂,不易上手,需要较强的技术能力和运维能力;
数据一致性问题。对于数据一致性要求比较高的应用场景,分布式存储的性能可能就稍弱了,因为分布式的结构,数据同步是一个大问题,虽然现在技术一致在进步,但是也不如传统存储设备数据存储方式可靠。
3.3.3OpenEBS应用场景
有状态服务的数据持久化。
服务数据的快照,克隆。
服务数据灾备恢复。
四、如何选择容器云存储
1.容器服务是否是集群架构
独立非集群的服务,可以使用本地存储。本地存储io不走网络。
集群服务,需要共享目录,应该使用NAS存储或者分布式存储解决。
2.数据存储类型
容器存储以块和文件类型,给容器服务提供存储资源。容器Pod根据业务需求,选择块存储和文件存储。
3.业务数据的重要性
数据的机密性。存储对数据进行加密。
数据安全性。数据存储支持快照,备份。
数据迁移和拷贝。数据存储支持数据迁移,数据拷贝。
数据灾难恢复。
4.容器服务特征
容器服务是否为有状态服务和无状态服务。通常情况下,有状态服务是需要持久化数据;其次存储需要支持动态创建存储。
容器的生命周期及启动和停止运行的频率。高启停频率的系统会带来数据持久化的挑战,因为有些存储系统的设计目的不是处理容器存储资源的频繁、快速供应和回收。
五、结语
随着云原生时代的到来,越来越多的业务系统会采用云原生架构。存储系统作为承载业务稳定运行的核心组件,在云原生的架构下,也面临着新的挑战。与此同时,数据库以及存储系统自身也受到了云原生架构的影响,逐渐发展出云原生数据库和云原生存储系统。未来可以看到越来越多的云原生数据库和云原生存储出现在数据中心中,成为被广泛使用的技术。