一种实现有状态服务存储数据共享的系统及方法技术方案

技术编号:36946753 阅读:13 留言:0更新日期:2023-03-22 19:08
本发明专利技术公开了一种实现有状态服务存储数据共享的系统,包括:容器平台、存储服务模块、业务容器、存储容器和共享卷,所述的业务容器、存储容器和共享卷部署在所述的容器平台中,所述的存储容器用以实现与所述的存储服务模块的数据交互功能,所述的业务容器和所述的存储容器能够读写同一个共享卷,实现数据共享。业务容器和存储容器采用边车模式部署在一个POD内挂载同一个存储卷,业务容器和存储容器可以读写相同的卷,进行数据共享。本发明专利技术技术方案不需要重量级的分布式存储或对接到kubernetes中,就可以实现有状态服务在kuberentes平台上稳定运行,即使宕机或POD漂移到另外节点也能进行数据还原,支持服务运行。行。行。

【技术实现步骤摘要】
一种实现有状态服务存储数据共享的系统及方法


[0001]本专利技术属于计算机系统
,具体涉及一种实现有状态服务存储数据共享的系统及方法。

技术介绍

[0002]Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器或Windows机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。
[0003]Kubernetes是一种可自动实施Linux容器操作的开源平台。它可以帮助用户省去应用容器化过程的许多手动部署和扩展操作。也就是说,可以将运行 Linux容器的多组主机聚集在一起,由Kubernetes帮助轻松高效地管理这些集群。而且,这些集群可跨公共云、私有云或混合云部署主机。因此,对于要求快速扩展的云原生应用而言(例如借助Apache Kafka进行的实时数据流处理),Kubernetes是理想的托管平台。
[0004]Kubernetes对于有状态的容器应用或者对数据需要持久化的应用,不仅需要将容器内的目录挂载到宿主机的目录或者emptyDir临时存储卷,而且需要更加可靠的存储来保护应用产生的重要数据,以便容器应用在重建之后,仍然可以使用之前的数据。不过,存储资源和计算资源(GPU/内存)的管理方式完全不同。为了能够屏蔽底层存储实现的细节,让用户方便使用,同时能让管理员方便管理,Kubernetes从v1.0版本就引入了PersistentVolume和 PersistentVolumeClaim两个资源对象来实现对存储的管理子系统。
[0005]PersistentVolume(PV)是对底层网络共享存储的对象,将共享存储定义为一种”资源“,比如节点(Node)也是一种容器应用可以”消费“的资源。 PV由管理员进行创建和配置,它与共享存储的具体实现直接相关,例如 GlusterFS、iSCSI、RBD或GCE/AWS公有云提供的共享存储,通过插件式的机制完成与共享存储的对接,以供应用访问和使用;PersistentVolumeClaim(PVC) 则是用户对于存储资源的一个”申请“。就像Pod”消费“Node的资源一样,PVC会”消费“PV资源。PVC可以申请特定的存储空间和访问模式。现在的容器平台kubernetes大概支持几种卷存储:1.分布式存储,比如:Ceph, Glusterfs,NFS以及各个云厂商的共享存储。2.本地存储,比如:hostPath,local。以上对接的存储在实际使用上都存在不同的限制条件,比如云厂商的共享存储则依赖于云厂商的基础设施,这样是供应商绑定;Ceph,Glusterfs开源的共享存储则依赖于团队或项目能够提供Ceph,Glusterfs等存储服务。不仅是技术上要求比较高,同时资源和维护成本也比较高;NFS则是单机版,高可用的开源方案也都不成熟;本地存储hostPath则存在安全问题,也是单机模式,容器漂移也存在问题;local卷也是单机模式,容器漂移问题。
[0006]由于实际使用中对于容器的共享存储有不同的需求,对于一些比较简单的使用场景,对于存储系统的要求不是很高,如果采用分布式存储,并对接到 Kubernetes,这样无论是技术,资源还是维护成本都比较高。但是如果用单机的存储,如果挂载存储的服务器宕机又会导致存储不能用。所以针对这些场景,在容器环境中需要解决这些技术问题。

技术实现思路

