CN104378232B - 主备集群组网模式下的脑裂发现、恢复方法及装置 - Google Patents
主备集群组网模式下的脑裂发现、恢复方法及装置 Download PDFInfo
- Publication number
- CN104378232B CN104378232B CN201410632118.6A CN201410632118A CN104378232B CN 104378232 B CN104378232 B CN 104378232B CN 201410632118 A CN201410632118 A CN 201410632118A CN 104378232 B CN104378232 B CN 104378232B
- Authority
- CN
- China
- Prior art keywords
- node
- cluster
- host node
- host
- fissure
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Landscapes
- Hardware Redundancy (AREA)
Abstract
本发明提供一种主备集群组网模式下的脑裂发现、恢复方法及装置,其中的方法包括:在集群分裂成子集群时,探测主节点是否脑裂;如果是,子集群形成双主节点;如果否,子集群为单主节点;在子集群融合形成新的集群时,如果主节点未发生脑裂,主节点管理所有子集群的节点形成新集群;如果主节点发生脑裂时,重新确定主节点和备节点,新主节点对新备节点所在的子集群中的所有节点进行管理形成新集群。利用上述方法及装置,能够降低集群分裂时主节点出现脑裂场景的概率,而且能够最大限度的降低集群的恢复时间,并且改善主节点脑裂时的处理方式,在主节点脑裂时,对双主节点进行仲裁,选出一个更合理的主节点,以确保重新形成的集群的稳定性及可用性。
Description
技术领域
本发明涉及集群节点管理技术领域,更为具体地,涉及一种主备集群组网模式下的脑裂发现、恢复方法及装置。
背景技术
在分布式集群系统中,如何实现节点间的管理方式是该领域的一个重要研究方向。就目前的分布式集群系统来看,主备集群模式是一种常见且通用的组网方式,在这种组网方式中,集群内节点存在主节点、备节点及普通节点三种类型节点,其中,主节点作为集群对外提供服务的总入口节点,负责将来自于智能终端的业务请求打散到集群内各个普通节点上,实现域内的负载均衡;备节点周期性地与主节点进行信息同步,一方面保证减少同步的信息开销,另一方面当主节点故障时,可以实现主备节点之间的无缝切换,即备节点能够接管主节点提供的功能,成为集群新的业务入口点。
上述组网方式虽然可以对外提供稳定的服务,但在运行过程中可能由于各种原因产生问题,如因网络阻塞导致集群分裂成两个子集群,当子集群中分别存在主节点时称为主节点发生脑裂,分裂后处于子集群中的节点可以相互通信,而与另一个子集群的节点无法通信,而在网络状况恢复时,子集群内的节点需要按照一定的规则进行融合,否则将会给后续的节点管理带来极大的困难,甚至影响到整个集群对外提供业务的稳定性及可靠性。
在现有的解决集群分裂的方案中,比较通用的方案是类似于heartbeat的解决方案,该解决方案针对主节点脑裂形成过程及脑裂恢复均有相应的处理,下面将分别简述。
在Heartbeat解决方案(heartbeat模块实现了心跳服务和集群通信两个功能)中,如果检测到主备节点网络故障,如,主服务器与备用服务器之间的心跳线出现故障,则启动处理流程,将备用服务器直接切换为主服务器。此种情况下若原来的主服务器已失效,则由新的主服务器对外提供服务,是合理且应当的,与此相反,若原来的主服务器没有失效,则此种情况下有两个主服务器同时对外提供服务,此种状态将影响集群的整体效能,甚至可能造成集群整体的服务无效,可见,在网络故障情况下直接将备用服务器切换为主服务器的做法过于单一化。
其次,在进行脑裂恢复时,采取借助额外设备强制性地关闭一个主节点的措施,该方案虽然能解决脑裂引起的双主问题,但仍存在以下弊端:通过关闭节点服务来解决双主问题的方式比较粗鲁,容易产生单点故障风险,从而导致集群整体服务失效,同时,当重启的节点再次加入到集群时,需要经过比较漫长的恢复过程,尤其是当集群节点数目不断增大时,这种方式所带来的恢复时间问题就会表现地更为明显。
因此,对于现有技术中存在的上述问题,需要一种全新的主备集群组网模式下的脑裂发现、恢复方案。
发明内容
鉴于上述问题,本发明的目的是提供一种主备集群组网模式下的脑裂发现、恢复方法及装置,以解决现有技术无法探测主节点是否发生脑裂的问题,以及脑裂后集群恢复时间慢的问题。
本发明提供的主备集群组网模式下的脑裂发现、恢复方法,包括:
包括脑裂发现阶段和脑裂恢复阶段;其中,
脑裂发现阶段,包括:
在集群中的主节点和备节点之间的心跳断开后,集群分裂成两个子集群时,探测主节点是否发生脑裂;如果主节点未发生脑裂,主节点仍作为备节点所在的子集群的主节点;如果主节点发生脑裂,则将备节点作为其所在的子集群的主节点;
脑裂恢复阶段,包括:
在主节点和备节点之间的心跳恢复连接后,两个子集群融合形成新的集群时;如果两个子集群存在一个主节点,由主节点对另一个子集群中的所有节点进行管理,形成新的集群;如果两个子集群分别存在一个主节点,从两个主节点中重新确定主节点和备节点,由重新确定的主节点对重新确定的备节点所在的子集群中的所有节点进行管理,形成新的集群。
本发明提供的主备集群组网模式下的脑裂发现、恢复装置,包括:
脑裂探测单元,用于在集群中的主节点和备节点之间的心跳断开后,将该集群分裂成两个子集群时,探测主节点是否发生脑裂;
主节点确认单元,用于在主节点未发生脑裂时,确认主节点仍作为备节点所在的子集群的主节点,或在主节点发生脑裂时,将备节点作为其所在的子集群的主节点;
子集群融合单元,用于在主节点和备节点之间的心跳恢复连接后,融合两个子集群形成新的集群;其中,如果两个子集群存在一个主节点,由主节点对另一个子集群中的所有节点进行管理,形成新的集群;如果两个子集群分别存在一个主节点,则从两个主节点中重新确定主节点和备节点,由重新确定的主节点对重新确定的备节点所在的子集群中的所有节点进行管理,形成新的集群。
利用上述根据本发明提供的主备集群组网模式下的脑裂发现、恢复方法及装置,通过判断主节点是否发生脑裂,来降低集群分裂时主节点出现脑裂场景的概率,而且能够确保当集群恢复时,子集群节点能够按照一定的规则进行合理的快速的融合,最大限度的降低集群的恢复时间,并且能够改善主节点脑裂时的处理方式,在主节点脑裂时,对双主节点进行仲裁,在考虑多方面因素的前提下选择更合理的节点做为新的主节点,能够确保重新形成的集群的稳定性及可用性。
为了实现上述以及相关目的,本发明的一个或多个方面包括后面将详细说明并在权利要求中特别指出的特征。下面的说明以及附图详细说明了本发明的某些示例性方面。然而,这些方面指示的仅仅是可使用本发明的原理的各种方式中的一些方式。此外,本发明旨在包括所有这些方面以及它们的等同物。
附图说明
通过参考以下结合附图的说明及权利要求书的内容,并且随着对本发明的更全面理解,本发明的其它目的及结果将更加明白及易于理解。在附图中:
图1为主备集群组网的场景图;
图2为集群分裂后主/备节点在同一子集群的场景图;
图3为集群分裂后主/备节点在不同子集群的场景图;
图4为根据本发明实施例的主备集群组网模式下的脑裂发现、恢复方法的流程示意图;
图5为根据本发明实施例的主备集群组网模式下的脑裂发现、恢复方法的详细流程示意图;
图6为根据本发明实施例的极限探测算法的流程示意图;
图7为根据本发明实施例的子集群快速融合算法的流程示意图;
图8为根据本发明实施例的主备集群组网模式下的脑裂发现、恢复装置的逻辑结构框图;
图9为根据本发明实施例的主备集群组网模式下的脑裂发现、恢复装置的一个具体实施方式的逻辑结构框图。
在所有附图中相同的标号指示相似或相应的特征或功能。
具体实施方式
在下面的描述中,出于说明的目的,为了提供对一个或多个实施例的全面理解,阐述了许多具体细节。然而,很明显,也可以在没有这些具体细节的情况下实现这些实施例。在其它例子中,为了便于描述一个或多个实施例,公知的结构和设备以方框图的形式示出。
以下将结合附图对本发明的具体实施例进行详细描述。
为了更全面的理解本发明的技术方案,首先对集群的组网结构以及集群分裂后的组网结构进行说明。
图1示出了主备集群组网的场景图。如图1所示,主备集群组网的集群服务架构内包括三种节点类型,分别为主节点、备节点及普通节点,主节点上具有所有节点信息的数据结构nodelist(NodeList对象代表一个有顺序的节点列表),定期将不在线的节点从nodelist中删除,备节点与主节点通过心跳线连接,进行主/备节点的信息同步,为主节点提供备份功能,在主节点异常情况下备节点切换为主节点,普通节点实现周期性的向主节点上报节点信息。
在主/备节点间的心跳断开时,集群会分裂成两个子集群,此时会出现两种分裂情况,下面分别对两种分类情况进行说明,以六个节点组成的集群系统为例,其中A节点为主节点,B节点为备节点,C,D,E,F为普通节点。
上述的心跳线是指连接工作机与备份机的网线,通过软件的方式监视工作机,备份机一旦发现工作机由于某种原因停止服务,则立即投入使用,以保证网络的畅通和服务的正常运行。
(1)主/备节点分裂在同一子集群内
图2示出了集群分裂后主/备节点在同一子集群的场景。如图2所示,集群分裂成两个子集群,分别是由节点A,B,C,D所组成的子集群a以及由节点E,F所组成的子集群b,主节点A和备节点B分裂在同一个子集群a中,主节点A长时间未收到普通节点E、F的上报信息,即认为普通节点E、F出现故障,主节点A将节点E、F的信息从nodelist中删除。由于整个集群的业务入口是主节点A,因此对外提供业务的集群为主节点A所在的子集群a,而在子集群b中,不存在主节点,不会对外提供业务,当网络恢复时,子集群b中的节点E,F重新向主节点A上报节点信息,子集群b中的所有节点重新受制于子集群a中的主节点A的管理,重新加入集群,节点信息重新增加到主节点A的nodelist中,相当于整个子集群b重新加入子集群a中,重新形成六节点组成的集群,对于主/备节点分裂在同一子集群内的场景,集群虽然分裂成两个子集群,但仍然只有一个主节点存在,从主节点的角度考虑,并没有发生主节点脑裂现象,在进行子集群的融合时,不会涉及到双主节点间的裁决问题。
(2)主/备节点分裂在不同的子集群内
图3示出了集群分裂后主/备节点在不同子集群的场景,如图3所示,集群分裂成两个子集群,分别是由节点A,C,D所组成的子集群a以及由节点B,E,F所组成的子集群b,主节点A分裂在子集群a中,而备节点B分裂在子集群b中,主节点A长时间未收到备节点B和普通节点E、F的上报信息,即认为备节点B和普通节点E、F出现故障,主节点A将备节点B和普通节点E、F的信息从nodelist中剔除;而在子集群b中,备节点B通过其所有可达的普通节点E、F都不能探测到主节点A,则认为主节点A故障,备节点B成为该子集群b的主节点,并将节点A,C,D从主节点B的nodelist中删除,对于主/备节点分裂在不同子集群内的场景,子集群a和子集群b成为两个独立的集群,对于整体的大集群来说存在两个主节点A和B,意味着主节点A发生了脑裂。
在主节点进行脑裂恢复时,也就是两个子集群进行融合时,采取借助额外设备强制性地关闭一个主节点的措施,该方案虽然能解决脑裂引起的双主问题,但存在的弊端在于,通过关闭节点服务来解决双主问题的方式比较粗鲁,容易产生单点故障风险,从而导致集群整体服务失效,同时,当重启的节点再次加入到集群时,需要经过漫长的恢复过程,尤其是当集群节点数目不断增大时,这种方式所带来的恢复时间问题就会表现地更为明显。
由上述内容可以看出,在主/备节点之间的心跳线发生故障,导致主节点和备节点失去连接时,不会判断主节点是否发生脑裂,简单的将备节点切换为主节点,此操作过于单一化,本发明提供一种主备集群组网模式下的脑裂发现、恢复方法,能够在主/备节点之间的心跳线断开时,主动判断主节点是否发生脑裂,只有在主节点发生脑裂时,将备节点切换为主节点,尽可能低降低对集群的整体效能的影响,在形成双主节点的情况下,主节点进行脑裂恢复时,采用仲裁算法选出一个作为主节点,另一个降为备节点,避免强制关闭主节点而引起的单点故障风险,同时能有效缩短节点融入集群的时间。
下面对本发明提供的主备集群组网模式下的脑裂发现、恢复方法进行详细地说明。
图4为根据本发明实施例的主备集群组网模式下的脑裂发现、恢复方法的流程。
如图4所示,本实施例提供的主备集群组网模式下的脑裂发现、恢复方法,包括脑裂发现阶段和脑裂恢复阶段,在脑裂发现阶段中,当集群中的主节点和备节点之间的心跳断开后,集群分裂成两个子集群时,探测主节点是否发生脑裂;如果主节点未发生脑裂,主节点仍作为备节点所在的子集群的主节点;如果主节点发生脑裂,则将备节点作为其所在的子集群的主节点(步骤S410);
在脑裂恢复阶段中,当主节点和备节点之间的心跳恢复连接后,两个子集群融合形成新的集群时;如果两个子集群存在一个主节点,由主节点对另一个子集群中的所有节点进行管理,形成新的集群;如果两个子集群分别存在一个主节点,从两个主节点中重新确定主节点和备节点,由重新确定的主节点对重新确定的备节点所在的子集群中的所有节点进行管理,形成新的集群。(步骤S420)。
需要说明的是,对于主节点未发生脑裂的情况,主节点和备节点会分裂在同一个子集群中,分裂后的两个子集群中只会存在一个主节点,也就是说两个子集群中的一个存在主节点,另一个子集群不存在主节点,主节点也不会重新确定,还是为分裂前的主节点,在两个子集群融合形成新的集群时,主节点会管理其所在的子集群中的普通节点,还会管理另一个子集群中的所有节点;对于主节点发生脑裂的情况,主节点和备节点会分裂在不同的子集群汇总,分裂后的两个子集群会分别存在一个主节点,原主节点为其所在的子集群中的主节点,而备节点会升级为其所在的子集群中的主节点,在两个子集群融合形成新的集群时,会在两个主节点中重新确定出主节点和备节点,重新确定出的主节点会管理其所在的子集群中的普通节点,也会管理重新确定出的备节点,以及备节点所管理的普通节点。
为了更具体地说明本发明提供的主备集群组网模式下的脑裂发现、恢复方法,图5示出了根据本发明实施例的主备集群组网模式下的脑裂发现、恢复方法的详细流程。如图5所示,本发明实施例提供的主备集群组网模式下的脑裂发现、恢复方法,包括:
步骤S510:判断主/备节点间的心跳是否断开;如果是,执行步骤S520;如果否,执行步骤S550。
如果主/备节点间的心跳断开,说明主和备节点失去联系,无法进行通信,如果主/备节点间的心跳未断开,说明主/备节点之间还能联系,可以继续进行通信。
步骤S520:根据极限探测算法探测主节点是否发生脑裂。
当主/备节点之间的心跳断开时,备节点采用极限探测算法探测主节点是否发生脑裂,但也可以采用其它算法探测主节点是否发生脑裂。图6示出了根据本发明实施例的极限探测算法的流程,如图6所示,本发明实施例提供的极限探测算法,包括:
步骤S601:探测备节点可到达的普通节点。
备节点能够到达某个普通节点,说明备节点与该普通节点还能进行通信。
步骤S602:遍历备节点所有可到达的普通节点。
通过遍历备节点可到达的所有普通节点,能够使备节点掌握所有与其通信的普通节点。
步骤S603:获取所有可到达的普通节点的可达节点列表。
通过此步骤可以掌握普通节点能与哪些节点进行通信,备节点通过可到达的普通节点间接的与该普通节点可到达的节点进行通信。
步骤S604:在可达节点列表中搜寻主节点。
备节点在可到达的普通节点的可达节点列表中寻找主节点。
步骤S605:判断可达节点列表中是否搜寻到主节点;如果是,执行步骤S606;如果否,执行步骤S607。
步骤S606:主节点未发生脑裂,备节点不接管普通节点。
如果备节点在可达节点列表中搜寻到主节点,意味着主节点还能与主节点进行通信,即主节点与备节点分裂在同一个子集群中,主节点未发生脑裂,此时,在两个子集群中主节点只有一个,备节点不需要切换为主节点接管普通节点。
步骤S607:判断是否遍历所有可到达的普通节点;如果是,执行步骤S608;如果否,执行步骤S604。
步骤S608:主节点发生脑裂,备节点接管普通节点。
如果备节点在可达节点列表中未搜寻到主节点,意味着主节点不能与主节点进行通信,即主节点和备节点分裂在不同的子集群中,此时,主节点发生脑裂,备节点切换为主节点接管备节点所在的子集群内的普通节点,主节点所在的子集群内也存在主节点,此时形成双主节点。
具体地,以上述的六个节点形成的集群为例,在主节点A和备节点B之间的心跳断开时,如果主节点A、备节点B、普通节点C、D全部分裂在子集群a中,普通节点E、F分裂在子集群b中,备节点B能够到达的普通节点为C、D,在普通节点C、D的可达节点列表中可以搜寻到主节点A,说明主节点A还能与备节点B进行通信,备节点B不认为主节点A发生故障,备节点B也不切换为主节点,此时,子集群a中存在一个主节点A,子集群b中不存在主节点,对外提供业务的集群为主节点A所在的子集群a,在不存在主节点的子集群b不会对外提供业务。
如果主节点A和普通节点C、D分裂在子集群a中,备节点B和普通节点E、F分裂在子集群b中,备节点B可到达的普通节点为E、F,备节点B通过普通节点E、F的可达节点列表搜寻不到主节点A,说明主节点A与备节点B失去联系无法通信,认为主节点A故障,备节点B切换为子集群b的主节点,此时,子集群a和子集群b成为两个独立的子集群,对于整体的大集群来说存在两个主节点,主节点A发生了脑裂。
上述步骤S601~步骤S608详细地说明了本发明实施例提供的极限探测算法,在主/备节点之间的心跳断开时,备节点不是盲目的接管主节点资源成为新的主节点,而是先进行主节点是否发生脑裂的探测,在主节点发生脑裂备节点才接管主节点资源成为新的主节点,通过备节点与主节点之间的探测可以降低集群分裂时主节点出现脑裂场景的概率,也可以在主/备节点之间的心跳恢复连接,两个子集群开始融合时,最大限度的降低子集群的融合时间。
步骤S530:定时检测心跳线恢复情况。
定时检测主/备节点间的心跳线的恢复状况。
步骤S540:判断主/备节点间的心跳是否恢复连接;如果是,执行步骤S550;如果否,返回步骤S530。
如果主/备节点间的心跳恢复连接,需要对分裂后的两个子集群进行融合,也就是恢复集群的过程;如果主/备节点间的心跳还未恢复连接,则继续检测,直到主/备节点间的心跳恢复连接为止。
步骤S550:根据子集群快速融合算法融合子集群,形成新的集群。
在主备节点之间心跳恢复连接时,集群分裂形成的两个子集群要融合在一起,形成新的集群,本发明采用子集群快速融合算法对两个子集群进行融合,但也可以采用其它的融合算法进行子集群的融合,图7示出了根据本发明实施例的子集群快速融合算法的流程,如图7所示,本发明实施例提供的子集群快速融合算法,包括:
步骤S701:判断新入网的子集群节点中是否存在主节点;如果是,执行步骤S702;如果否,执行步骤S704。
新入网的子集群是指不存在原有主节点的子集群,以子集群a、b为例,集群分裂后,主节点分裂在子集群a中,新入网的子集群为子集群b,新入网就是指子集群b与子集群a的融合。
步骤S702:根据仲裁算法重新确定主节点和备节点。
如果新入网的子集群节点中存在主节点,说明主节点发生脑裂,由于集群中只能存在一个主节点,所以两个子集群在融合时需要从两个主节点中重新确定一个作为新的主节点,另一个作为备节点,本发明根据仲裁算法重新确定主节点和备节点,仲裁算法将在下文做详细说明。
步骤S703:新的主节点进行主/备节点间的信息融合,之后执行步骤S705。
新的主节点从备节点上获取其节点信息列表,并和自身所保存的节点信息列表进行融合,并向融合后的节点发送主节点变更通知消息,融合后的节点向新的主节点上报信息,形成新的集群。
步骤S704:节点信息重新保存。
新入网的子集群节点中不存在主节点时,说明集群分裂时主节点未发生脑裂,整个集群仍然存在唯一一个主节点,在这种情况下,新入网的节点重新上报节点信息到主节点,主节点重新将入网节点保存到节点信息列表中,即可完成子集群融合。
步骤S705:形成新的集群。
上述步骤SS701~步骤S705详细说明了本发明实施例提供的子集群快速融合算法,将子集群中的节点能够按照一定的规则合理的快速的融合,能够最大限度的降低集群的恢复时间。
在主节点脑裂恢复时针对双主节点的情况,本发明采用仲裁算法重新确定主节点和备节点,仲裁算法主要考虑四个因素的影响,分别是节点NID、节点的剩余的负载状况、节点上包含的普通节点个数及从心跳断开到恢复期间内的资源变化率,该算法决定了在主节点脑裂恢复时是否能够快速的重新形成完整主备集群,并且集群能够正常的进行后续的节点管理等功能。
下面将对仲裁算法做详细地说明。
首先对仲裁算法中考虑的四个因素做相应的说明:
(1)节点的NID,节点NID可以由节点的IP转换得出。
(2)节点的剩余资源状况,用R表示,R越大表明其可承担的工作量越多,选择主节点时选择剩余资源多的节点作为主节点。
(3)节点上包含的普通节点个数,可以从节点上存储的nodelist中得出,用N表示,N越大表明该子集群的节点数越多,子集群所内提供的服务功能越强大,选择主节点时选择普通节点多的节点作为主节点。
(4)心跳断开到恢复期间内的资源变化率,其值越大说明资源变化情况越激烈,选择主节点时选择资源变化率小的节点作为主节点。
以上述的子集群a、b为例,主节点A为子集群a中的主节点,主节点B为子集群b中的主节点,针对集群分裂后,主/备节点分裂在不同的子集群中的情况,在主节点进行脑裂恢复时,需要对子集群a中的主节点A及子集群b中的主节点B进行仲裁,其中,
ANID表示主节点A的节点NID;
AR表示主节点A的剩余资源状况;
AN表示主节点A所管理的普通节点个数;
dRA/dt表示主节点A的资源变化率;
BNID表示主节点B的节点NID;
BR表示主节点B的剩余资源状况;
BN表示主节点A所管理的普通节点个数;
dRB/dt表示主节点B的资源变化率。
仲裁算法在进行双主仲裁时按照下面的规则进行:
其中,
AR/BR表示主节点A和主节点B的剩余资源比值,比值越大说明主节点A的剩余资源越多;本发明将剩余资源比值的阈值设为[0.8,1.2],当剩余资源比值在此阈值之间时,认为两个主节点的剩余资源相当;当比值≥1.2时,认为主节点A剩余资源多;当比值<0.8时,则认为主节点B剩余资源多。
AN/BN表示主节点A和主节点B的普通节点数比值,比值越大说明主节点A包括的普通节点数越多;本发明将普通节点数比值的阈值设为[0.8,1.2],当普通节点数比值在此阈值之间时,认为两个主节点包括的普通节点数相当;当比值≥1.2时,认为主节点A包括的普通节点数多;当比值<0.8时,则认为主节点B包括的普通节点数多。
(dRA–dRB)/dt表示主节点A和主节点B的资源变化率的比值,本发明将资源变化率的比值的阈值设为[-0.1,0.1],当资源变化率的比值在阈值之间时,说明两个主节点的资源变化情况越接近,当比值>0.1时,说明主节点A的资源变化频繁,并且资源变化率的比值越大,说明主节点A的资源变化越频繁;当比值<-0.1时,说明主节点B的资源变化频繁,并且资源变化率的比值越小,说明主节点B的资源变化越频繁。
从上面的三个规则中选取主节点和备节点,当从上面三个规则中不能选择出节点时,选择NID小的节点作为主节点。
在子集群融合过程中,仲裁算法不会对节点进行关闭操作,能够最大限度的降低集群分裂恢复时间,并且恢复的过程是利用两个节点间的心跳连接,不会引入额外的控制报文的开销,因此可以很好的适应集群节点数目增长的状况。
与上述主备集群组网模式下的脑裂发现、恢复方法相对应,本发明提供一种主备集群组网模式下的脑裂发现、恢复装置。图8示出了根据本发明实施例的主备集群组网模式下的脑裂发现、恢复装置的逻辑结构。
如图8所示,本发明实施例提供的主备集群组网模式下的脑裂发现、恢复装置,包括脑裂探测单元810、主节点确认单元820和子集群融合单元830。
其中,脑裂探测单元810用于在集群中的主节点和备节点之间的心跳断开后,将该集群分裂成两个子集群时,探测主节点是否发生脑裂。
主节点确认单元820,用于在主节点未发生脑裂时,将确认主节点仍作为备节点所在的子集群的主节点,或在主节点发生脑裂时,将备节点作为其所在的子集群的主节点。
子集群融合单元830用于在主节点和备节点之间的心跳恢复连接后,融合两个子集群形成新的集群;其中,如果两个子集群存在一个主节点,由主节点对另一个子集群中的所有节点进行管理,形成新的集群;如果两个子集群分别存在一个主节点,从两个主节点中重新确定主节点和备节点,由重新确定的主节点对重新确定的备节点所在的子集群中的所有节点进行管理,形成新的集群。
图9示出了根据本发明实施例的主备集群组网模式下的脑裂发现、恢复装置的一个具体实施方式的逻辑结构。如图9所示,脑裂探测单元810包括节点探测模块811、节点列表获取模块812、主节点判断模块813。
其中,节点探测模块811用于探测备节点到达的普通节点;节点列表获取模块812用于获取备节点到达的普通节点的节点列表;主节点判断模块813用于判断节点列表中是否存在主节点,如果存在,主节点未发生脑裂;如果不存在,主节点发生脑裂。
其中,子集群融合单元820根据仲裁算法从两个主节点中重新确定主节点和备节点,其中的仲裁规则包括:
其中,
ANID表示主节点A的节点NID;
AR表示主节点A的剩余资源状况;
AN表示主节点A所管理的普通节点个数;
dRA/dt表示主节点A的资源变化率;
BNID表示主节点B的节点NID;
BR表示主节点B的剩余资源状况;
BN表示主节点A所管理的普通节点个数;
dRB/dt表示主节点B的资源变化率。
上述内容详细地说明了本发明实施例提供的主备集群组网模式下的脑裂发现、恢复方法,通过引入极限探测算法能够降低集群分裂时主节点出现脑裂场景的概率,而且能够确保当集群恢复时,子集群节点能够按照一定的规则进行合理的快速的融合,最大限度的降低集群的恢复时间,并且改善主节点脑裂时的处理方式,在主节点脑裂时,采用仲裁算法对双主节点进行仲裁,仲裁算法能够在考虑多方面因素的前提下选择更合理的节点作为新的主节点,能够确保重新形成的集群的稳定性及可用性。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应所述以权利要求的保护范围为准。
Claims (4)
1.一种主备集群组网模式下的脑裂发现、恢复方法,包括脑裂发现阶段和脑裂恢复阶段;其中,
所述脑裂发现阶段,包括:
在集群中的主节点和备节点之间的心跳断开后,所述集群分裂成两个子集群时,根据极限探测算法探测所述主节点是否发生脑裂;如果所述主节点未发生脑裂,则所述主节点仍作为所述备节点所在的子集群的主节点;如果所述主节点发生脑裂,则将所述备节点作为其所在的子集群的主节点;
所述脑裂恢复阶段,包括:
在所述主节点和所述备节点之间的心跳恢复连接后,所述两个子集群融合形成新的集群时;如果所述两个子集群存在一个主节点,由所述主节点对另一个子集群中的所有节点进行管理,形成新的集群;如果所述两个子集群分别存在一个主节点,从两个主节点中重新确定主节点和备节点,由重新确定的主节点对重新确定的备节点所在的子集群中的所有节点进行管理,形成新的集群;
其中,根据极限探测算法探测所述主节点是否发生脑裂的探测过程包括:
由所述备节点探测其到达的普通节点,并获取到达的普通节点的节点列表,判断所述节点列表中是否存在所述主节点,如果存在,所述主节点未发生脑裂;如果不存在,所述主节点发生脑裂。
2.如权利要求1所述的主备集群组网模式下的脑裂发现、恢复方法,其中,根据仲裁算法从两个主节点中重新确定主节点和备节点,其中的仲裁规则包括:
其中,
ANID表示主节点A的节点NID;
AR表示主节点A的剩余资源状况;
AN表示主节点A所管理的节点个数;
dRA/dt表示主节点A的资源变化率;
BNID表示主节点B的节点NID;
BR表示主节点B的剩余资源状况;
BN表示主节点A所管理的普通节点个数;
dRB/dt表示主节点B的资源变化率。
3.一种主备集群组网模式下的脑裂发现、恢复装置,包括:
脑裂探测单元,用于在集群中的主节点和备节点之间的心跳断开后,将所述集群分裂成两个子集群时,探测所述主节点是否发生脑裂;
主节点确认单元,用于在所述主节点未发生脑裂时,确认所述主节点仍作为所述备节点所在的子集群的主节点,或在所述主节点发生脑裂时,则将所述备节点作为其所在的子集群的主节点;
子集群融合单元,用于在所述主节点和所述备节点之间的心跳恢复连接后,融合所述两个子集群形成新的集群;其中,如果所述两个子集群存在一个主节点,由所述主节点对另一个子集群中的所有节点进行管理,形成新的集群;如果所述两个子集群分别存在一个主节点,则从两个主节点中重新确定主节点和备节点,由重新确定的主节点对重新确定的备节点所在的子集群中的所有节点进行管理,形成新的集群;
其中,所述脑裂探测单元包括:
节点探测模块,用于探测所述备节点到达的节点;
节点列表获取模块,用于获取所述备节点到达的节点的节点列表;
主节点判断模块,用于判断所述节点列表中是否存在所述主节点,如果存在,所述主节点未发生脑裂;如果不存在,所述主节点发生脑裂。
4.如权利要求3所述的主备集群组网模式下的脑裂发现、恢复装置,其中,所述子集群融合单元根据仲裁算法从两个主节点中重新确定主节点和备节点,其中的仲裁规则包括:
其中,
ANID表示主节点A的节点NID;
AR表示主节点A的剩余资源状况;
AN表示主节点A所管理的普通节点个数;
dRA/dt表示主节点A的资源变化率;
BNID表示主节点B的节点NID;
BR表示主节点B的剩余资源状况;
BN表示主节点A所管理的普通节点个数;
dRB/dt表示主节点B的资源变化率。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410632118.6A CN104378232B (zh) | 2014-11-10 | 2014-11-10 | 主备集群组网模式下的脑裂发现、恢复方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410632118.6A CN104378232B (zh) | 2014-11-10 | 2014-11-10 | 主备集群组网模式下的脑裂发现、恢复方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104378232A CN104378232A (zh) | 2015-02-25 |
CN104378232B true CN104378232B (zh) | 2018-01-19 |
Family
ID=52556910
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410632118.6A Active CN104378232B (zh) | 2014-11-10 | 2014-11-10 | 主备集群组网模式下的脑裂发现、恢复方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104378232B (zh) |
Families Citing this family (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105430052B (zh) * | 2015-10-30 | 2018-09-07 | 浪潮(北京)电子信息产业有限公司 | 一种用于集群系统的仲裁方法和装置 |
CN107508694B (zh) * | 2016-06-14 | 2021-11-16 | 中兴通讯股份有限公司 | 一种集群内的节点管理方法及节点设备 |
CN106878382B (zh) * | 2016-12-29 | 2020-02-14 | 北京华为数字技术有限公司 | 一种分布式仲裁集群中动态改变集群规模的方法及装置 |
CN109257195B (zh) | 2017-07-12 | 2021-01-15 | 华为技术有限公司 | 集群中节点的故障处理方法及设备 |
CN107404522B (zh) * | 2017-07-20 | 2020-03-10 | 苏州浪潮智能科技有限公司 | 一种跨节点的虚拟机集群高可用实现方法和装置 |
CN107257298A (zh) * | 2017-07-27 | 2017-10-17 | 郑州云海信息技术有限公司 | 一种故障处理方法及装置 |
CN107579860A (zh) * | 2017-09-29 | 2018-01-12 | 新华三技术有限公司 | 节点选举方法及装置 |
CN108092829B (zh) * | 2018-01-31 | 2021-07-06 | 深信服科技股份有限公司 | 集群分裂的处理方法、sdn控制器及存储介质 |
CN109344015B (zh) * | 2018-10-10 | 2022-05-24 | 武汉达梦数据库股份有限公司 | 一种数据库服务使用ha预防双主节点的方法及系统 |
CN111835534B (zh) * | 2019-04-15 | 2022-05-06 | 华为技术有限公司 | 一种用于集群控制的方法,网络设备,主控节点装置及计算机可读存储介质 |
CN111093249B (zh) * | 2019-12-05 | 2022-06-21 | 合肥中感微电子有限公司 | 无线局域网通信方法、系统及无线收发设备 |
CN112468596B (zh) | 2020-12-02 | 2022-07-05 | 苏州浪潮智能科技有限公司 | 一种集群仲裁方法、装置、电子设备及可读存储介质 |
CN114143175A (zh) * | 2021-10-15 | 2022-03-04 | 湖南麒麟信安科技股份有限公司 | 主备集群实现方法及系统 |
CN114756410B (zh) * | 2022-06-15 | 2022-11-11 | 苏州浪潮智能科技有限公司 | 一种双机热备系统的数据恢复方法、装置及介质 |
CN116094940B (zh) * | 2023-02-15 | 2023-07-25 | 北京志凌海纳科技有限公司 | 一种vrrp脑裂抑制方法、系统、设备及存储介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1741489A (zh) * | 2005-09-01 | 2006-03-01 | 西安交通大学 | 构建多机系统高可用的自愈合逻辑环故障检测与容忍方法 |
CN102308559A (zh) * | 2011-07-26 | 2012-01-04 | 华为技术有限公司 | 一种用于集群计算机系统的投票仲裁方法及装置 |
CN102394914A (zh) * | 2011-09-22 | 2012-03-28 | 浪潮(北京)电子信息产业有限公司 | 集群脑裂处理方法和装置 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP2837161B1 (en) * | 2012-08-13 | 2018-05-30 | Unify GmbH & Co. KG | Method and apparatus for indirectly assessing a status of an active entity |
-
2014
- 2014-11-10 CN CN201410632118.6A patent/CN104378232B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1741489A (zh) * | 2005-09-01 | 2006-03-01 | 西安交通大学 | 构建多机系统高可用的自愈合逻辑环故障检测与容忍方法 |
CN102308559A (zh) * | 2011-07-26 | 2012-01-04 | 华为技术有限公司 | 一种用于集群计算机系统的投票仲裁方法及装置 |
CN102394914A (zh) * | 2011-09-22 | 2012-03-28 | 浪潮(北京)电子信息产业有限公司 | 集群脑裂处理方法和装置 |
Also Published As
Publication number | Publication date |
---|---|
CN104378232A (zh) | 2015-02-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104378232B (zh) | 主备集群组网模式下的脑裂发现、恢复方法及装置 | |
CN106789157B (zh) | 堆叠系统及堆叠交换机的硬件资源管理方法 | |
US10277454B2 (en) | Handling failure of stacking system | |
CN104317803B (zh) | 数据库集群的数据存取系统和方法 | |
CN106933693A (zh) | 一种数据库集群节点故障自动修复方法及系统 | |
US20150319646A1 (en) | Traffic forwarding method and system based on virtual switch cluster | |
CN106953747B (zh) | 一种基于深度学习的sdn网络自愈方法 | |
CN105337780B (zh) | 一种服务器节点配置方法及物理节点 | |
CN108073540A (zh) | I2c总线系统、异常设备排查方法 | |
CN105915426A (zh) | 环形网络的故障恢复方法及装置 | |
CN105721315A (zh) | 一种集中式mac地址学习的控制方法 | |
CN106126652A (zh) | 用于分布式数据库集群的故障数据库切换方法及系统 | |
CN102843264A (zh) | 高速串行总线网络中双主机的控制方法 | |
CN106385334B (zh) | 呼叫中心系统及其异常检测及自恢复方法 | |
CN104506372B (zh) | 一种实现主备服务器切换的方法及系统 | |
CN106789306A (zh) | 通信设备软件故障检测收集恢复方法和系统 | |
CN107040395A (zh) | 一种告警信息的处理方法、装置和系统 | |
CN105812161B (zh) | 一种控制器故障备份方法和系统 | |
CN105634848B (zh) | 一种虚拟路由器监控方法及装置 | |
CN109471759A (zh) | 一种基于sas双控设备的数据库故障切换方法及设备 | |
CN106452952A (zh) | 一种检测集群系统通信状态的方法及网关集群 | |
CN103441878B (zh) | Vcf网络中pe设备的归属处理方法及设备 | |
US9912527B2 (en) | Communication device, communication system, method for determining path, and program | |
CN108445857B (zh) | 一种scada系统的1+n冗余机制设计方法 | |
CN102143011B (zh) | 一种实现网络保护的装置及方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |