基于salt的Zookeeper备份管理系统及方法与流程

文档序号:12946711阅读:431来源:国知局
基于salt的Zookeeper备份管理系统及方法与流程

本发明属于计算机技术领域,主要应用于zookeeper集群数据备份的应用场景,以便保障zookeeper集群数据的可用性。



背景技术:

对于互联网公司而言,随着业务需求越来越复杂,zookeeper作为服务发现和服务注册服务,得到广泛应用。现有zookeeper数据备份方法具有如下缺点:

(1)缺乏系统管理:对zookeeper备份,没有做系统性管理,缺乏规范化。

(2)备份方案缺乏简便性,操作复杂,易用性差。

(3)备份方案不够科学,很难保证备份数据的可用性。

(4)数据恢复过程繁杂,无法做到快速恢复数据。



技术实现要素:

本发明针对现有技术的不足,提供一种基于salt的zookeeper备份管理系统及方法,基于salt可以获取zookeeper集群所有成员信息,还可以实现发送备份文件到存储节点,同时也可以方便获取备份文件到恢复节点,从而快速恢复数据。

本发明的目的是通过以下技术方案来实现的:一种基于salt的zookeeper备份管理系统,该系统包括元数据管理端、zookeeper集群节点、存储节点和恢复节点。

元数据管理端:需要部署salt管理服务,用于注册所有的zookeeper集群节点,所有的zookeeper集群节点的主机名保存在元数据管理端的zookeeper集群节点元数据中;zookeeper集群节点上的所有zookeeper服务的ip和端口信息,保存在元数据管理端的zookeeper集群服务元数据中;zookeeper数据备份完成后,备份文件的相关信息保存在元信息管理端的zookeeper集群备份元数据中,zookeeper集群备份元数据包括:zookeeper集群端口、备份文件名、存储节点主机名、存储目录;

在元数据管理端,调用salt自身接口,获取zookeeper集群节点上所有的zookeeper集群服务元数据;调用salt自身接口,发送zookeeper备份文件到存储节点对应的存储目录;调用salt自身接口,获取到指定的备份文件,发送到指定的恢复节点,进而得到zookeeper备份数据。

zookeeper集群节点:部署zookeeper集群,每个zookeeper集群包括奇数个zookeeper服务(通常至少3个),每个zookeeper集群以端口唯一标识。需要部署salt客户端,用于接收salt管理服务的指令,从而完成指定的操作。

存储节点:存放zookeeper备份数据的服务器,部署salt客户端,用于接收salt管理服务的指令,从而完成指定的操作。

恢复节点:需要部署salt客户端,用于接收salt管理服务发送的备份数据,从而快速恢复所述zookeeper备份数据。

进一步地,所述zookeeper集群节点包括zookeeper服务获取模块:按照zookeeper集群部署要求,一个zookeeper集群至少需要3个成员,并且,成员个数为奇数,例如可以采用3个成员形式部署zookeeper集群;一个zookeeper集群中所有成员的端口保持一致,不同的zookeeper集群,端口不同,采用端口唯一标识所述zookeeper集群。

所述zookeeper服务获取模块,需要传入的参数:zookeeper集群节点元数据。

进一步地,所述元数据管理端包括元数据管理模块、任务调度模块、数据备份模块和备份文件管理模块;

所述元数据管理模块,需要传入的参数:zookeeper集群节点的主机名;

所述任务调度模块,需要传入的参数:zookeeper集群服务元数据;

所述数据备份模块,需要传入的参数:zookeeper集群服务元数据;

所述备份文件管理模块,需要传入的参数:备份文件名或者zookeeper集群备份元数据。

进一步地,所述存储节点包括备份存储模块,需要传入的参数:zookeeper集群备份元数据。

进一步地,所述恢复节点包括数据恢复模块:需要传入参数:zookeeper集群的端口和备份日期。

一种基于salt的zookeeper备份管理方法,该方法包括:

(1)调用元数据管理模块,更新zookeeper集群节点元数据,在调用zookeeper服务获取模块结束后,在元数据管理端更新zookeeper集群服务元数据;在调用备份存储模块结束后,在元数据管理端更新zookeeper集群备份元数据。

(2)调用zookeeper服务获取模块,扫描zookeeper集群节点元数据,获取到所有zookeeper集群节点上的所有zookeeper集群成员的ip和端口信息,并且记录在zookeeper集群服务元数据中。

(3)定期运行任务调度模块,扫描zookeeper集群服务元数据,调用对应的数据备份模块,从而触发zookeeper数据备份操作。

(4)数据备份模块调用zookeeper备份工具,根据传入的参数,针对每个zookeeper集群,执行一次备份操作。如果备份失败,那么调用备份文件管理模块,否则,调用备份存储模块。

