一种分布式存储集群及其节点故障切换方法和装置与流程

文档序号:16007082发布日期:2018-11-20 20:11阅读:375来源:国知局

本发明涉及分布式集群高可用技术领域,特别是涉及一种分布式存储集群节点断电切换方法及其装置。本发明还涉及一种分布式存储集群。



背景技术:

分布式存储集群是由多个存储节点服务器构成的集群,支持一份数据存储在多个节点上,每个节点通过节点间通信都可以获取到完整的数据,当节点出现宕机时根据配置的策略可以进行完整数据的恢复,分布式存储集群内包括监控模块、存储池模块、元数据管理模块等服务模块。

分布式存储集群在运行过程中部分节点有可能发生电源线松动或电源线被拔掉等故障使节点断电,此时如果断电节点个数在集群允许断电节点数范围内(即集群节点冗余数),分布式存储集群恢复正常并继续提供业务的正常访问需要分钟级的时间,原因是由于目前分布式存储集群是由各个服务模块通过心跳检测确认各个节点是否断电的,而服务模块的心跳检测精度是分钟级的,即60s以上(因为低于60s会导致集群出现震荡),因此,目前需要通过60s以上的时间来确认是否出现节点断电,进而进行集群恢复以及断电节点的业务恢复等。

由此可见,在目前的节点断电检测恢复过程中,集群无法快速检测到断电故障,进而无法无法快速地进行集群恢复以及恢复断电节点上的业务访问,导致业务中断时间长,集群可靠性差。

因此,如何提供一种可靠性高的分布式存储集群节点断电切换方法及其装置以及一种分布式存储集群是本领域技术人员目前需要解决的问题。



技术实现要素:

本发明的目的是提供一种分布式存储集群节点断电切换方法及其装置,将断电节点的检测恢复过程时间由原本的分钟级缩短为秒级,加快集群恢复正常以及断电节点的业务恢复访问的速度,提高集群的可靠性;本发明的另一目的是提供一种基于上述方法的分布式存储集群。

为解决上述技术问题,本发明提供了一种分布式存储集群节点断电切换方法,应用于所述分布式存储集群的主节点,所述方法包括:

依据CTDB轻量级集群数据库的心跳检测方式检测集群内的各个节点的状态;

检测到有节点断电后,获取断电节点的业务信息;

将所述业务信息发送至所述分布式存储集群中具有相应服务功能的正常节点内,供接收所述业务信息的各个正常节点依据所述业务信息进行业务漂移以及业务恢复。

优选地,检测到有节点断电后,获取断电节点的业务信息之前,还包括:

判断所述断电节点是否是通过心跳检测得到的,若是,则获取所述断电节点的业务信息。

优选地,所述业务信息包括虚拟IP。

优选地,所述业务信息还包括业务缓存数据。

优选地,所述将所述业务信息发送至所述分布式存储集群中具有相应服务功能的正常节点内的过程具体为:

调用所述分布式存储集群内的故障切换程序;

选择包含各个服务功能的正常节点;

将所述业务信息发送至所选择的节点内。

优选地,所述服务功能包括监控功能、存储池功能和元数据管理功能。

优选地,所述依据CTDB心跳检测方式检测节点状态的过程具体为:

每个心跳检测周期内发出若干个心跳包至所述分布式存储集群内的各个节点;

判断预设时间内是否接收到全部节点返回的响应,若存在未返回响应的节点,则所述未返回响应的节点为断电节点。

为解决上述技术问题,本发明还提供了一种分布式存储集群节点断电切换装置,应用于所述分布式存储集群的主节点,所述装置包括:

状态监测模块,用于依据CTDB的心跳检测方式检测集群内的各个节点的状态;

信息获取模块,用于检测到有节点断电后,获取断电节点的业务信息;

发送模块,用于将所述业务信息发送至所述分布式存储集群中具有相应服务功能的正常节点内,供接收所述业务信息的各个正常节点依据所述业务信息进行业务漂移以及业务恢复。

为解决上述技术问题,本发明还提供了一种分布式存储集群,包括多个设置有CTDB功能的节点,多个所述节点中选举出一个节点作为主节点;所述主节点包括:

存储器,用于存储计算机程序;

