分布式块存储系统及面向制造业的缩短故障恢复时间方法转让专利

申请号 : CN202310144025.8

文献号 : CN116400853B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 俞腾秋徐文豪张凯王弘毅

申请人 : 北京志凌海纳科技有限公司

摘要 :

本发明公开了一种分布式块存储系统及面向制造业的缩短故障恢复时间方法,初始工作时,在Zookeeper服务器集群中选取Zookeeper服务器领导者,控制存储服务模块与Zookeeper服务领器导者建立Zookeeper会话,控制存储服务模块与所述元数据服务模块在Zookeeper服务器中建立租约,并选举元数据服务领导者;通过元数据服务领导者进行提供数据服务;在Zookeeper领导者所在节点宕机故障发生时,重新选举Zookeeper服务器领导者,并选举出新的元数据服务领导者,删除Zookeeper服务器上存储服务模块与元数据服务模块的旧租约,并控制新的元数据服务领导者提供数据服务,达到缩短故障恢复总时间的技术效果。

权利要求 :

1.一种分布式块存储系统,其特征在于,包括多个服务器节点;

所述服务器节点包括Zookeeper服务器、元数据服务模块、存储服务模块;

其中,所述Zookeeper服务器,用于与所述存储服务模块建立Zookeeper会话,并在Zookeeper服务器集群中相互投票获取Zookeeper服务器领导者对元数据服务模块和存储服务模块进行服务;

所述存储服务模块,用于与Zookeeper服务器建立Zookeeper会话,并与所述元数据服务模块在Zookeeper服务器中建立租约;

所述元数据服务模块,用于与所述存储服务模块建立租约,并在所述Zookeeper服务器中进行注册,并获取所述元数据服务模块在Zookeeper服务器中的注册时间,确定注册时间最早的元数据服务模块为元数据服务领导者,由元数据服务领导者提供数据服务,并检查所述Zookeeper会话是否存在,在所述Zookeeper会话不存在时删除Zookeeper服务器上存储服务模块与元数据服务模块的旧租约。

2.根据权利要求1所述的一种分布式块存储系统,其特征在于,所述分布式块存储系统,用于基于Zookeeper服务器之间相互投票的方式,从中选择一个作为整个分布式块存储系统的Zookeeper领导者;

所述Zookeeper服务器领导者,用于分别与所有存储服务模块建立会话;控制所述存储服务模块与对应的元数据服务模块建立租约,并将所述租约保存至对应的Zookeeper服务器中;

所述元数据服务模块在上述租约建立完成后,在Zookeeper服务器集群中随机选取Zookeeper服务器进行注册,并分别记录元数据服务模块注册成功的时间;所述分布式块存储系统确定注册成功时间最早的元数据服务模块为元数据服务领导者;

所述分布式块存储系统,还用于实时监控当前服务器节点的运行状态及客户端及所有存储服务模块与当前元数据服务领导者之间的网络状况、元数据服务领导者与Zookeeper服务器领导者之间的网络状况,判断当前时刻的当前的元数据服务领导者与所有的存储服务模块之间建立的租约是否过期;若租约过期,则控制所述租约过期对应的存储服务模块停止接收客户端的访问请求,并删除所述租约过期对应的存储服务模块上的旧租约;

所述元数据服务领导者,还用于检查所有Zookeeper会话是否存在,若所述Zookeeper会话不存在,则删除对应的Zookeeper服务器上存储服务模块与元数据服务模块的租约。

3.一种面向制造业的缩短故障恢复时间方法,其基于权利要求1‑2任一项所述的分布式块存储系统实现缩短故障恢复时间的处理操作,具体包括:在Zookeeper服务器集群选择一个Zookeeper服务器作为整个分布式块存储系统的Zookeeper服务器领导者;所述Zookeeper服务器领导者分别与所有存储服务模块建立Zookeeper会话,控制所述存储服务模块与对应的元数据服务模块建立租约,并将所述租约保存至对应的Zookeeper服务器中;在元数据服务模块集群中选举元数据服务领导者;并控制元数据服务领导者提供数据服务;

