主备集群组网模式下的脑裂发现、恢复方法及装置制造方法

文档序号:7819255阅读:293来源:国知局
主备集群组网模式下的脑裂发现、恢复方法及装置制造方法
【专利摘要】本发明提供一种主备集群组网模式下的脑裂发现、恢复方法及装置,其中的方法包括:在集群分裂成子集群时,探测主节点是否脑裂;如果是,子集群形成双主节点;如果否,子集群为单主节点;在子集群融合形成新的集群时,如果主节点未发生脑裂,主节点管理所有子集群的节点形成新集群;如果主节点发生脑裂时,重新确定主节点和备节点,新主节点对新备节点所在的子集群中的所有节点进行管理形成新集群。利用上述方法及装置,能够降低集群分裂时主节点出现脑裂场景的概率,而且能够最大限度的降低集群的恢复时间,并且改善主节点脑裂时的处理方式,在主节点脑裂时,对双主节点进行仲裁,选出一个更合理的主节点,以确保重新形成的集群的稳定性及可用性。
【专利说明】主备集群组网模式下的脑裂发现、恢复方法及装置

【技术领域】
[0001] 本发明涉及集群节点管理【技术领域】,更为具体地,涉及一种主备集群组网模式下 的脑裂发现、恢复方法及装置。

【背景技术】
[0002] 在分布式集群系统中,如何实现节点间的管理方式是该领域的一个重要研究方 向。就目前的分布式集群系统来看,主备集群模式是一种常见且通用的组网方式,在这种组 网方式中,集群内节点存在主节点、备节点及普通节点三种类型节点,其中,主节点作为集 群对外提供服务的总入口节点,负责将来自于智能终端的业务请求打散到集群内各个普通 节点上,实现域内的负载均衡;备节点周期性地与主节点进行信息同步,一方面保证减少同 步的信息开销,另一方面当主节点故障时,可以实现主备节点之间的无缝切换,即备节点能 够接管主节点提供的功能,成为集群新的业务入口点。
[0003] 上述组网方式虽然可以对外提供稳定的服务,但在运行过程中可能由于各种原因 产生问题,如因网络阻塞导致集群分裂成两个子集群,当子集群中分别存在主节点时称为 主节点发生脑裂,分裂后处于子集群中的节点可以相互通信,而与另一个子集群的节点无 法通信,而在网络状况恢复时,子集群内的节点需要按照一定的规则进行融合,否则将会给 后续的节点管理带来极大的困难,甚至影响到整个集群对外提供业务的稳定性及可靠性。
[0004] 在现有的解决集群分裂的方案中,比较通用的方案是类似于heartbeat的解决方 案,该解决方案针对主节点脑裂形成过程及脑裂恢复均有相应的处理,下面将分别简述。
[0005] 在Heartbeat解决方案(heartbeat模块实现了心跳服务和集群通信两个功能) 中,如果检测到主备节点网络故障,如,主服务器与备用服务器之间的心跳线出现故障,则 启动处理流程,将备用服务器直接切换为主服务器。此种情况下若原来的主服务器已失效, 则由新的主服务器对外提供服务,是合理且应当的,与此相反,若原来的主服务器没有失 效,则此种情况下有两个主服务器同时对外提供服务,此种状态将影响集群的整体效能,甚 至可能造成集群整体的服务无效,可见,在网络故障情况下直接将备用服务器切换为主服 务器的做法过于单一化。
[0006] 其次,在进行脑裂恢复时,采取借助额外设备强制性地关闭一个主节点的措施,该 方案虽然能解决脑裂引起的双主问题,但仍存在以下弊端:通过关闭节点服务来解决双主 问题的方式比较粗鲁,容易产生单点故障风险,从而导致集群整体服务失效,同时,当重启 的节点再次加入到集群时,需要经过比较漫长的恢复过程,尤其是当集群节点数目不断增 大时,这种方式所带来的恢复时间问题就会表现地更为明显。
[0007] 因此,对于现有技术中存在的上述问题,需要一种全新的主备集群组网模式下的 脑裂发现、恢复方案。


【发明内容】

