一种保护Docker应用容器的系统及方法与流程

文档序号:19786550发布日期:2020-01-24 13:39阅读:269来源:国知局
一种保护Docker应用容器的系统及方法与流程

本发明涉及计算机应用系统备份恢复领域,尤其是涉及一种保护docker应用容器的系统及方法。



背景技术:

docker是一个非常成功的linux开源项目,它将lxc、unionfilesystem和cgroups结合起来,创建了世界各地数百万开发人员采用的容器化标准,成为有史以来最快被采用的开发者技术。得益于docker容器技术的一些诸如灵活、可替换、可移植、可拓展等优秀的技术特性,docker容器技术在企业内部得到了广泛的应用,更是成为了公有云和私有云中部署应用程序的主要趋势。

应用数据保护是一个企业级应用程序设计之初就应该考虑的问题。而由于某些历史原因,docker容器数据保护机制目前还不够完善,不像虚拟机数据保护机制那么成熟(如vmware提供了vadp用于vmware虚拟机保护、microsoft提供了vss用于hyper-v虚拟化保护),这就使得docker容器数据保护更具有挑战性。

目前业界保护docker容器数据的方案主要有两类:

一类是基于docker内置备份和恢复机制,通常是由企业it管理员通过脚本实现,数据备份到本地。该方式缺乏有效的备份数据历史版本管理,且所有的备份和恢复操作都需要手动进行,涉及到环境的变更时,脚本需要修改更新,操作繁琐,维护困难,只适用于极少的docker应用容器场景;

另一类是基于传统文件的备份和恢复方式,这种方式需要在备份数据源所在环境上安装备份代理,使其能够访问文件系统并将其备份。如果应用容器内部运行的是诸如oracle、mysql、redis之类的应用,还需要有对应的应用代理,以保障备份数据的应用一致性。备份代理进程作为备份恢复系统的一部分,它需要考虑部署、管理、更新、升级等繁琐的问题。很多代理程序都具有破坏性,需要操作系统重启,进而破坏了所有的容器,而另一些代理程序在每一次部署、修复或更新时都需要应用程序重启,在docker应用容器备份恢复这一场景中,由于docker容器的设计理念为“与宿主机在资源层隔离、异常后抛弃而不是修复”,使得备份代理的问题被无形放大。

除此之外,当前所有的备份方案,都缺乏对应用容器备份数据有效性的验证环节。当数据灾难发生时,企业寄希望于备份数据,而备份数据失效导致企业数据无法恢复的事件常有发生,并没有真正的做到“有备无患”。因此,如何灵活、高效、安全、可靠的解决docker应用容器的数据保护问题成了企业大规模部署docker应用容器环境时亟待解决的难题。



技术实现要素:

本发明的目的就是为了克服上述现有技术存在的缺陷而提供一种保护docker应用容器的系统及方法,灵活、高效、安全、可靠地解决docker应用容器的数据保护问题。

本发明的目的可以通过以下技术方案来实现:

一种保护docker应用容器的系统,用于docker应用容器的备份恢复,该系统包括相互通信连接的备份恢复子系统和企业容器服务平台,所述的备份恢复子系统包括依次连接的web服务模块、任务编排服务模块、数据备份服务模块和快照存储系统模块,所述的企业容器服务平台包括企业私有docker镜像仓库,所述的备份恢复子系统还包括docker备份代理镜像以及分别与数据备份服务模块和快照存储系统模块连接的docker容器管理服务模块,所述的docker容器管理服务模块中预置docker备份代理镜像,所述的docker备份代理镜像通过docker容器管理服务模块导入企业私有docker镜像仓库中,使得可以利用企业容器服务平台内部的容器编排服务模块,解决在docker应用容器备份过程中的一系列繁琐问题。

进一步地,所述的企业容器服务平台还包括多个应用容器applicationpod、与每个应用容器applicationpod一一对应连接的应用容器数据持久化存储applicationvolume、docker容器编排系统模块以及通过docker容器编排系统模块部署设置的docker备份代理容器backupagentcontainer,所述的数据备份服务模块与docker备份代理容器backupagentcontainer相互通信连接,进行数据备份恢复操作,所述的docker备份代理容器backupagentcontainer内集成备份代理进程,通过docker备份代理容器backupagentcontainer内集成的备份代理进程,能够保证进行docker应用容器备份时备份数据的应用一致性,实现对备份代理进程的管理。

进一步地,所述的docker容器管理服务模块包括docker守护进程、应用数据验证容器和本地docker镜像,所述的docker备份代理镜像预置于本地docker镜像中,所述的本地docker镜像与企业私有docker镜像仓库连接,使得将docker备份代理镜像导入企业私有docker镜像仓库中。

进一步地,所述的docker守护进程对dockerapi请求进行侦听,对相关请求进行及时处理,使系统在备份恢复和数据验证过程中保持高效性,并对docker对象管理,所述的docker对象包括镜像、容器、网络和卷。

进一步地,所述的docker备份代理镜像包括操作系统基础镜像operatingsystembaseimage、原有备份代理依赖的库文件镜像agentdependlibraryimage和原有备份代理进程agentapplicationimage,所述的原有备份代理进程agentapplicationimage包括基础组件basemodule和上层应用备份代理组件,所述的基础组件basemodule包括数据传输客户端组件datatransferclient和存储客户端组件storageclient。

进一步地,所述的备份恢复子系统还包括与docker容器管理服务模块连接的数据验证服务模块,所述的数据验证服务模块驱动docker容器管理服务模块对备份数据进行有效性验证,所述的企业私有docker镜像仓库中存放承载生产业务的应用容器镜像,所述的本地docker镜像从企业私有docker镜像仓库中获取应用容器镜像,提供docker运行环境,对备份数据进行有效性校验,进一步提升了docker应用容器的数据保护的可靠性。

一种使用所述的保护docker应用容器系统的方法,用于对企业级应用程序的应用数据保护,该方法通过备份恢复子系统与企业容器服务平台的通信连接,进行数据备份恢复,其特征在于,包括以下步骤:

s1、构建docker备份代理镜像和docker容器管理服务模块,将docker备份代理镜像预置于docker容器管理服务模块中;

s2、在备份恢复子系统中集成docker容器管理服务模块;

s3、将docker备份代理镜像导入企业私有docker镜像仓库;

s4、在企业容器服务平台中部署docker备份代理容器backupagentcontainer;

s5、docker备份代理容器backupagentcontainer与备份恢复子系统进行通信,根据备份恢复子系统的指令,执行数据备份恢复操作。

进一步地,所述的步骤s4包括:

41a)利用docker容器编排系统模块,为企业容器服务平台内的每一个应用容器applicationpod部署一个docker备份代理容器backupagentcontainer;

42a)为每一个docker备份代理容器backupagentcontainer配置额外的ip地址;

43a)将应用容器数据持久化存储applicationvolume挂载到docker备份代理容器backupagentcontainer内部。

进一步地,所述的步骤s4包括:

41b)利用docker容器编排系统模块,为企业容器服务平台内的所有应用容器applicationpod部署一个或多个docker备份代理容器backupagentcontainer;

42b)为docker备份代理容器backupagentcontainer配置额外的ip地址;

43b)将应用容器的数据持久化存储applicationvolume挂载到docker备份代理容器backupagentcontainer内部。

进一步地,所述的步骤s5具体包括:

51)web服务模块接收备份恢复子系统中登录用户设定的容器备份任务和任务编排策略;

52)任务编排服务模块保存任务编排策略并根据任务编排策略触发数据备份服务模块或数据验证服务模块执行操作;

53)数据备份服务模块与docker备份代理容器backupagentcontainer通信,发送数据备份指令;