实时监控Zookeeper领导者所在的服务器节点运行状态,若Zookeeper领导者所在的服务器节点故障宕机,则在Zookeeper服务器集群选择一个Zookeeper服务器作为整个分布式块存储系统的新的Zookeeper服务器领导者;

所述新的Zookeeper服务器领导者分别与所有存储服务模块建立Zookeeper会话,控制所述存储服务模块与对应的元数据服务模块建立租约,并将所述租约保存至对应的Zookeeper服务器中;在元数据服务模块集群中选举新的元数据服务领导者;

所述新的元数据服务领导者获取所述Zookeeper会话,实时检测Zookeeper会话是否存在,若所述Zookeeper会话不存在,则删除对应的存储服务模块的旧租约,并控制新的元数据服务领导者开始提供数据服务。

说明书 :

分布式块存储系统及面向制造业的缩短故障恢复时间方法

技术领域

[0001] 本发明涉及分布式块存储系统故障恢复领域,尤其涉及一种分布式块存储系统及面向制造业的缩短故障恢复时间方法。

背景技术

[0002] 分布式块存储系统将分布在集群中多个物理节点的存储资源聚合为一个统一的资源池,对外提供虚拟块设备服务。系统通常会划分为多个层级,层级中包含不同功能模块,且各个模块会在每个节点上有自己的实例,实例之间通过共识算法等方式组成服务集群,以实现高可用和负载均衡。同时,不同层级的模块之间通常在启动顺序上有较强依赖关系。
[0003] 对于一个复杂的分布式块存储系统而言,出于节省资源的考虑,通常单个物理服务器上会部署多个不同服务。此时单物理服务器故障意味着部署在该服务器上的集群中多个不同层级上的模块需要进行故障恢复,模块之间很有可能需要串行地等待恢复完成,例如基于分布式共识模块会出现集群管理模块,他要恢复完成之后才可以通知存储系统的数据管理模块和数据接入模块恢复服务使得总恢复时长的累加。整个集群的故障恢复过程会消耗数十秒至数分钟的时间。
[0004] 分布式块存储系统中,缩短故障恢复时间的最常见方式是缩短超时等待时间,让异常后存活的模块更早点触发重新选举以恢复服务。例如,对于Zookeeper服务集群,减少其选举超时时间即可有效地加快选举过程,减少Zookeeper的异常恢复时间。
[0005] 通常来说,一个模块的超时时间设定值会有一个取值下界,取值下界一般代表着模块内部实现上约束。例如Zookeeper会话超时时间,其取值被官方定义为不能小于两倍心跳间隙时间。
[0006] 同时,超时时间设定值也不建议设置得过于小,值越小会使模块越难以承受短时间的网络波动,因为偶尔出现的几次高网络延迟的心跳包将很容易越过设定较短的超时时间,触发了预期之外的故障恢复,进而加重集群的整体负担。例如:Zookeeper选举超时时间,通常推荐设置2秒以上,对于现代数据中心,这个超时时间是足够的。
[0007] 总而言之,“降低超时时间”的方法有一定局限性,仅靠“降低超时时间”的方法无法将集群的故障恢复时间降低到足够低的水平。

发明内容