[0007]有鉴于此,本专利技术的第一目的在于提出一种实现有状态服务存储数据共享的系统。第二目的在于提出一种实现有状态服务存储数据共享的方法。
[0008]基于上述第一目的,一种实现有状态服务存储数据共享的系统,包括:容器平台、存储服务模块、业务容器、存储容器和共享卷,所述的业务容器,所述的存储容器和所述的共享卷部署在所述的容器平台中,所述的存储容器用以实现与所述的存储服务模块的数据交互功能,所述的业务容器和所述的存储容器能够读写同一个共享卷,实现数据共享。
[0009]所述的业务容器和所述的存储容器采用边车模式部署在一个POD内,两者挂载同一个共享卷。
[0010]所述的容器平台为kubernetes容器平台。
[0011]所述的存储服务模块采用NAS或/和S3存储模式。
[0012]基于上述第二目的,一种实现有状态服务存储数据共享的方法,包括以下步骤:
[0013]步骤1,在一个POD的启动过程中,首先启动的是存储容器,然后是业务容器;
[0014]步骤2,存储容器在第一次启动,需要连接远端的存储服务模块,进行资源初始化;
[0015]步骤3,存储容器启动成功后,业务容器启动,按照服务数据持久化需求,把数据写入到共享卷;
[0016]步骤4,存储容器实时监测共享卷中的数据,并同步到远端的存储服务模块,同时根据创建存储版本;
[0017]步骤5,如果业务容器宕机,同时POD没有漂移到其他的负载节点,存储容器在启动时,如果远端的存储服务模块的存储版本和共享卷中的存储版本一致。则直接启动业务容器,如果不一致,则根据远端的存储服务模块的最新存储版本先进行数据恢复,即从远端的的存储服务模块中还原数据到共享卷中,然后启动业务容器;
[0018]步骤6,如果POD漂移到其他负载节点,存储容器在启动时,会检测远端的存储服务模块是否有对应的存储资源,如果远端的存储服务模块已经存在存储资源数据,则对远端的存储服务模块的存储版本和共享卷中的存储版本进行匹配,如果远端的存储服务模块的版本较新,则开始从远端的存储服务模块中恢复数据到共享卷,然后业务容器启动后就可以读到宕机前最新的版本数据;当业务容器有写入数据到共享卷中,存储容器会实时同步到远端的存储服务模块中。
[0019]与现有技术相比,本专利技术方法以下优点和有益效果:1、不需要重量级的分布式存储或对接到kubernetes中,也可以实现有状态服务在kuberentes平台上稳定运行,即使宕机或POD漂移到另外节点也能进行数据还原,支持服务运行;2、所采用的存储服务都是现在比较常用的资源来实现本方案,通用性和适用性比较好。在很多基础设施还没有完全支持容器化的企业能够比较快的实施和落地;3、通过边车模式的存储服务解决了有状态业务服务容器化的难点,对于业务服务零侵入性,技术落地和推广的成本比较低;4、结合了kuberentes 的本地共享卷和存储服务,解决了本地共享卷的单机模式,提高了共享卷的可用性。同时实现了自动的灾害和数据还原。
附图说明
[0020]图1为本专利技术实施例的系统的结构示意图;
[0021]图2为本专利技术实施例的方法的流程示意图。
具体实施方式
[0022]下面结合附图对本专利技术作进一步的说明,但不以任何方式对本专利技术加以限制,基于本专利技术教导所作的任何变换或替换,均属于本专利技术的保护范围。
[0023]实施例1:
[0024]如图1所示,一种实现有状态服务存储数据共享的系统,包括:容器平台、存储服本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种实现有状态服务存储数据共享的系统,其特征在于,包括容器平台、存储服务模块、业务容器、存储容器和共享卷,所述的业务容器、所述的存储容器和所述的共享卷部署在所述的容器平台中,所述的存储容器用以实现与所述的存储服务模块的数据交互功能,所述的业务容器和所述的存储容器能够读写同一个共享卷,实现数据共享。2.根据权利要求1所述的一种实现有状态服务存储数据共享的系统,其特征在于,所述的业务容器和所述的存储容器采用边车模式部署在一个POD内,两者挂载同一个共享卷。3.根据权利要求1所述的一种实现有状态服务存储数据共享的系统,其特征在于,所述的容器平台为kubernetes容器平台。4.根据权利要求1所述的一种实现有状态服务存储数据共享的系统,其特征在于,所述的存储服务模块采用NAS或/和S3存储模式。5.一种实现有状态服务存储数据共享的方法,其特征在于,包括以下步骤:步骤1,在一个POD的启动过程中,首先启动的是存储容器,然后是业务容器;步骤2,存储容器在第一次启动,需要连接远端的存储服务模块,进...

【专利技术属性】
技术研发人员:刘丽华叶培春吴继冰黄宏斌王懋肖开明张秋生
申请(专利权)人:中国人民解放军国防科技大学
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1