一种故障节点隔离方法及装置与流程

文档序号:25543637发布日期:2021-06-18 20:40
一种故障节点隔离方法及装置与流程

本申请涉及分布式存储技术领域,特别涉及一种故障节点隔离方法及装置。



背景技术:

分布式存储系统是建立在网络之上的存储系统,分布式存储系统将数据分布在不同的节点上,节点间通过网络进行通信,如果其中某一个节点存在网络问题或者硬件故障,则其他正常节点无法和该问题节点进行正常通信,如果不及时将该有问题节点从系统中隔离,会影响整个分布式存储系统的业务。

为了避免部分节点故障影响整个分布式存储系统的业务,节点间会进行周期性检测,并将故障节点上报监控节点,之后监控节点根据上报的故障节点信息将故障节点从系统中隔离,从而保障系统业务的稳定性。

具体地,为了保证节点间可以正常通信,分布式存储系统节点间会进行周期性心跳检测,判断其他节点网络是否正常,如果某一节点(假设为a节点)发现无法和另外一节点(假设为b)正常通信,则a认为b节点故障并上报给监控节点;如果在一个周期内,某一个节点被其他节点报故障的次数达到隔离阈值,则监控节点认为该节点故障,并将该节点从系统中隔离,避免影响业务。隔离阈值不能设置的太高,避免故障节点无法及时隔离,同时不能设置太低,避免正常节点被误隔离出系统。通常分布式存储系统采用的隔离阈值threshold为:

threshold=(n+1)/2

其中,n为分布式系统的节点数,如果总共有3个节点,则隔离阈值为2。

然而,采用上述方法,当某一节点存在异常,无法与其他一些节点正常通信,但在心跳检测过程中被其他节点报故障的次数未达到隔离阈值的情况,这样就无法对该节点进行隔离,最终影响整个分布式存储系统的情况。



技术实现要素:

本申请提供了一种故障节点隔离方法及装置,用以解决现有技术中存在的无法及时隔离故障节点的问题。

第一方面,本申请提供了一种故障节点隔离方法,应用于监控节点,所述方法包括:

接收第一节点上报的第二节点故障的目标信息

统计预设历史时长内上报所述第二节点故障的节点数量;

若所述节点数量小于隔离阈值,且故障记录表中不存在所述第一节点上报的第二节点故障的记录,则将所述目标信息添加至所述故障记录表中;

判断连续m个心跳检测周期内是否均接收到所述第一节点上报的所述第二节点故障的信息,若判定连续m个心跳检测周期内均接收到所述第一节点上报的所述第二节点故障的信息,则隔离所述第一节点和/或所述第二节点。

可选地,所述方法还包括:

若所述故障记录表中已存在所述第一节点上报的第二节点故障的记录,则丢弃所述目标信息。

可选地,所述方法还包括:

将所述目标信息添加至所述故障记录表后,若判定连续m个心跳检测周期内有至少一个心跳检测周期未接收到所述第一节点上报的所述第二节点故障的信息,则删除所述故障记录表中记录的所述第一节点上报的第二节点故障的记录。

可选地,

一个节点上报的故障信息至少包括:上报故障的源节点信息,被上报故障的目标节点信息和上报故障时间信息。

可选地,隔离所述第一节点和/或所述第二节点的步骤包括:

将所述目标信息添加至所述故障记录表后,统计连续n个检测周期内所述第一节点被其他节点上报故障的第一次数和所述第二节点被其他节点上报故障的第二次数;

若所述第一次数大于设定值,则隔离所述第一节点,并删除所述故障记录表中与所述第一节点相关联的记录,若所述第二次数大于所述设定值,则隔离所述第二节点,并删除所述故障记录表中与所述第二节点相关联的记录;或者,

若所述第一次数大于第二次数,则隔离所述第一节点,并删除所述故障记录表中与所述第一节点相关联的记录,若所述第二次数大于所述第一次数,则隔离所述第二节点,并删除所述故障记录表中与所述第二节点相关联的记录。

第二方面,本申请提供了一种故障节点隔离装置,应用于监控节点,所述装置包括:

接收单元,用于接收第一节点上报的第二节点故障的目标信息

统计单元,用于统计预设历史时长内上报所述第二节点故障的节点数量;

添加单元,若所述节点数量小于隔离阈值,且故障记录表中不存在所述第一节点上报的第二节点故障的记录,则所述添加单元将所述目标信息添加至所述故障记录表中;

判断单元,用于判断连续m个心跳检测周期内是否均接收到所述第一节点上报的所述第二节点故障的信息;