[0008] 本发明的目的在于提供面向制造业的缩短故障恢复时间方法,解决了现有技术中指出的上述技术问题。
[0009] 本发明提供了一种分布式块存储系统,包括多个服务器节点;
[0010] 所述服务器节点包括Zookeeper服务器、元数据服务模块、存储服务模块;
[0011] 其中,所述Zookeeper服务器,用于与所述存储服务模块建立Zookeeper会话,并在Zookeeper服务器集群中相互投票获取Zookeeper服务器领导者对元数据服务模块和存储服务模块进行服务;
[0012] 所述存储服务模块,用于与Zookeeper服务器建立Zookeeper会话,并与所述元数据服务模块在Zookeeper服务器中建立租约;
[0013] 所述元数据服务模块,用于与所述存储服务模块建立租约,并在所述Zookeeper服务器中进行注册,并获取所述元数据服务模块在Zookeeper服务器中的注册时间,确定注册时间最早的元数据服务模块为元数据服务领导者,由元数据服务领导者提供数据服务,并检查所述Zookeeper会话是否存在,在所述Zookeeper会话不存在时删除Zookeeper服务器上存储服务模块与元数据服务模块的旧租约。
[0014] 较佳的,作为一种可实施方式,所述分布式块存储系统,用于基于Zookeeper服务器之间相互投票的方式,从中选择一个作为整个分布式块存储系统的Zookeeper领导者;
[0015] 所述Zookeeper服务器领导者,用于分别与所有存储服务模块建立会话;控制所述存储服务模块与对应的元数据服务模块建立租约,并将所述租约保存至对应的Zookeeper服务器中;
[0016] 所述元数据服务模块在上述租约建立完成后,在Zookeeper服务器集群中随机选取Zookeeper服务器进行注册,并分别记录元数据服务模块注册成功的时间;所述分布式块存储系统确定注册成功时间最早的元数据服务模块为元数据服务领导者;
[0017] 所述分布式块存储系统,还用于实时监控当前服务器节点的运行状态及客户端及所有存储服务模块与当前元数据服务领导者之间的网络状况、元数据服务领导者与Zookeeper服务器领导者之间的网络状况,判断当前时刻的当前的元数据服务领导者与所有的存储服务模块之间建立的租约是否过期;若租约过期,则控制所述租约过期对应的存储服务模块停止接收客户端的访问请求,并删除所述租约过期对应的存储服务模块上的旧租约;
[0018] 所述元数据服务领导者,还用于检查所有Zookeeper会话是否存在,若所述Zookeeper会话不存在,则删除对应的Zookeeper服务器上存储服务模块与元数据服务模块的租约。
[0019] 相应地,本发明提供了一种面向制造业的缩短故障恢复时间方法,其基于分布式块存储系统实现缩短故障恢复时间的处理操作,具体包括:
[0020] 在Zookeeper服务器集群选择一个Zookeeper服务器作为整个分布式块存储系统的Zookeeper服务器领导者;所述Zookeeper服务器领导者分别与所有存储服务模块建立Zookeeper会话,控制所述存储服务模块与对应的元数据服务模块建立租约,并将所述租约保存至对应的Zookeeper服务器中;在元数据服务模块集群中选举元数据服务领导者;并控制元数据服务领导者提供数据服务;
[0021] 实时监控Zookeeper领导者所在的服务器节点运行状态,若Zookeeper领导者所在的服务器节点故障宕机,则在Zookeeper服务器集群选择一个Zookeeper服务器作为整个分布式块存储系统的新的Zookeeper服务器领导者;
[0022] 所述新的Zookeeper服务器领导者分别与所有存储服务模块建立Zookeeper会话,控制所述存储服务模块与对应的元数据服务模块建立租约,并将所述租约保存至对应的Zookeeper服务器中;在元数据服务模块集群中选举新的元数据服务领导者;
[0023] 所述新的元数据服务领导者获取所述Zookeeper会话,实时检测Zookeeper会话是否存在,若所述Zookeeper会话不存在,则删除对应的存储服务模块的旧租约,并控制新的元数据服务领导者开始提供数据服务。
[0024] 与现有技术相比,本发明实施例至少存在如下方面的技术优势:
[0025] 分析本发明提供的上述面向制造业的缩短故障恢复时间方法可知,本发明实例提出的面向制造业的缩短故障恢复时间方法,在分布式块存储系统初始化工作时,通过Zookeeper服务器在Zookeeper服务器集群中相互投票选举出Zookeeper服务器领导者,控制存储服务模块与所述Zookeeper服务领器导者建立Zookeeper会话后,控制存储服务模块与所述元数据服务模块在Zookeeper服务器中建立租约后,控制元数据服务模块在Zookeeper服务器中进行注册并记录注册时间,确定注册时间最早的元数据服务模块为元数据服务领导者;通过元数据服务领导者进行提供数据服务;在Zookeeper领导者所在节点宕机故障发生时,重新选举Zookeeper服务器领导者,并选举出新的元数据服务领导者,元数据服务领导者检查Zookeeper会话,若所述Zookeeper会话不存在,则证明出现网络中断等故障发生(网络中断等故障发生时,当前租约过期),删除Zookeeper服务器上存储服务模块与元数据服务模块的旧租约,并控制新的元数据服务领导者提供数据服务;以上述操作达到缩短故障恢复总时间的技术效果;本发明实施例采用的技术方案,能够根据Zookeeper服务器领导者与存储服务模块建立会话,在网络终端等故障发生时,使元数据服务领导者与存储服务模块的租约在第一时间失效,同时建立新的租约向客户端的访问提供服务,进而缩短故障总恢复时间;选举出元数据服务领导者后,检查所有运行正常的Zookeeper服务器,删除残留的租约,减少了故障恢复流程中需要等待旧租约过期的耗时,使得故障恢复时间能进一步地降低。