54)docker备份代理容器backupagentcontainer对相应应用容器applicationpod的应用容器数据进行备份操作;

55)快照存储系统模块存储应用备份数据。

与现有技术相比,本发明具有以下优点:

1)借助docker容器技术本身的优势,构建docker备份代理镜像,将docker备份代理镜像导入企业私有docker镜像仓库,并利用企业容器服务平台内部的容器编排服务模块,进行备份代理进程的管理,解决了备份恢复子系统在保护docker应用容器时对备份代理进程部署、管理、更新和升级等一系列繁琐的问题;

2)借助现有备份恢复子系统在数据保护领域的技术优势,在企业容器服务平台内部署docker备份代理容器backupagentcontainer,docker备份代理容器backupagentcontainer内集成备份代理进程,能够保证备份docker应用容器时备份数据的应用一致性;

3)通过在备份恢复子系统内部集成docker容器管理服务模块,提供docker运行环境,企业私有docker镜像仓库中的应用容器镜像与备份恢复系统结合,进一步提升了docker应用容器的数据保护技术方案的可靠性。

附图说明

图1为docker备份代理镜像结构示意图;

图2为docker容器管理服务模块示意图;

图3为备份恢复子系统示意图;

图4为企业私有docker镜像仓库中导入备份代理镜像后的企业容器服务平台结构示意图;

图5为按实施例1方法完成docker备份代理容器的部署后的企业容器服务平台结构示意图;

图6为按实施例2方法完成docker备份代理容器的部署后的企业容器服务平台结构示意图。

其中,1、备份恢复子系统,11、web服务模块,12、任务编排服务模块,13、数据备份服务模块,14、数据验证服务模块,15、快照存储系统模块,16、docker容器管理服务模块,161、docker守护进程,162、本地docker镜像,163、应用数据验证容器,2、企业容器服务平台,21、docker容器编排系统模块,22、企业私有docker镜像仓库,23、应用容器applicationpod,24、docker备份代理容器backupagentcontainer,3、docker备份代理镜像,31、原有备份代理进程agentapplicationimage,32、原有备份代理依赖的库文件镜像agentdependlibraryimage,33、操作系统基础镜像operatingsystembaseimage,311、上层应用备份代理组件,312、基础组件basemodule。

具体实施方式

下面结合附图和具体实施例对本发明进行详细说明。

实施例

本发明借助docker容器技术本身的优势,构建并发布docker备份代理镜像3,并利用企业容器服务平台2内部的容器编排服务模块,进行备份代理进程的管理,同时本发明在企业容器服务平台2内部部署docker备份代理容器backupagentcontainer24,将备份代理进程集成于docker备份代理容器backupagentcontainer24中,更进一步的,在备份恢复子系统1内部,通过集成docker容器管理服务模块16构建docker运行环境,通过企业私有docker镜像仓库22中的应用容器镜像,结合备份恢复子系统1内部预置的数据有效性验证脚本或工具,对备份数据进行有效性校验。

本发明的基本思想为:将现有备份恢复子系统1的备份代理封装成docker备份代理镜像3并对外发布,企业it管理员可将该docker备份代理镜像3导入企业私有docker镜像仓库22,便于快速、敏捷地在企业容器服务平台2中部署和管理备份代理,并利用备份代理中原有的应用系统备份组件,对企业容器服务平台2中运行的应用容器applicationpod23内部的应用数据进行备份。同步的,在备份恢复子系统1内部,集成一整套docker运行环境,企业it管理员可将企业私有docker镜像仓库22的访问权限授予备份恢复子系统1,使得备份恢复子系统1可以基于存储在企业私有docker镜像仓库22的应用容器镜像,对备份作业生成的备份数据进行有效性校验,以进一步提升企业容器应用数据的安全性和可靠性。

为实现该基本思想,本发明提供一种保护docker应用容器的系统,用于docker应用容器的备份恢复,该系统包括相互通信连接的备份恢复子系统1和企业容器服务平台2。

如图2和图3所示,备份恢复子系统1包括:

web服务模块11:用于提供备份恢复系统与企业it管理的交互ui,包括但不仅限于系统健康状态、日志、告警等信息的展示,应用容器备份任务及数据验证任务的创建,任务编排策略的制定以及企业私有docker镜像仓库22访问信息的授权;

任务编排服务模块12:本模块包括任务策略计划元数据索引和任务编排调度引擎,用于保存任务策略并按照任务策略触发相应任务的执行;

数据备份服务模块13:本模块包括备份任务元数据索引和备份任务调度引擎,用于具体应用备份任务的管理与调度,并与部署在企业容器服务平台2的docker备份代理容器backupagentcontainer24通信,通知其执行具体的应用容器applicationpod23内运行的应用数据的备份操作;

数据验证服务模块14:本模块包括数据验证任务元数据索引、数据验证任务调度引擎和docker客户端,用于具体应用备份数据的有效性验证任务的管理与调度;

快照存储系统模块15:用于存储应用备份数据,通过快照技术来实现应用备份数据的历史版本管理,所有快照可通过数据访问框架通过标准的数据访问协议/接口,如:iscsi、scsi、fc、nfs、loopback对外提供直接访问的能力;

docker容器管理服务模块16:本模块为本发明中新增的模块,包括docker守护进程161、本地docker镜像162和应用数据验证容器163,用于使备份恢复子系统1具备运行docker容器的能力;

docker备份代理镜像3:docker备份代理镜像3预置于docker容器管理服务模块16的本地docker镜像162中,并导入企业私有docker镜像仓库22,便于快速、敏捷地在企业容器服务平台2中部署和管理备份代理,并利用备份代理中原有的应用系统备份组件,对运行在应用容器applicationpod23内部的应用数据进行备份。

其中,docker守护进程161负责侦听dockerapi请求,并管理docker对象,如镜像、容器、网络和卷;本地docker镜像162开始会预置docker备份代理镜像3,后续可根据备份数据有效性验证任务所需,从企业私有docker镜像仓库22中获取应用容器镜像。

如图1所示,docker备份代理镜像3包括操作系统基础镜像operatingsystembaseimage33、原有备份代理依赖的库文件镜像agentdependlibraryimage32和原有备份代理进程agentapplicationimage31,原有备份代理进程agentapplicationimage31包括基础组件basemodule312和上层应用备份代理组件311,基础组件basemodule包括数据传输客户端组件datatransferclient和存储客户端组件storageclient。其中,操作系统基础镜像operatingsystembaseimage33是从dockerhub获取的操作系统基础镜像,docker公司维护的全球最大的镜像仓库,可选centos,ubuntu及其他主流开源linux发行版,上层应用备份代理组件包括filesystembackupagent,oraclebackupagent,mysqlbackupagent等。

如图4、图5和图6所示,企业容器服务平台2包括多个应用容器applicationpod23、与每个应用容器applicationpod23对应连接的多个应用容器数据持久化存储applicationvolume、docker容器编排系统模块21和企业私有docker镜像仓库22,其中,docker容器编排系统模块21用于为企业容器服务平台2内的应用容器applicationpod23部署docker备份代理容器backupagentcontainer24,企业私有docker镜像仓库22中存放企业部署docker应用容器承载生产业务的所有应用容器镜像。

企业私有docker镜像仓库22访问权限授予备份恢复子系统1后,本地docker镜像162通过与企业私有docker镜像仓库22的连接,将docker备份代理镜像3导入企业私有docker镜像仓库22中,数据备份服务模块13通过与docker备份代理容器backupagentcontainer24的通信连接,通知docker备份代理容器backupagentcontainer24进行数据备份恢复操作,docker备份代理容器backupagentcontainer24内集成备份代理进程。进行备份数据有效性验证时,数据验证服务模块14根据任务编排服务模块12保存的数据有效性验证任务驱动docker容器管理服务模块16对备份数据进行有效性验证,本地docker镜像162从企业私有docker镜像仓库22中获取应用容器镜像。

本发明基于建立的一种保护docker应用容器的系统,还提供了使用该系统保护docker应用容器的方法,用于对企业级应用程序的应用数据保护,该方法通过备份恢复子系统1与企业容器服务平台2的通信连接,进行数据备份恢复和备份数据有效性验证。

如图4所示,本实施例以企业数据中心常见的容器服务平台为例,通常包含docker容器编排系统,企业私有docker镜像仓库22以及按照企业业务所属部署的应用容器,目前主流的容器编排工具有docker开发的swarm和google开发的kubernetes,这里以业界部署实施最多的kubernetes为例。

实施例1

首先构建docker备份代理镜像3和docker容器管理服务模块16,将docker备份代理镜像3预置于docker容器管理服务模块16中,集成如图3所示的备份恢复子系统1,然后在企业内部数据中心内,部署备份恢复子系统1,并将企业私有docker镜像仓库22访问权限授予备份恢复子系统1,将备份恢复子系统1内部的docker备份代理镜像3推送到企业私有docker镜像仓库22。

docker备份代理镜像3导入进企业私有docker镜像仓库22后,企业it管理员操作docker容器编排系统,如图5所示,为每一个应用容器applicationpod23部署一个docker备份代理容器backupagentcontainer24作为辅助容器。为docker备份代理容器backupagentcontainer24配置额外的ip地址,让其可以和备份恢复子系统1通过网络通信,并将应用容器数据持久化存储applicationvolume挂载到dockerdocker备份代理容器backupagentcontainer24内部,使docker备份代理容器backupagentcontainer24能够访问应用容器的数据。完成部署。

部署成功后,企业it管理员可以登陆备份恢复子系统1的web服务模块11的管理控制台,对相应的docker应用容器创建数据保护任务或备份数据有效性验证任务,并为任务编排策略,系统将进行数据备份恢复操作或备份有效性验证操作。

数据备份恢复操作具体包括以下步骤:

51)web服务模块11接收备份恢复子系统1中登录用户设定的容器备份任务和任务编排策略;

52)任务编排服务模块12保存任务编排策略并根据任务编排策略触发数据备份服务模块13执行操作;

53)数据备份服务模块13与docker备份代理容器backupagentcontainer24通信,发送数据备份指令;

54)docker备份代理容器backupagentcontainer24对应用容器applicationpod23内的应用容器数据进行备份操作;

55)快照存储系统模块15存储应用备份数据。

备份数据有效性验证的关键步骤包括:

a)根据数据有效性验证任务的备份数据源信息通知docker容器管理服务模块16从企业私有docker镜像仓库22中获取对应的应用容器镜像,存储为本地docker镜像162;

b)根据数据有效性验证任务的时间点信息从快照存储系统中获取对应应用容器数据时间点快照,使用loopback方式挂载到本地;

c)通知docker容器管理服务模块16运行对应的应用容器,运行时指定相关参数将应用容器数据时间点快照挂载到应用数据验证容器163内部;

d)执行预置的应用容器数据验证脚本或工具。

系统按照计划自动触发执行,高效、安全、可靠的解决docker应用容器的数据保护问题。

实施例2

如图6所示,本实施例与实施例1的不同之处在于,在部署docker备份代理容器backupagentcontainer24时,企业it管理员操作docker容器编排系统,为所有应用容器applicationpod23部署一个或者多个docker备份代理容器backupagentcontainer24作为辅助容器,部署多个docker备份代理容器backupagentcontainer24有助于提高性能。本实施例其他部分与实施例1相同。

以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的工作人员在本发明揭露的技术范围内,可轻易想到各种等效的修改或替换,这些修改或替换都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1