隔离单元,若所述判断单元判定连续m个心跳检测周期内均接收到所述第一节点上报的所述第二节点故障的信息,则所述隔离单元隔离所述第一节点和/或所述第二节点。

可选地,所述装置还包括丢弃单元:

若所述故障记录表中已存在所述第一节点上报的第二节点故障的记录,则所述丢弃单元丢弃所述目标信息。

可选地,所述装置还包括删除单元,

所述添加单元将所述目标信息添加至所述故障记录表后,若所述判断单元判定连续m个心跳检测周期内有至少一个心跳检测周期未接收到所述第一节点上报的所述第二节点故障的信息,则所述删除单元删除所述故障记录表中记录的所述第一节点上报的第二节点故障的记录。

可选地,

一个节点上报的故障信息至少包括:上报故障的源节点信息,被上报故障的目标节点信息和上报故障时间信息。

可选地,隔离所述第一节点和/或所述第二节点时,所述隔离单元具体用于:

将所述目标信息添加至所述故障记录表后,统计连续n个检测周期内所述第一节点被其他节点上报故障的第一次数和所述第二节点被其他节点上报故障的第二次数;

若所述第一次数大于设定值,则隔离所述第一节点,并删除所述故障记录表中与所述第一节点相关联的记录,若所述第二次数大于所述设定值,则隔离所述第二节点,并删除所述故障记录表中与所述第二节点相关联的记录;或者,

若所述第一次数大于第二次数,则隔离所述第一节点,并删除所述故障记录表中与所述第一节点相关联的记录,若所述第二次数大于所述第一次数,则隔离所述第二节点,并删除所述故障记录表中与所述第二节点相关联的记录。

第三方面,本申请实施例提供一种故障节点隔离装置,该装置包括:

存储器,用于存储程序指令;

处理器,用于调用所述存储器中存储的程序指令,按照获得的程序指令执行如上述第一方面中任一项所述的方法的步骤。

第四方面,本申请实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机可执行指令,所述计算机可执行指令用于使所述计算机执行如上述第一方面中任一项所述方法的步骤。

综上可知,本申请实施例提供的故障节点隔离方法,应用于监控节点,所述方法包括:接收第一节点上报的第二节点故障的目标信息;统计预设历史时长内上报所述第二节点故障的节点数量;若所述节点数量小于隔离阈值,且故障记录表中不存在所述第一节点上报的第二节点故障的记录,则将所述目标信息添加至所述故障记录表中;判断连续m个心跳检测周期内是否均接收到所述第一节点上报的所述第二节点故障的信息,若判定连续m个心跳检测周期内均接收到所述第一节点上报的所述第二节点故障的信息,则隔离所述第一节点和/或所述第二节点。

采用本申请实施例提供的故障节点隔离方法,当某节点被报故障次数未达到隔离阈值时,继续判断该节点在后续若干心跳检测周期是否均收到同一节点上报该节点故障的消息,以进一步地判断该节点是否发生故障,以确定是否需要隔离该节点,从而确定是否需要隔离相关节点,这样,就可以提前隔离出被报故障次数未达到隔离阈值的故障节点,提升整个分布式存储系统的业务性能,提升用户体验度。

附图说明

为了更加清楚地说明本申请实施例或者现有技术中的技术方案,下面将对本申请实施例或者现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请中记载的一些实施例,对于本领域普通技术人员来讲,还可以根据本申请实施例的这些附图获得其他的附图。

图1为本申请实施例提供的一种故障节点隔离方法的详细流程图;

图2为本申请实施例提供的一种节点被报故障时处理流程的详细流程图;

图3为本申请实施例提供的一种隔离机制启动示意图;

图4为本申请实施例提供的一种不启动隔离机制的示意图;

图5为本申请实施例提供的一种故障节点隔离装置的结构示意图;

图6为本申请实施例提供的另一种故障节点隔离装置的结构示意图。

具体实施方式

在本申请实施例使用的术语仅仅是出于描述特定实施例的目的,而非限制本申请。本申请和权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其它含义。还应当理解,本文中使用的术语“和/或”是指包含一个或多个相关联的列出项目的任何或所有可能组合。

应当理解,尽管在本申请实施例可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本申请范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,此外,所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。

示例性的,参阅图1所示,为本申请实施例提供的一种故障节点隔离方法的详细流程图,该方法应用于监控节点,该方法包括以下步骤:

步骤100:接收第一节点上报的第二节点故障的目标信息。