附图说明

[0026] 为了更清楚地说明本发明具体实施方式或现有技术中的技术方案,下面将对具体实施方式或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施方式,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0027] 图1为本发明实施例一提供的一种分布式块存储系统系统架构示意图;
[0028] 图2为本发明实施例二提供的一种面向制造业的缩短故障恢复时间方法的步骤流程示意图。
[0029] 标号:服务器节点10;Zookeeper服务器11;元数据服务模块12;存储服务模块13;元数据服务模块的实例121。

具体实施方式

[0030] 下面将结合附图对本发明的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0031] 下面通过具体的实施例并结合附图对本发明做进一步的详细描述。
[0032] 实施例一
[0033] 如图1所示,本发明提出了一种分布式块存储系统,包括多个服务器节点10;
[0034] 所述服务器节点包括Zookeeper服务器11、元数据服务模块12、存储服务模块13;
[0035] 其中,所述Zookeeper服务器,用于与所述存储服务模块建立Zookeeper会话,并在Zookeeper服务器集群中相互投票获取Zookeeper服务器领导者对元数据服务模块和存储服务模块进行服务;
[0036] 所述存储服务模块,用于与Zookeeper服务器建立Zookeeper会话,并与所述元数据服务模块在Zookeeper服务器中建立租约;
[0037] 所述元数据服务模块,用于与所述存储服务模块建立租约,并在所述Zookeeper服务器中进行注册,并获取所述元数据服务模块在Zookeeper服务器中的注册时间,确定注册时间最早的元数据服务模块为元数据服务领导者,由元数据服务领导者提供数据服务,并检查所述Zookeeper会话是否存在,在所述Zookeeper会话不存在时,删除Zookeeper服务器上存储服务模块与元数据服务模块的旧租约。
[0038] 优选的,作为一种可实施方式,所述分布式块存储系统,用于基于Zookeeper服务器之间相互投票的方式,从中选择一个作为整个分布式块存储系统的Zookeeper领导者;
[0039] 所述Zookeeper服务器领导者,用于分别与所有存储服务模块建立会话;控制所述存储服务模块与对应的元数据服务模块建立租约,并将所述租约保存至对应的Zookeeper服务器中;
[0040] 所述所述元数据服务模块在上述租约建立完成后,在Zookeeper服务器集群中随机选取Zookeeper服务器进行注册,并分别记录元数据服务模块注册成功的时间;所述分布式块存储系统确定注册成功时间最早的元数据服务模块为元数据服务领导者;
[0041] 所述分布式块存储系统,还用于实时监控Zookeeper领导者所在的服务器节点运行状态,若Zookeeper领导者所在的服务器节点故障宕机,则在Zookeeper服务器集群选择一个Zookeeper服务器作为整个分布式块存储系统的新的Zookeeper服务器领导者;
[0042] 所述新的Zookeeper服务器领导者分别与所有存储服务模块建立Zookeeper会话,控制所述存储服务模块与对应的元数据服务模块建立租约,并将所述租约保存至对应的Zookeeper服务器中;在元数据服务模块集群中选举新的元数据服务领导者,并提供数据服务;
[0043] 所述元数据服务领导者,还用于检查所有Zookeeper会话是否存在,若所述Zookeeper会话不存在,则删除对应的Zookeeper服务器上存储服务模块与元数据服务模块的租约。
[0044] 综上,本发明提供的上述一种分布式块存储系统,通过在Zookeeper服务器集群中选取Zookeeper服务领器导者,控制存储服务模块与所述Zookeeper服务领器导者建立Zookeeper会话后,控制存储服务模块与所述元数据服务模块在Zookeeper服务器中建立租约后,控制元数据服务模块在Zookeeper服务器中进行注册并记录注册时间,确定注册时间最早的元数据服务模块为元数据服务领导者;通过元数据服务领导者进行提供数据服务;实时监控Zookeeper领导者所在的服务器节点运行状态,若Zookeeper领导者所在的服务器节点故障宕机,则在Zookeeper服务器集群选择一个Zookeeper服务器作为整个分布式块存储系统的新的Zookeeper服务器领导者;所述新的Zookeeper服务器领导者分别与所有存储服务模块建立Zookeeper会话,控制所述存储服务模块与对应的元数据服务模块建立租约,并将所述租约保存至对应的Zookeeper服务器中;在元数据服务模块集群中选举新的元数据服务领导者;所述新的元数据服务领导者检查所述Zookeeper会话是否存在,在Zookeeper会话不存在时,删除旧的租约,并提供数据服务,进而缩短故障恢复总时间。
[0045] 实施例二
[0046] 如图2所示,相应地,本发明还提出了一种面向制造业的缩短故障恢复时间方法,包括如下操作步骤:
[0047] 步骤S10:在Zookeeper服务器集群选择一个Zookeeper服务器作为整个分布式块存储系统的Zookeeper服务器领导者;所述Zookeeper服务器领导者分别与所有存储服务模块建立Zookeeper会话,控制所述存储服务模块与对应的元数据服务模块建立租约,并将所述租约保存至对应的Zookeeper服务器中;在元数据服务模块集群中选举元数据服务领导者;并控制元数据服务领导者提供数据服务;
[0048] 需要说明的是,所述Zookeeper领导者的选举方式是基于Zookeeper服务器之间相互投票的选举方式;例如,在Zookeeper服务器集群中有3个Zookeeper服务器,分别表示为Zookeeper服务器1、Zookeeper服务器2、Zookeeper服务器3,他们之间互相投票,Zookeeper服务器1投票给Zookeeper服务器2,Zookeeper服务器2投票给Zookeeper服务器1,Zookeeper服务器3投票给Zookeeper服务器1,则此时,Zookeeper服务器1为整个分布式存储系统的Zookeeper领导者。;
[0049] 需要说明的是,在存储服务模块与Zookeeper服务器建立Zookeeper会话,并且存储服务模块与对应的元数据服务模块建立租约后,所述元数据服务模块在Zookeeper服务器集群中随机选取Zookeeper服务器进行注册,并分别记录元数据服务模块注册成功的时间;所述分布式块存储系统确定注册成功时间最早的元数据服务模块为元数据服务领导者;需要说明的是,在存储服务模块启动后,存储服务模块与Zookeeper服务器尝试建立Zookeeper会话;如果失败则会等待一段时间后重试,直至成功;当存储服务模块建立了Zookeeper会话后,尝试与元数据模块建立租约。如果失败则会等待一段时间后重试,直至成功;在出现宕机或者网络中断情况时,通常来说系统中Zookeeper会话超时过期时间参数会比租约超时过期时间参数要更短,因此Zookeeper会话会先过期,使得租约可以比原来更快地失效;站在整个故障恢复的角度上看,发生单节点网络故障时,旧租约一旦更快地失效,新的租约则可以更快地分配出去,加快了故障恢复的流程。
[0050] 需要说明的是,在存储服务模块启动后,存储服务模块与Zookeeper服务器尝试建立Zookeeper会话;如果失败则会等待一段时间后重试,直至成功;当存储服务模块建立了Zookeeper会话后,尝试与元数据模块建立租约。如果失败则会等待一段时间后重试,直至成功;
[0051] 步骤S20:实时监控Zookeeper领导者所在的服务器节点运行状态,若Zookeeper领导者所在的服务器节点故障宕机,则在Zookeeper服务器集群选择一个Zookeeper服务器作为整个分布式块存储系统的新的Zookeeper服务器领导者;
[0052] 所述新的Zookeeper服务器领导者分别与所有存储服务模块建立Zookeeper会话,控制所述存储服务模块与对应的元数据服务模块建立租约,并将所述租约保存至对应的Zookeeper服务器中;在元数据服务模块集群中选举新的元数据服务领导者;
[0053] 需要说明的是,在出现宕机或者网络中断情况时,通常来说系统中Zookeeper会话超时过期时间参数会比租约超时过期时间参数要更短,因此Zookeeper会话会先过期,使得租约可以比原来更快地失效;站在整个故障恢复的角度上看,发生单节点网络故障时,旧租约一旦更快地失效,新的租约则可以更快地分配出去,加快了故障恢复的流程,在Zookeeper服务器领导者发生故障时,便需要在第一时间重新选举新的Zookeeper服务器领导者,并选举新的元数据服务领导者,由新的元数据服务领导者删除旧的租约并提供数据服务。
[0054] 步骤S30:所述新的元数据服务领导者获取所述Zookeeper会话,实时检测Zookeeper会话是否存在,若所述Zookeeper会话不存在,则删除对应的存储服务模块的旧租约,并控制新的元数据服务领导者开始提供数据服务。
[0055] 需要说明的是,元数据服务领导者选举后,新的领导者需要等待所有旧租约过期或者续约成功后,开始提供服务。这避免因为网络故障而出现数据访问的正确性问题,即同一时间对同一数据块出现多个租约;新的元数据服务领导者在选举成功后,会获取所有的Zookeeper会话并提供数据服务,实时检测Zookeeper会话是否存在,若Zookeeper会话存在,则元数据服务领导者与存储服务模块之间的租约正常,进一步地说明当前分布式块存储系统运行正常;若Zookeeper会话不存在,则说明出现网络终端或节点宕机状况,元数据服务领导者与存储服务模块之间的租约无法延续(或称无法对租约进行续租),则需要将旧的租约进行删除,并控制新的元数据服务领导者提供数据服务。
[0056] 故障存储节点的租约因为网络故障而无法续约,此处元数据服务领导者等待租约过期的耗时较长,而其他节点的租约都能被成功地续上,因此需要重新建立租约,保障存储服务正常运行。
[0057] 综上所述,本发明实例提出的面向制造业的缩短故障恢复时间方法,在分布式块存储系统初始化工作时,通过Zookeeper服务器在Zookeeper服务器集群中相互投票选举出Zookeeper服务器领导者,控制存储服务模块与所述Zookeeper服务领器导者建立Zookeeper会话后,控制存储服务模块与所述元数据服务模块在Zookeeper服务器中建立租约后,控制元数据服务模块在Zookeeper服务器中进行注册并记录注册时间,确定注册时间最早的元数据服务模块为元数据服务领导者;通过元数据服务领导者进行提供数据服务;
[0058] 实时识别各个组件之间的网络状况,在确定Zookeeper领导者所在节点宕机故障发生时,重新选举Zookeeper服务器领导者,并选举出新的元数据服务领导者,元数据服务领导者检查Zookeeper会话,若所述Zookeeper会话不存在,则删除Zookeeper服务器上存储服务模块与元数据服务模块的旧租约,并控制新的元数据服务领导者提供数据服务;以上述操作达到缩短故障恢复总时间的技术效果。
[0059] 最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;本领域的普通技术人员可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。