(5)调用备份存储模块,在数据备份模块执行结束后,返回zookeeper备份文件名,然后,备份存储模块发送所述zookeeper备份文件到存储节点指定存储目录下,同时,更新zookeeper集群备份元数据。

(6)调用备份文件管理模块,每天定期调用本模块,按照zookeeper备份策略要求,删除过期的备份文件、失败的备份文件。

(7)调用数据恢复模块,元数据管理端调用本模块,发送指定的备份文件到存储节点,在存储节点上启动一个新zookeeper服务,并且采用zookeeper数据恢复工具,恢复备份文件数据到该zookeeper服务中,从而得到所需数据。

本发明的有益效果是:

(1)系统性管理备份文件:对于每个zookeeper集群,每天都有对应的备份文件,所述备份文件进行统一化管理。

(2)自动化管理:zookeeper备份整个过程自动化,不需要人工干预,大大降低备份工作维护成本。

(3)恢复速度快:可以一键操作,恢复所需要的数据。

(4)支持多层次备份:支持按照年份、月份和日期进行备份,zookeeper备份策略灵活多样。

附图说明

图1是本发明基于salt的zookeeper备份管理系统总体架构图;

图2是本发明基于salt的zookeeper备份管理系统各个模块流程图。

具体实施方式

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

如图1所示,本发明提供的一种基于salt的zookeeper备份管理系统,该系统包括元数据管理端、zookeeper集群节点、存储节点和恢复节点四个单元:

(1)元数据管理端

在元数据管理端,需要部署salt管理服务,以便发送指令或者文件到salt客户端,完成指定的操作。

元数据管理端主要存储zookeeper集群节点元数据、zookeeper集群服务元数据和zookeeper集群备份元数据,通过如下方式增加zookeeper集群节点元数据:

#salt-key–y–a‘zookeeper集群节点主机名’

如果需要调整zookeeper集群,删除某个zookeeper集群节点主机,方式如下:#salt-key–d‘zookeeper集群节点主机名’

说明:zookeeper集群节点主机名是部署zookeeper服务的服务器主机名;

元数据管理端定期运行zookeeper服务获取模块,定期抓取和更新所有zookeeper集群服务元数据,便于任务调度模块调用。

元数据管理端定期调用任务调度模块,从而更新zookeeper集群备份元数据。

(2)zookeeper集群节点

zookeeper集群节点是部署zookeeper集群的服务器,至少需要三台服务器,本实施例以三台服务器为例,在三台服务器上部署三个成员的zookeeper集群。三台服务器上可以部署多套zookeeper集群,不同zookeeper集群,端口唯一标识。同一套zookeeper集群包含三个成员,每个成员的端口号相同。

在zookeeper集群节点上需要部署salt客户端,以便接收和处理salt管理服务发送的指令。

(3)存储节点

存储节点是存储zookeeper备份文件的服务器,备份文件分布在不同的存储目录下,存储目录分为年份目录、月份目录和天目录,分别存储年份备份文件、月份备份文件和天的备份文件。按照zookeeper备份策略,每年的某一天的备份文件作为年份备份文件;每个月的某一天的备份文件作为月份备份文件,其余的备份文件作为天的备份文件,不同层次的备份,可以最大限度地保证备份数据的可用性。

(4)恢复节点

在恢复节点上部署salt客户端,主要用于接收元数据管理端发送的zookeeper备份文件,同时,在存储节点上启动一个新的zookeeper服务,调用zookeeper恢复工具zktreeutil把备份文件数据恢复到所述zookeeper服务中。

如图2所示,每个单元具体包括的模块如下:

(1)元数据管理模块

需要传入的参数是zookeeper集群节点的主机名;

在元数据管理端,根据传入的参数,调用salt自身接口,注册或者删除zookeeper集群节点元数据,如果zookeeper集群节点调整,比如,添加、下线服务器,需要人工更新zookeeper集群节点元数据;同时,在元数据管理端存储zookeeper集群服务元数据和zookeeper集群备份元数据。

zookeeper集群节点元数据注册方式:

#salt-key–y–a‘zookeeper服务主机名’

zookeeper服务主机名表示zookeeper服务所在的服务器主机名

zookeeper集群节点元数据删除方式:

#salt-key–d‘zookeeper服务主机名’

每天定期更新和归档所述zookeeper集群服务元数据和所述zookeeper集群备份元数据,便于查看历史记录。同时,需要备份所述zookeeper集群备份元数据,保证备份文件可用性。

(2)zookeeper服务获取模块

需要传入的参数:zookeeper集群节点元数据;