处理器,用于执行所述计算机程序时实现如以上任一项所述的分布式存储集群节点断电切换方法的步骤。

优选地,所述除所述主节点以外的节点,具体用于:

并行进行自身业务恢复操作以及依据所述业务信息进行业务漂移操作。

本发明提供了一种分布式存储集群节点断电切换方法及其装置,利用CTDB的心跳检测来检测集群内是否存在断电节点,之后若检测到断电节点,则获取断电节点的业务信息,并发送至具有相应服务功能(或者可理解为具有相应服务模块)的正常节点上,供接收这些业务信息的正常节点进行业务漂移,恢复断电节点上的业务访问。可以理解的是,由于CTDB的心跳检测时间精度为秒级,即通常为几秒,因此,CTDB的心跳检测能够快速的检测到是否存在节点断电,并将断电节点的业务信息发送至正常节点内,从而使得正常节点能够及时进行数据恢复和业务漂移,即本发明将断电节点的检测恢复过程时间由原本的分钟级缩短为秒级,加快了集群恢复正常以及断电节点的业务恢复访问的速度,从而尽可能减短了业务的终端时间,提高了集群的可靠性。本发明还提供了一种基于上述方法的分布式存储集群,也具有上述优点。

附图说明

为了更清楚地说明本发明实施例中的技术方案,下面将对现有技术和实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1为本发明提供的一种分布式存储集群节点断电切换方法的过程的流程图;

图2为本发明提供的一种分布式存储集群节点断电切换装置的结构示意图。

具体实施方式

本发明的核心是提供一种分布式存储集群节点断电切换方法及其装置,将断电节点的检测恢复过程时间由原本的分钟级缩短为秒级,加快集群恢复正常以及断电节点的业务恢复访问的速度,提高集群的可靠性;本发明的另一核心是提供一种基于上述方法的分布式存储集群。

为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

本发明提供了一种分布式存储集群节点断电切换方法,应用于分布式存储集群的主节点,参见图1所示,图1为本发明提供的一种分布式存储集群节点断电切换方法的过程的流程图;该方法包括:

步骤s1:依据CTDB的心跳检测方式检测集群内的各个节点的状态;

可以理解的是,CTDB(clustered trivial database,轻量级集群数据库)是一种集群高可用管理软件,用于监控集群节点状态和业务分配。具有CTDB功能的分布式存储集群,通常会在每个集群节点内均安装CTDB软件,使得每个节点均能够依据CTDB进行心跳检测,不同节点之间的检测结果会进行交互。具有CTDB功能的分布式存储集群中所有节点会选举出一个主节点,此时,故障恢复操作(如虚拟IP的分配等)仅由主节点进行。

目前的分布式存储集群中,CTDB具有心跳检测的功能,检测的时间精度也为秒级,但是CTDB的检测结果并未应用于节点断电后的集群及业务恢复上,现有技术中集群及断电节点业务的恢复操作是否进行,是依据节点内的服务模块的检测结果进行的,时间精度级别为分钟级,时间长,效率低,即CTDB的心跳检测与断电节点的业务恢复在现有技术为两套互不相关的流程。而本发明中,将CTDB的心跳检测与断电节点的业务恢复联系在一起,依据CTDB的心跳检测结果来控制进行后续的集群及断电节点业务的恢复操作,将集群及断电节点业务的恢复操作的时间缩短为了秒级,提高了集群恢复的效率和可靠性。步骤s2:检测到断电节点后,获取断电节点的业务信息;

在有节点断电后,该断电节点上的业务肯定会被中断,为了尽快恢复该业务的正常访问,需要将该业务漂移(或者说切换)至其他正常的节点上运行,因此,需要确定断电节点上运行的业务的信息,方便选择合适的节点以及进行业务的漂移。由于断电节点此时已经断电,因此,通常获取断电节点的业务信息是从主节点上的获取的,这是因为主节点负责业务的分配,因此,主节点上保存有各个节点内运行的业务的相关信息。

步骤s3:将业务信息发送至分布式存储集群中具有相应服务功能的正常节点内,供接收业务信息的各个正常节点依据业务信息进行业务漂移以及业务恢复。