实际应用中,分布式存储系统包括多个节点和监控节点,各节点间周期性进行心跳检测,以判断是否可以正常通信,若第一节点(如,节点1)与第二节点(如,节点2)之间的心跳断开,则节点1会向监控节点上报节点2故障的消息,同时,节点2会向监控节点上报节点1故障的消息。

本申请实施例中,仅以节点1向监控节点上报节点2故障的消息为例进行后续故障节点隔离方法的处理流程的说明。

步骤110:统计预设历史时长内上报上述第二节点故障的节点数量。

本申请实施例中,监控节点维护有各节点被其他节点上报的故障信息的记录,那么,监控节点在接收到第一节点上报的第二节点故障的目标消息后,统计在预设历史时长内其他节点上报第二节点故障的节点的数量。

例如,假设预设历史时长为1分钟,在过去1分钟内,监控节点确定有节点1,节点3,节点5上报节点2故障,那么,监控节点就确定在过去1分钟内上报节点2故障的节点数量为3。

步骤120:若上述节点数量小于隔离阈值,且故障记录表中不存在上述第一节点上报的第二节点故障的记录,则将上述目标信息添加至上述故障记录表中。

进一步地,本申请实施例中,若所述故障记录表中已存在所述第一节点上报的第二节点故障的记录,则丢弃所述目标信息。

其中,一个节点上报的故障信息至少包括:上报故障的源节点信息,被上报故障的目标节点信息和上报故障时间信息。

本申请实施例中,监控节点增加有一个故障记录表,该故障记录表可以为链表或者队列等,依赖于具体实现,本申请实施例中,在此不做具体限定。该故障记录表中记录被报故障节点数量未达到隔离阈值时对应链路的信息。每个链路信息的组成结构为:{source,destination,report_time},分别为{源节点,目标节点,上报故障时间},当然,链路信息在实现时可以根据具体需求携带其他信息。

那么,本申请实施例中,若预设历史时长内上报上述第二节点故障的节点数量小于隔离阈值,则判断故障记录表中是否记录有第一节点上报的第二节点故障的记录,若有,则丢弃该目标信息,退出流程;若没有,则将该目标信息记录至故障记录表中。

当然,若预设历史时长内上报上述第二节点故障的节点数量大于或等于隔离阈值,则可以直接隔离第二节点,进一步地,更新故障记录表,将故障记录表中与第二节点相关联的记录均删除,也就是说,删除源节点为第二节点的记录,并删除目标节点为第二节点的记录。

例如,示例性的,参阅图2所示,为本申请实施例提供的一种节点被报故障时处理流程的详细流程图。假设部分节点上报节点j故障,报节点j故障的上报节点集合为s={s1,s2,……,sk},根据接收到s集合中各节点上报节点j故障的消息的先后顺序,依次处理s集合中每个上报节点si,1=<i<k,即i=1时执行一次以下步骤,i=2时,执行一次以下步骤,……。判断节点j被报故障数(节点数)是否达到故障阈值,若是,则直接隔离节点j,并更新故障记录表,删除节点j相关的记录信息;否则,判断故障记录表中是否已存在源节点为si目标节点为节点j的记录,若存在,则流程结束;否则,将记录{si,j,ti}添加至故障记录表中,并执行后续判断操作。

步骤130:判断连续m个心跳检测周期内是否均接收到上述第一节点上报的上述第二节点故障的信息,若判定连续m个心跳检测周期内均接收到上述第一节点上报的上述第二节点故障的信息,则隔离上述第一节点和/或上述第二节点。

本申请实施例中,规定故障记录表中每个记录存在于故障记录表的最长时间为t,t的取值为:

t=m·t0

其中,m为大于等于1的整数,该值可根据实际系统的情况进行配置,t0为分布式存储系统节点间的心跳检测周期。

示例性的,参阅图3所示,为本申请实施例提供的一种隔离机制启动示意图;以故障记录表中的第i个记录li,m等于3为例来说明故障记录表中相关节点的隔离机制,假设li中的详细信息为{i,j,t},如果在li记录被加入故障记录表之后的连续m个心跳检测周期内,节点j都被节点i上报故障,则需要启动隔离机制,选择节点i或者节点j进行隔离。隔离其中一个节点的目的是避免这两个节点之间再进行业务通信,从而避免影响整个系统的业务。

进一步地,本申请实施例中,将所述目标信息添加至所述故障记录表后,若判定连续m个心跳检测周期内有至少一个心跳检测周期未接收到所述第一节点上报的所述第二节点故障的信息,则删除所述故障记录表中记录的所述第一节点上报的第二节点故障的记录。