在元数据管理端,根据传入的所述zookeeper集群节点元数据,解析得到所有的zookeeper服务主机名。然后,调用salt接口,获取所述zookeeper服务主机名对应的zookeeper进程信息,然后解析所述zookeeper进程信息,得到集群端口号,记录zookeeper服务的ip和端口到zookeeper集群服务元数据中,获取zookeeper集群进程信息方式如下:

#salt‘zookeeper服务主机名’cmd.run‘ps-ef|egrepzookeeper|grep-vgrep’

解析所述zookeeper进程信息,得到zookeeper服务的端口号。

(3)任务调度模块

需要传入的参数:zookeeper集群服务元数据;

在元数据管理端,解析所述zookeeper集群服务元数据,得到所有zookeeper集群的所有成员的ip和端口,然后调用数据备份模块,传入zookeeper集群的端口和zookeeper集群所有成员的ip。

采用定时任务形式,每天调用一次任务调度模块,本模块调用数据备份模块。

(4)数据备份模块

需要传入的参数:zookeeper集群服务元数据

在元数据管理端,解析所述zookeeper集群服务元数据,得到所有zookeeper集群的端口号和zookeeper集群成员的主机名,本模块采用zookeeper备份工具zktreeutil,传入以上参数,执行zookeeper数据备份,产生的备份数据保存在元数据管理端指定的目录中,称之为zookeeper备份文件。不同zookeeper集群的备份文件,以端口作为区分。

如果备份操作成功执行,调用备份存储模块,否则,调用备份文件管理模块清理失败的备份文件。

(5)备份存储模块

需要传入的参数:zookeeper备份文件名、存储节点主机名、存储目录;

在元数据管理端,根据zookeeper备份策略,调用salt接口,发送指令到存储节点对应的salt客户端,创建备份文件所需的存储目录。然后,调用salt接口,发送所述zookeeper备份文件到指定的存储节点的存储目录下。最后,记录所述备份文件名、存储节点主机名、存储目录和备份日期到zookeeper集群备份元数据中。

(6)数据恢复模块

需要传入参数:zookeeper集群端口号和备份日期;

在元数据管理端,根据传入的zookeeper集群端口号和备份日期,扫描zookeeper集群备份元数据,找到对应的zookeeper备份文件名、、存储节点主机名、存储目录。然后,调用salt接口,从存储节点上获取备份文件到元数据管理端,然后通过salt自身接口,发送所述zookeeper备份文件到恢复节点指定的目录下。最后,在恢复节点上启动一个新的zookeeper服务,该zookeeper服务采用单机模式,调用zookeeper数据恢复工具zktreeutil,从备份文件中恢复数据到新zookeeper中。

(7)备份文件管理模块

需要传入的参数:备份文件名或者zookeeper备份元数据

为了便于区分,采用不同的选项传入参数,比如,-fzookeeper数据备份文件名,-mzookeeper备份元数据

在数据备份模块执行结束后,如果备份失败,那么调用本模块,采用–f备份文件名传入参数;另外,每天定期执行本模块,传入参数为:-mzookeeper备份元数据,结合zookeeper备份策略,如果缺少年份备份,那么从月份备份中选择一个备份文件作为年份备份,如果缺少月份备份,那么从天备份中选择一个备份文件作为月份备份,最后,清理过期备份文件,既满足多层次备份,又可以节省存储空间。

一种基于salt的zookeeper备份管理方法,该方法包括:

(1)调用元数据管理模块,更新zookeeper集群节点元数据,在调用zookeeper服务获取模块结束后,在元数据管理端更新zookeeper集群服务元数据;在调用备份存储模块结束后,在元数据管理端更新zookeeper集群备份元数据。

(2)调用zookeeper服务获取模块,扫描zookeeper集群节点元数据,获取到所有zookeeper集群节点上的所有zookeeper集群成员的ip和端口信息,并且记录在zookeeper集群服务元数据中。

(3)定期运行任务调度模块,扫描zookeeper集群服务元数据,调用对应的数据备份模块,从而触发zookeeper数据备份操作。

(4)数据备份模块调用zookeeper备份工具,根据传入的参数,针对每个zookeeper集群,执行一次备份操作。如果备份失败,那么调用备份文件管理模块,否则,调用备份存储模块。

(5)调用备份存储模块,在数据备份模块执行结束后,返回zookeeper备份文件名,然后,备份存储模块发送所述zookeeper备份文件到存储节点指定存储目录下,同时,更新zookeeper集群备份元数据。

(6)调用备份文件管理模块,每天定期调用本模块,按照zookeeper备份策略要求,删除过期的备份文件、失败的备份文件。

(7)调用数据恢复模块,元数据管理端调用本模块,发送指定的备份文件到存储节点,在存储节点上启动一个新zookeeper服务,并且采用zookeeper数据恢复工具,恢复备份文件数据到该zookeeper服务中,从而得到所需数据。

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