可以理解的是,分布式存储集群内包含有多个节点,这些节点之间相互关联,共同完成业务的处理,因此,不同的节点可能具有不同的功能,即不同节点上可能包括相同的服务模块也可能包括不同的服务模块。在进行业务漂移时,为了保证业务后续能够正常运行,需要首先确定该业务运行时所需要的各项服务功能,进而选择将业务信息分发至具有这些服务功能的正常节点,将断电节点的业务漂移至这些正常节点上,后续这些正常节点恢复正常后,即可根据业务信息共同完成业务的访问执行。

另外,业务恢复也可以理解为是节点恢复,由于分布式存储集群内各个节点之间相互关联,因此,一旦一个节点出现故障断电后,其他节点也会受到影响,而无法正常工作,此时,想要令断电节点的业务在其他节点运行,不仅需要将业务漂移至其他节点上,还需要调整这些节点的配置,使其恢复至正常工作状态;并且,若待漂移的业务存在特殊需求的话,在对这些节点进行恢复操作时,还需要调整其配置数据,使其能够支持漂移过来的业务的运行。

其中,由于业务运行需要首先完成业务漂移和业务恢复,因此,业务成功切换至其他节点的时间以业务漂移和业务恢复均完成的时刻为准。其中,若业务漂移和业务恢复为串行进行的话,则业务切换时间等于两者时间的总和,若两者为并行进行的话,则业务切换时间以两者中时间较长的为准,相比串行操作,并行操作时间更短,当然,串行操作和并行操作均在本发明的保护范围之内。

通过实验可知,通过上述操作,断电故障检测通常可控在10秒以内,业务漂移和节点业务恢复耗时基本分别在10秒左右,从而业务切换整体完成的时间控制在30秒以内,相比目前分钟级的业务切换,业务恢复时间更短,提高了集群的可靠性和稳定性。

其中,服务功能包括监控功能、存储池功能和元数据管理功能。

可以理解的是,集群想要正常运行,存储和元数据管理功能是必不可少的,而为了及时发现业务运行中存在的问题,也需要设置监控功能来监控业务的运行情况。当然,分布式存储集群内还可以包含其他的服务功能,本发明对此不作限定。

在优选实施例中,检测到断电节点后,获取断电节点的业务信息之前,还包括:

判断断电节点是否是通过心跳检测得到的,若是,则获取断电节点的业务信息。

可以理解的是,虽然本发明采用CTDB的心跳检测来检测是否有节点断电,但是,最终得到的断电节点可能并不是由心跳检测来得到的,因为,CTDB在执行stop或restart命令时,也会判定自身所处的节点为断电节点,此时,显然是错误的,因此为了区分这种情况,在获取断电节点的业务信息之前,需要首先分辨该断电节点是否是通过心跳检测得到的,因为只有通过心跳检测功能检测到的故障节点才是断电节点,否则不处理。具体的实现方式,是在心跳检测出的断电节点标识中增设标志位,之后通过判断检测到的节点是否包含标志位即可进行分辨。当然,以上仅为其中一种实现方式,也可通过其他方式判断是否为断电节点,本发明对此不作限定。

在一个具体实施例中,业务信息包括虚拟IP。

可以理解的是,对于分布式存储集群来说,虚拟IP是与业务一一对应的,CTDB主节点负责虚拟IP的分配。当某个集群节点发生故障时,为了保证该节点上业务的正常访问,则会将分配在该节点的虚拟IP漂移到其他节点,之后该节点的业务也会随着虚拟IP相应的漂移到其他节点,从而保证集群的高可用性。

当然,对于大多数分布式存储集群,业务的漂移仅需要虚拟IP即可,但是部分情况下,业务漂移也可能依据其他参量实现,本发明对此不作限定。

另外,业务信息还包括业务缓存数据。对于部分情况下,业务的继续访问可能需要之前的数据,此时仅依据虚拟IP可能无法完成业务的继续访问,因此,业务信息内需要包括业务缓存数据。当然,业务信息还可能包含断电节点的主机号等,业务信息的具体内容本发明不作限定。

在一种具体实施例中,将业务信息发送至分布式存储集群中具有相应服务功能的正常节点内的过程具体为:

调用分布式存储集群内的故障切换程序;

选择包含各个服务功能的正常节点;

将业务信息发送至所选择的节点内。

可以理解的是,目前的分布式存储集群中,通常在每个节点内均设置有一个故障切换程序,只要有一个节点调用自身的该程序后,由于集群内各个节点之间存在数据交互,其他节点中的该程序也会运行,进而进行业务切换操作,因此主节点获取业务信息后,直接调用自身的故障切换程序,其他节点内的程序也会被启动,进而准备进行业务切换,该程序具有节点选择的功能,主节点调用该程序后,程序本身会选择出合适的节点,进而由主节点将业务信息发送至选择的节点内,由于选择的节点中的故障切换程序已经被启动,故只要节点接收到业务信息后即可开始进行业务切换(业务漂移和业务恢复等)。

当然,若集群内并未设置有具有上述功能的故障切换程序的话,则可由主节点自行分析集群内各个节点的设置情况,进而选择相应的节点。具体采用哪种方式选择接收业务信息的节点,本发明不作限定。

其中,依据CTDB心跳检测方式检测节点状态的过程具体为:

每个心跳检测周期内发出若干个心跳包至分布式存储集群内的各个节点;

判断预设时间内是否接收到全部节点返回的响应,若存在未返回响应的节点,则未返回响应的节点为断电节点。

这里的预设时间一般与心跳检测周期对应,不过由于信号的收发需要时间,故心跳检测周期优选略长与心跳检测周期,当然,本发明不限定预设时间的具体定义。

例如,假设每个心跳检测周期为4秒(两个心跳周期的时间间隔本发明不作限定),每2秒发一次心跳包,一共发2次,如果对方节点在4秒内没有收到该心跳包就认为该节点故障;或者心跳检测周期也可以为8秒,即2秒发一次心跳包,发4次,这样是为了避免心跳太小造成故障误判。当然,本发明不限定心跳检测周期的长度和心跳包的发送频率。

本发明提供了一种分布式存储集群节点断电切换方法,利用CTDB的心跳检测来检测集群内是否存在断电节点,之后若检测到断电节点,则获取断电节点的业务信息,并发送至具有相应服务功能(或者可理解为具有相应服务模块)的正常节点上,供接收这些业务信息的正常节点进行业务漂移,恢复断电节点上的业务访问。可以理解的是,由于CTDB的心跳检测时间精度为秒级,即通常为几秒,因此,CTDB的心跳检测能够快速的检测到是否存在节点断电,并将断电节点的业务信息发送至正常节点内,从而使得正常节点能够及时进行数据恢复和业务漂移,即本发明将断电节点的检测恢复过程时间由原本的分钟级缩短为秒级,加快了集群恢复正常以及断电节点的业务恢复访问的速度,从而尽可能减短了业务的终端时间,提高了集群的可靠性。

本发明还提供了一种分布式存储集群节点断电切换装置,应用于分布式存储集群的主节点,参见图2所示,图2为本发明提供的一种分布式存储集群节点断电切换装置的结构示意图。

该装置包括:

状态监测模块1,用于依据CTDB的心跳检测方式检测集群内的各个节点的状态;

信息获取模块2,用于检测到断电节点后,获取断电节点的业务信息;

发送模块3,用于将业务信息发送至分布式存储集群中具有相应服务功能的正常节点内,供接收业务信息的各个正常节点依据业务信息进行业务漂移以及业务恢复。

本发明还提供了一种分布式存储集群,包括多个设置有CTDB功能的节点,多个节点中选举出一个节点作为主节点;主节点包括:

存储器,用于存储计算机程序;

处理器,用于执行计算机程序时实现如以上任一项的分布式存储集群节点断电切换方法的步骤。

在优选实施例中,除主节点以外的节点,具体用于:

并行进行自身业务恢复操作以及依据业务信息进行业务漂移操作。

可以理解的是,由于业务恢复操作和业务漂移操作两者并不干扰,因此相比串行操作,并行操作能够尽可能缩短业务切换的时间。

以上的几种具体实施方式仅是本发明的优选实施方式,以上几种具体实施例可以任意组合,组合后得到的实施例也在本发明的保护范围之内。应当指出,对于本技术领域的普通技术人员来说,相关专业技术人员在不脱离本发明精神和构思前提下推演出的其他改进和变化,均应包含在本发明的保护范围之内。

本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。

还需要说明的是,在本说明书中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。

对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其他实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。

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