[0008] 鉴于上述问题,本发明的目的是提供一种主备集群组网模式下的脑裂发现、恢复 方法及装置,以解决现有技术无法探测主节点是否发生脑裂的问题,以及脑裂后集群恢复 时间慢的问题。
[0009] 本发明提供的主备集群组网模式下的脑裂发现、恢复方法,包括:
[0010] 包括脑裂发现阶段和脑裂恢复阶段;其中,
[0011] 脑裂发现阶段,包括:
[0012] 在集群中的主节点和备节点之间的心跳断开后,集群分裂成两个子集群时,探测 主节点是否发生脑裂;如果主节点未发生脑裂,主节点仍作为备节点所在的子集群的主节 点;如果主节点发生脑裂,则将备节点作为其所在的子集群的主节点;
[0013] 脑裂恢复阶段,包括:
[0014] 在主节点和备节点之间的心跳恢复连接后,两个子集群融合形成新的集群时;如 果两个子集群存在一个主节点,由主节点对另一个子集群中的所有节点进行管理,形成新 的集群;如果两个子集群分别存在一个主节点,从两个主节点中重新确定主节点和备节点, 由重新确定的主节点对重新确定的备节点所在的子集群中的所有节点进行管理,形成新的 集群。
[0015] 本发明提供的主备集群组网模式下的脑裂发现、恢复装置,包括:
[0016] 脑裂探测单元,用于在集群中的主节点和备节点之间的心跳断开后,将该集群分 裂成两个子集群时,探测主节点是否发生脑裂;
[0017] 主节点确认单元,用于在主节点未发生脑裂时,确认主节点仍作为备节点所在的 子集群的主节点,或在主节点发生脑裂时,将备节点作为其所在的子集群的主节点;
[0018] 子集群融合单元,用于在主节点和备节点之间的心跳恢复连接后,融合两个子集 群形成新的集群;其中,如果两个子集群存在一个主节点,由主节点对另一个子集群中的所 有节点进行管理,形成新的集群;如果两个子集群分别存在一个主节点,则从两个主节点中 重新确定主节点和备节点,由重新确定的主节点对重新确定的备节点所在的子集群中的所 有节点进行管理,形成新的集群。
[0019] 利用上述根据本发明提供的主备集群组网模式下的脑裂发现、恢复方法及装置, 通过判断主节点是否发生脑裂,来降低集群分裂时主节点出现脑裂场景的概率,而且能够 确保当集群恢复时,子集群节点能够按照一定的规则进行合理的快速的融合,最大限度的 降低集群的恢复时间,并且能够改善主节点脑裂时的处理方式,在主节点脑裂时,对双主节 点进行仲裁,在考虑多方面因素的前提下选择更合理的节点做为新的主节点,能够确保重 新形成的集群的稳定性及可用性。
[0020] 为了实现上述以及相关目的,本发明的一个或多个方面包括后面将详细说明并在 权利要求中特别指出的特征。下面的说明以及附图详细说明了本发明的某些示例性方面。 然而,这些方面指示的仅仅是可使用本发明的原理的各种方式中的一些方式。此外,本发明 旨在包括所有这些方面以及它们的等同物。

【专利附图】

【附图说明】
[0021] 通过参考以下结合附图的说明及权利要求书的内容,并且随着对本发明的更全面 理解,本发明的其它目的及结果将更加明白及易于理解。在附图中:
[0022] 图1为主备集群组网的场景图;
[0023] 图2为集群分裂后主/备节点在同一子集群的场景图;
[0024] 图3为集群分裂后主/备节点在不同子集群的场景图;
[0025] 图4为根据本发明实施例的主备集群组网模式下的脑裂发现、恢复方法的流程示 意图;
[0026] 图5为根据本发明实施例的主备集群组网模式下的脑裂发现、恢复方法的详细流 程不意图;
[0027] 图6为根据本发明实施例的极限探测算法的流程示意图;
[0028] 图7为根据本发明实施例的子集群快速融合算法的流程示意图;
[0029] 图8为根据本发明实施例的主备集群组网模式下的脑裂发现、恢复装置的逻辑结 构框图;
[0030] 图9为根据本发明实施例的主备集群组网模式下的脑裂发现、恢复装置的一个具 体实施方式的逻辑结构框图。
[0031] 在所有附图中相同的标号指示相似或相应的特征或功能。

【具体实施方式】
[0032] 在下面的描述中,出于说明的目的,为了提供对一个或多个实施例的全面理解,阐 述了许多具体细节。然而,很明显,也可以在没有这些具体细节的情况下实现这些实施例。 在其它例子中,为了便于描述一个或多个实施例,公知的结构和设备以方框图的形式示出。
[0033] 以下将结合附图对本发明的具体实施例进行详细描述。
[0034] 为了更全面的理解本发明的技术方案,首先对集群的组网结构以及集群分裂后的 组网结构进行说明。
[0035] 图1示出了主备集群组网的场景图。如图1所示,主备集群组网的集群服务架构 内包括三种节点类型,分别为主节点、备节点及普通节点,主节点上具有所有节点信息的 数据结构nodelist (NodeList对象代表一个有顺序的节点列表),定期将不在线的节点从 nodelist中删除,备节点与主节点通过心跳线连接,进行主/备节点的信息同步,为主节点 提供备份功能,在主节点异常情况下备节点切换为主节点,普通节点实现周期性的向主节 点上报节点信息。
[0036] 在主/备节点间的心跳断开时,集群会分裂成两个子集群,此时会出现两种分裂 情况,下面分别对两种分类情况进行说明,以六个节点组成的集群系统为例,其中A节点为 主节点,B节点为备节点,C,D,E,F为普通节点。
[0037] 上述的心跳线是指连接工作机与备份机的网线,通过软件的方式监视工作机,备 份机一旦发现工作机由于某种原因停止服务,则立即投入使用,以保证网络的畅通和服务 的正常运行。
[0038] (1)主/备节点分裂在同一子集群内
[0039] 图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中,重新形成六节点组成的集群,对于主/备节点分裂在同一子集 群内的场景,集群虽然分裂成两个子集群,但仍然只有一个主节点存在,从主节点的角度考 虑,并没有发生主节点脑裂现象,在进行子集群的融合时,不会涉及到双主节点间的裁决问 题。
[0040] (2)主/备节点分裂在不同的子集群内
[0041] 图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发生了脑裂。
[0042] 在主节点进行脑裂恢复时,也就是两个子集群进行融合时,采取借助额外设备强 制性地关闭一个主节点的措施,该方案虽然能解决脑裂引起的双主问题,但存在的弊端在 于,通过关闭节点服务来解决双主问题的方式比较粗鲁,容易产生单点故障风险,从而导致 集群整体服务失效,同时,当重启的节点再次加入到集群时,需要经过漫长的恢复过程,尤 其是当集群节点数目不断增大时,这种方式所带来的恢复时间问题就会表现地更为明显。 [0043] 由上述内容可以看出,在主/备节点之间的心跳线发生故障,导致主节点和备节 点失去连接时,不会判断主节点是否发生脑裂,简单的将备节点切换为主节点,此操作过于 单一化,本发明提供一种主备集群组网模式下的脑裂发现、恢复方法,能够在主/备节点之 间的心跳线断开时,主动判断主节点是否发生脑裂,只有在主节点发生脑裂时,将备节点切 换为主节点,尽可能低降低对集群的整体效能的影响,在形成双主节点的情况下,主节点进 行脑裂恢复时,采用仲裁算法选出一个作为主节点,另一个降为备节点,避免强制关闭主节 点而引起的单点故障风险,同时能有效缩短节点融入集群的时间。
[0044] 下面对本发明提供的主备集群组网模式下的脑裂发现、恢复方法进行详细地说 明。
[0045] 图4为根据本发明实施例的主备集群组网模式下的脑裂发现、恢复方法的流程。
[0046] 如图4所示,本实施例提供的主备集群组网模式下的脑裂发现、恢复方法,包括脑 裂发现阶段和脑裂恢复阶段,在脑裂发现阶段中,当集群中的主节点和备节点之间的心跳 断开后,集群分裂成两个子集群时,探测主节点是否发生脑裂;如果主节点未发生脑裂,主 节点仍作为备节点所在的子集群的主节点;如果主节点发生脑裂,则将备节点作为其所在 的子集群的主节点(步骤S410);
[0047] 在脑裂恢复阶段中,当主节点和备节点之间的心跳恢复连接后,两个子集群融合 形成新的集群时;如果两个子集群存在一个主节点,由主节点对另一个子集群中的所有节 点进行管理,形成新的集群;如果两个子集群分别存在一个主节点,从两个主节点中重新确 定主节点和备节点,由重新确定的主节点对重新确定的备节点所在的子集群中的所有节点 进行管理,形成新的集群。(步骤S420)。
[0048] 需要说明的是,对于主节点未发生脑裂的情况,主节点和备节点会分裂在同一个 子集群中,分裂后的两个子集群中只会存在一个主节点,也就是说两个子集群中的一个存 在主节点,另一个子集群不存在主节点,主节点也不会重新确定,还是为分裂前的主节点, 在两个子集群融合形成新的集群时,主节点会管理其所在的子集群中的普通节点,还会管 理另一个子集群中的所有节点;对于主节点发生脑裂的情况,主节点和备节点会分裂在不 同的子集群汇总,分裂后的两个子集群会分别存在一个主节点,原主节点为其所在的子集 群中的主节点,而备节点会升级为其所在的子集群中的主节点,在两个子集群融合形成新 的集群时,会在两个主节点中重新确定出主节点和备节点,重新确定出的主节点会管理其 所在的子集群中的普通节点,也会管理重新确定出的备节点,以及备节点所管理的普通节 点。
[0049] 为了更具体地说明本发明提供的主备集群组网模式下的脑裂发现、恢复方法,图5 示出了根据本发明实施例的主备集群组网模式下的脑裂发现、恢复方法的详细流程。如图 5所示,本发明实施例提供的主备集群组网模式下的脑裂发现、恢复方法,包括 :
[0050] 步骤S510 :判断主/备节点间的心跳是否断开;如果是,执行步骤S520 ;如果否, 执行步骤S550。
[0051] 如果主/备节点间的心跳断开,说明主和备节点失去联系,无法进行通信,如果主 /备节点间的心跳未断开,说明主/备节点之间还能联系,可以继续进行通信。
[0052] 步骤S520 :根据极限探测算法探测主节点是否发生脑裂。
[0053] 当主/备节点之间的心跳断开时,备节点采用极限探测算法探测主节点是否发生 脑裂,但也可以采用其它算法探测主节点是否发生脑裂。图6示出了根据本发明实施例的 极限探测算法的流程,如图6所示,本发明实施例提供的极限探测算法,包括:
[0054] 步骤S601 :探测备节点可到达的普通节点。
[0055] 备节点能够到达某个普通节点,说明备节点与该普通节点还能进行通信。
[0056] 步骤S602 :遍历备节点所有可到达的普通节点。
[0057] 通过遍历备节点可到达的所有普通节点,能够使备节点掌握所有与其通信的普通 节点。
[0058] 步骤S603 :获取所有可到达的普通节点的可达节点列表。
[0059] 通过此步骤可以掌握普通节点能与哪些节点进行通信,备节点通过可到达的普通 节点间接的与该普通节点可到达的节点进行通信。
[0060] 步骤S604 :在可达节点列表中搜寻主节点。
[0061] 备节点在可到达的普通节点的可达节点列表中寻找主节点。
[0062] 步骤S605 :判断可达节点列表中是否搜寻到主节点;如果是,执行步骤S606 ;如果 否,执行步骤S607。
[0063] 步骤S606 :主节点未发生脑裂,备节点不接管普通节点。
[0064] 如果备节点在可达节点列表中搜寻到主节点,意味着主节点还能与主节点进行通 信,即主节点与备节点分裂在同一个子集群中,主节点未发生脑裂,此时,在两个子集群中 主节点只有一个,备节点不需要切换为主节点接管普通节点。
[0065] 步骤S607 :判断是否遍历所有可到达的普通节点;如果是,执行步骤S608 ;如果 否,执行步骤S604。
[0066] 步骤S608 :主节点发生脑裂,备节点接管普通节点。
[0067] 如果备节点在可达节点列表中未搜寻到主节点,意味着主节点不能与主节点进行 通信,即主节点和备节点分裂在不同的子集群中,此时,主节点发生脑裂,备节点切换为主 节点接管备节点所在的子集群内的普通节点,主节点所在的子集群内也存在主节点,此时 形成双主节点。
[0068] 具体地,以上述的六个节点形成的集群为例,在主节点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不会对 外提供业务。
[0069] 如果主节点A和普通节点C、D分裂在子集群a中,备节点B和普通节点E、F分裂 在子集群b中,备节点B可到达的普通节点为E、F,备节点B通过普通节点E、F的可达节点 列表搜寻不到主节点A,说明主节点A与备节点B失去联系无法通信,认为主节点A故障,备 节点B切换为子集群b的主节点,此时,子集群a和子集群b成为两个独立的子集群,对于 整体的大集群来说存在两个主节点,主节点A发生了脑裂。
[0070] 上述步骤S601?步骤S608详细地说明了本发明实施例提供的极限探测算法,在 主/备节点之间的心跳断开时,备节点不是盲目的接管主节点资源成为新的主节点,而是 先进行主节点是否发生脑裂的探测,在主节点发生脑裂备节点才接管主节点资源成为新的 主节点,通过备节点与主节点之间的探测可以降低集群分裂时主节点出现脑裂场景的概 率,也可以在主/备节点之间的心跳恢复连接,两个子集群开始融合时,最大限度的降低子 集群的融合时间。
[0071] 步骤S530 :定时检测心跳线恢复情况。
[0072] 定时检测主/备节点间的心跳线的恢复状况。
[0073] 步骤S540 :判断主/备节点间的心跳是否恢复连接;如果是,执行步骤S550 ;如果 否,返回步骤S530。
[0074] 如果主/备节点间的心跳恢复连接,需要对分裂后的两个子集群进行融合,也就 是恢复集群的过程;如果主/备节点间的心跳还未恢复连接,则继续检测,直到主/备节点 间的心跳恢复连接为止。
[0075] 步骤S550 :根据子集群快速融合算法融合子集群,形成新的集群。
[0076] 在主备节点之间心跳恢复连接时,集群分裂形成的两个子集群要融合在一起,形 成新的集群,本发明采用子集群快速融合算法对两个子集群进行融合,但也可以采用其它 的融合算法进行子集群的融合,图7示出了根据本发明实施例的子集群快速融合算法的流 程,如图7所示,本发明实施例提供的子集群快速融合算法,包括:
[0077] 步骤S701 :判断新入网的子集群节点中是否存在主节点;如果是,执行步骤S702 ; 如果否,执行步骤S704。
[0078] 新入网的子集群是指不存在原有主节点的子集群,以子集群a、b为例,集群分裂 后,主节点分裂在子集群a中,新入网的子集群为子集群b,新入网就是指子集群b与子集群 a的融合。
[0079] 步骤S702 :根据仲裁算法重新确定主节点和备节点。
[0080] 如果新入网的子集群节点中存在主节点,说明主节点发生脑裂,由于集群中只能 存在一个主节点,所以两个子集群在融合时需要从两个主节点中重新确定一个作为新的主 节点,另一个作为备节点,本发明根据仲裁算法重新确定主节点和备节点,仲裁算法将在下 文做详细说明。
[0081] 步骤S703 :新的主节点进行主/备节点间的信息融合,之后执行步骤S705。
[0082] 新的主节点从备节点上获取其节点信息列表,并和自身所保存的节点信息列表进 行融合,并向融合后的节点发送主节点变更通知消息,融合后的节点向新的主节点上报信 息,形成新的集群。
[0083] 步骤S704 :节点信息重新保存。
[0084] 新入网的子集群节点中不存在主节点时,说明集群分裂时主节点未发生脑裂,整 个集群仍然存在唯一一个主节点,在这种情况下,新入网的节点重新上报节点信息到主节 点,主节点重新将入网节点保存到节点信息列表中,即可完成子集群融合。
[0085] 步骤S705 :形成新的集群。
[0086] 上述步骤SS701?步骤S705详细说明了本发明实施例提供的子集群快速融合算 法,将子集群中的节点能够按照一定的规则合理的快速的融合,能够最大限度的降低集群 的恢复时间。
[0087] 在主节点脑裂恢复时针对双主节点的情况,本发明采用仲裁算法重新确定主节点 和备节点,仲裁算法主要考虑四个因素的影响,分别是节点NID、节点的剩余的负载状况、节 点上包含的普通节点个数及从心跳断开到恢复期间内的资源变化率,该算法决定了在主节 点脑裂恢复时是否能够快速的重新形成完整主备集群,并且集群能够正常的进行后续的节 点管理等功能。
[0088] 下面将对仲裁算法做详细地说明。
[0089] 首先对仲裁算法中考虑的四个因素做相应的说明:
[0090] (1)节点的NID,节点NID可以由节点的IP转换得出。
[0091] (2)节点的剩余资源状况,用R表示,R越大表明其可承担的工作量越多,选择主节 点时选择剩余资源多的节点作为主节点。
[0092] (3)节点上包含的普通节点个数,可以从节点上存储的nodelist中得出,用N表 示,N越大表明该子集群的节点数越多,子集群所内提供的服务功能越强大,选择主节点时 选择普通节点多的节点作为主节点。
[0093] (4)心跳断开到恢复期间内的资源变化率,其值越大说明资源变化情况越激烈,选 择主节点时选择资源变化率小的节点作为主节点。
[0094] 以上述的子集群a、b为例,主节点A为子集群a中的主节点,主节点B为子集群b 中的主节点,针对集群分裂后,主/备节点分裂在不同的子集群中的情况,在主节点进行脑 裂恢复时,需要对子集群a中的主节点A及子集群b中的主节点B进行仲裁,其中,
[0095] ANm表示主节点A的节点NID ;
[0096] AK表示主节点A的剩余资源状况;
[0097] AN表示主节点A所管理的普通节点个数;
[0098] dRA/dt表示主节点A的资源变化率;
[0099] BNm表示主节点B的节点NID ;
[0100] BK表示主节点B的剩余资源状况;
[0101] BN表示主节点A所管理的普通节点个数;
[0102] dRB/dt表示主节点B的资源变化率。
[0103] 仲裁算法在进行双主仲裁时按照下面的规则进行:

【权利要求】
1. 一种主备集群组网模式下的脑裂发现、恢复方法,包括脑裂发现阶段和脑裂恢复阶 段;其中, 所述脑裂发现阶段,包括: 在集群中的主节点和备节点之间的心跳断开后,所述集群分裂成两个子集群时,探测 所述主节点是否发生脑裂;如果所述主节点未发生脑裂,则所述主节点仍作为所述备节点 所在的子集群的主节点;如果所述主节点发生脑裂,则将所述备节点作为其所在的子集群 的主节点; 所述脑裂恢复阶段,包括: 在所述主节点和所述备节点之间的心跳恢复连接后,所述两个子集群融合形成新的集 群时;如果所述两个子集群存在一个主节点,由所述主节点对另一个子集群中的所有节点 进行管理,形成新的集群;如果所述两个子集群分别存在一个主节点,从两个主节点中重新 确定主节点和备节点,由重新确定的主节点对重新确定的备节点所在的子集群中的所有节 点进行管理,形成新的集群。
2. 如权利要求1所述的主备集群组网模式下的脑裂发现、恢复方法,其中,根据极限探 测算法探测所述主节点是否发生脑裂,探测过程包括: 由所述备节点探测其到达的普通节点,并获取到达的普通节点的节点列表,判断所述 节点列表中是否存在所述主节点,如果存在,所述主节点未发生脑裂;如果不存在,所述主 节点发生脑裂。
3. 如权利要求1所述的主备集群组网模式下的脑裂发现、恢复方法,其中,根据仲裁算 法从两个主节点中重新确定主节点和备节点,其中的仲裁规则包括: AifAe/Be> = 1. 2&&An/Bn> = 0. 8 min(Anid,Bnid)ifAE/BE> = 1. 2&&AN/BN<0. 8&& | (dRA-dRB)/dt| <0. 1BifAe/Be> = 1. 2&&An/Bn<0. 8&&(dRA-dRB)/dt>0. 1 AifAe/Be> = 1. 2&&An/Bn<0. 8&&(dRA-dRB)/dt<-0. 1 BifAe/Be< = 0. 8&&An/Bn< =1.2 min(Anid,Bnid)ifAE/BE< = 0. 8&&AN/BN>1. 2&& | (dRA-dRB)/dt| <0. 1 BifAe/Be< = 0. 8&&An/Bn>1. 2&&(dRA-dRB)/dt>0. 1 AifAe/Be< = 0. 8&&An/Bn>1. 2&&(dRA-dRB)/dt<-0. 1 Bif0. 8<Ae/Be<1. 2&&An/Bn<0. 8 min(ANID,BNID)if0. 8<AE/BE<1. 2&&0. 8< =AN/BN<1. 2 Aif0. 8<Ae/Be<1. 2&&An/Bn> = 1. 2 其中, ANID表示主节点A的节点NID; AK表示主节点A的剩余资源状况; AN表示主节点A所管理的节点个数;dRA/dt表示主节点A的资源变化率; BNID表示主节点B的节点NID; BK表示主节点B的剩余资源状况; BN表示主节点A所管理的普通节点个数; dRB/dt表示主节点B的资源变化率。
4. 一种主备集群组网模式下的脑裂发现、恢复装置,包括: 脑裂探测单元,用于在集群中的主节点和备节点之间的心跳断开后,将所述集群分裂 成两个子集群时,探测所述主节点是否发生脑裂; 主节点确认单元,用于在所述主节点未发生脑裂时,确认所述主节点仍作为所述备节 点所在的子集群的主节点,或在所述主节点发生脑裂时,则将所述备节点作为其所在的子 集群的主节点; 子集群融合单元,用于在所述主节点和所述备节点之间的心跳恢复连接后,融合所述 两个子集群形成新的集群;其中,如果所述两个子集群存在一个主节点,由所述主节点对另 一个子集群中的所有节点进行管理,形成新的集群;如果所述两个子集群分别存在一个主 节点,贝 1J从两个主节点中重新确定主节点和备节点,由重新确定的主节点对重新确定的备 节点所在的子集群中的所有节点进行管理,形成新的集群。
5. 如权利要求4所述的主备集群组网模式下的脑裂发现、恢复装置,其中,所述脑裂探 测单元包括: 节点探测模块,用于探测所述备节点到达的节点; 节点列表获取模块,用于获取所述备节点到达的节点的节点列表; 主节点判断模块,用于判断所述节点列表中是否存在所述主节点,如果存在,所述主节 点未发生脑裂;如果不存在,所述主节点发生脑裂。
6. 如权利要求4所述的主备集群组网模式下的脑裂发现、恢复装置,其中,所述子集群 融合单元根据仲裁算法从两个主节点中重新确定主节点和备节点,其中的仲裁规则包括: AifAe/Be> = 1. 2&&An/Bn> = 0. 8 min(Anid,Bnid)ifAE/BE> = 1. 2&&AN/BN<0. 8&& | (dRA-dRB)/dt| <0. 1BifAe/Be> = 1. 2&&An/Bn<0. 8&&(dRA-dRB)/dt>0. 1 AifAe/Be> = 1. 2&&An/Bn<0. 8&&(dRA-dRB)/dt<-0. 1 BifAe/Be< = 0. 8&&An/Bn< =1.2 min(Anid,Bnid)ifAE/BE< = 0. 8&&AN/BN>1. 2&& | (dRA-dRB)/dt| <0. 1 BifAe/Be< = 0. 8&&An/Bn>1. 2&&(dRA-dRB)/dt>0. 1 AifAe/Be< = 0. 8&&An/Bn>1. 2&&(dRA-dRB)/dt<-0. 1 Bif0. 8<Ae/Be<1. 2&&An/Bn<0. 8 min(ANID,BNID)if0. 8<AE/BE<1. 2&&0. 8< =AN/BN<1. 2 Aif0. 8<Ae/Be<1. 2&&An/Bn> = 1. 2 其中, ANID表示主节点A的节点NID; AK表示主节点A的剩余资源状况; AN表示主节点A所管理的普通节点个数;dRA/dt表示主节点A的资源变化率; BNID表示主节点B的节点NID; BK表示主节点B的剩余资源状况; BN表示主节点A所管理的普通节点个数; dRB/dt表示主节点B的资源变化率。
【文档编号】H04L29/08GK104378232SQ201410632118
【公开日】2015年2月25日 申请日期:2014年11月10日 优先权日:2014年11月10日
【发明者】张珠华, 张霞, 张骞, 杨明 申请人:东软集团股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1