也就是说,在之后连续m个心跳检测周期内,存在心跳检测正常的周期,此时,未满足隔离条件,不隔离第二节点。

示例性的,参阅图4所示,为本申请实施例提供的一种不启动隔离机制的示意图,在记录li被加入故障记录表中之后的第k个周期内(1≤k≤m),节点j没有被节点i报故障,则从故障记录表中删除li记录,此时不启动隔离机制。节点j没有被节点i报故障可能存在两种情况,第一种情况:节点i已可以和节点j正常通信;另外也可能是节点i已故障,此时节点i会被其他节点报故障进行隔离。

本申请实施例中,在隔离上述第一节点和/或上述第二节点时,一种较佳地实现方式为,将所述目标信息添加至所述故障记录表后,统计连续n个检测周期内所述第一节点被其他节点上报故障的第一次数和所述第二节点被其他节点上报故障的第二次数;若所述第一次数大于设定值,则隔离所述第一节点,并删除所述故障记录表中与所述第一节点相关联的记录,若所述第二次数大于所述设定值,则隔离所述第二节点,并删除所述故障记录表中与所述第二节点相关联的记录。

也就是说,若一个节点在连续n个周期内被其他节点上报故障的次数较高,则该一个节点故障的概率也就较大,则可以启动隔离机制,隔离该一个节点。n为大于等于1的正整数。

本申请实施例中,在隔离上述第一节点和/或上述第二节点时,另一种较佳地实现方式为,将所述目标信息添加至所述故障记录表后,统计连续n个检测周期内所述第一节点被其他节点上报故障的第一次数和所述第二节点被其他节点上报故障的第二次数;若所述第一次数大于第二次数,则隔离所述第一节点,并删除所述故障记录表中与所述第一节点相关联的记录,若所述第二次数大于所述第一次数,则隔离所述第二节点,并删除所述故障记录表中与所述第二节点相关联的记录。

也就是说,当第一节点上报第二节点故障时,并不一定意味着第二节点故障,也可能第一节点本身存在异常无法和第二节点正常通信,那么,在选择隔离节点时,计算第一节点和第二节点在连续n个检测周期内被其他节点上报故障的次数,将次数大的节点进行隔离。

进一步地,还可以计算连续n个检测周期内第一节点和第二节点的平均被报故障次数,将平均被报故障次数大的节点隔离。

例如,li记录被加入故障记录表之后的连续m个心跳检测周期内,节点j都被节点i上报故障,此时需启动新隔离机制,选择节点i或者节点j进行隔离,避免这两个节点继续进行业务通信进而影响整个分布式系统。

实际应用中,节点i上报节点j故障,并不一定意味着节点j故障,也有可能节点i本身存在异常无法和节点j正常通信。在本申请实施例中,选择哪个节点进行隔离由整个分布式存储系统节点间互相心跳检测的统计结果决定,例如对于记录{i,j,t},从该记录信息被加入故障记录表的周期开始统计m+1个心跳检测周期内节点i和节点j的平均被报故障数,分别用pi和pj表示,节点i的平均故障数可以通过以下方法得到:

其中,fk为第k个心跳检测周期内节点i被其他节点报故障的个数,m为记录{i,j,t}被加入故障记录表之后该记录在故障记录表中存在的最长周期数;

同理,节点j的平均故障数可以通过以下方法得到:

其中,fk为第k个心跳检测周期内节点j被其他节点报故障的个数,m为记录{i,j,t}被加入故障记录表之后该记录在故障记录表中存在的最长周期数。

计算出pi和pj之后,如果pj大于等于pi,则选择节点j进行隔离,否则选择隔离节点i。计算出pi和pj之后,根据值选择隔离节点,之后更新故障记录表,删除故障记录表中源节点或目标节点为隔离节点的所有记录信息。

需要说明的事,在本申请实施例中,在选择节点进行隔离时,为了判断的更加精确,选择判断的依据是节点在多个心跳检测周期的平均被报故障次数,该次数越高,则选择隔离该节点的概率越高。也可以选择以其中某一个周期的报故障次数作为参考,比如以第一次、第m+1次等的上报故障数作为判断的依据,或者使用多个周期的上报故障数最大值作为判断的依据,本申请实施例中,在此不做具体限定。

基于与上述发明实施例同样的发明构思,示例性的,参阅图5所示,为本申请实施例提供的一种故障节点隔离装置的结构示意图,该装置应用于监控节点,所述装置包括:

接收单元50,用于接收第一节点上报的第二节点故障的目标信息;

统计单元51,用于统计预设历史时长内上报所述第二节点故障的节点数量;

添加单元52,若所述节点数量小于隔离阈值,且故障记录表中不存在所述第一节点上报的第二节点故障的记录,则所述添加单元将所述目标信息添加至所述故障记录表中;

判断单元53,用于判断连续m个心跳检测周期内是否均接收到所述第一节点上报的所述第二节点故障的信息;

隔离单元54,若所述判断单元判定连续m个心跳检测周期内均接收到所述第一节点上报的所述第二节点故障的信息,则所述隔离单元隔离所述第一节点和/或所述第二节点。

可选地,所述装置还包括丢弃单元:

若所述故障记录表中已存在所述第一节点上报的第二节点故障的记录,则所述丢弃单元丢弃所述目标信息。

可选地,所述装置还包括删除单元,

所述添加单元52将所述目标信息添加至所述故障记录表后,若所述判断单元53判定连续m个心跳检测周期内有至少一个心跳检测周期未接收到所述第一节点上报的所述第二节点故障的信息,则所述删除单元删除所述故障记录表中记录的所述第一节点上报的第二节点故障的记录。

可选地,

一个节点上报的故障信息至少包括:上报故障的源节点信息,被上报故障的目标节点信息和上报故障时间信息。

可选地,隔离所述第一节点和/或所述第二节点时,所述隔离单元54具体用于:

将所述目标信息添加至所述故障记录表后,统计连续n个检测周期内所述第一节点被其他节点上报故障的第一次数和所述第二节点被其他节点上报故障的第二次数;

若所述第一次数大于设定值,则隔离所述第一节点,并删除所述故障记录表中与所述第一节点相关联的记录,若所述第二次数大于所述设定值,则隔离所述第二节点,并删除所述故障记录表中与所述第二节点相关联的记录;或者,

若所述第一次数大于第二次数,则隔离所述第一节点,并删除所述故障记录表中与所述第一节点相关联的记录,若所述第二次数大于所述第一次数,则隔离所述第二节点,并删除所述故障记录表中与所述第二节点相关联的记录。

以上这些单元可以是被配置成实施以上方法的一个或多个集成电路,例如:一个或多个特定集成电路(applicationspecificintegratedcircuit,简称asic),或,一个或多个微处理器(digitalsingnalprocessor,简称dsp),或,一个或者多个现场可编程门阵列(fieldprogrammablegatearray,简称fpga)等。再如,当以上某个单元通过处理元件调度程序代码的形式实现时,该处理元件可以是通用处理器,例如中央处理器(centralprocessingunit,简称cpu)或其它可以调用程序代码的处理器。再如,这些单元可以集成在一起,以片上系统(system-on-a-chip,简称soc)的形式实现。

进一步地,本申请实施例提供的故障节点隔离装置,从硬件层面而言,所述故障节点隔离装置的硬件架构示意图可以参见图6所示,所述故障节点隔离装置可以包括:存储器60和处理器61,

存储器60用于存储程序指令;处理器61调用存储器60中存储的程序指令,按照获得的程序指令执行上述方法实施例。具体实现方式和技术效果类似,这里不再赘述。

可选地,本申请还提供一种监控节点,包括用于执行上述方法实施例的至少一个处理元件(或芯片)。

可选地,本申请还提供一种程序产品,例如计算机可读存储介质,该计算机可读存储介质存储有计算机可执行指令,该计算机可执行指令用于使该计算机执行上述方法实施例。

这里,机器可读存储介质可以是任何电子、磁性、光学或其它物理存储装置,可以包含或存储信息,如可执行指令、数据,等等。例如,机器可读存储介质可以是:ram(radomaccessmemory,随机存取存储器)、易失存储器、非易失性存储器、闪存、存储驱动器(如硬盘驱动器)、固态硬盘、任何类型的存储盘(如光盘、dvd等),或者类似的存储介质,或者它们的组合。

上述实施例阐明的系统、装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机,计算机的具体形式可以是个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件收发设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任意几种设备的组合。

为了描述的方便,描述以上装置时以功能分为各种单元分别描述。当然,在实施本申请时可以把各单元的功能在同一个或多个软件和/或硬件中实现。

本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。

本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可以由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其它可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其它可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。

而且,这些计算机程序指令也可以存储在能引导计算机或其它可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或者多个流程和/或方框图一个方框或者多个方框中指定的功能。

这些计算机程序指令也可装载到计算机或其它可编程数据处理设备上,使得在计算机或者其它可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其它可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。

以上所述仅为本申请的较佳实施例而已,并不用以限制本申请,凡在本申请的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本申请保护的范围之内。

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