一种集群脑裂的处理方法及装置的制造方法

文档序号:9923890阅读:227来源:国知局
一种集群脑裂的处理方法及装置的制造方法
【技术领域】
[0001]本发明涉及计算机技术领域,特别涉及一种集群脑裂的处理方法及装置。
【背景技术】
[0002]高可用集群技术被广泛的应用于存储技术领域。为了保证高可用集群的正常工作,需要集群内的每个节点在提供对外服务时有正常的活性,从而保证对外提供稳定的服务。
[0003]在集群提供服务的过程中,由于环境的变化,节点可能会发生这样或者那样的故障,如网络阻塞等,而造成节点从集群中断开,出现脑裂现象,导致集群分裂为多个子集群。此时处于子集群中的节点可以相互通信,而与另一个子集群中的节点无法通信。当两个子集群中的节点都仍有权限访问共享资源时,如果不采用相应的防止措施则会导致集群发生脑裂,即分裂后的子集群各自都认为自己对特定的共享资源拥有访问权限,认为其他节点已宕机,自己是“唯一健在者”,子集群可能先后对该共享资源进行相应的读写操作,从而造成数据的不一致。为了使得集群系统能正常运行,往往需要提供相应的仲裁机制来解决集群系统发生脑裂时所引发的这类问题。
[0004]现有技术中,采用选举算法来选出一个多数派子集群接管原集群的所有业务,具体为:集群中各个节点需要心跳机制来通报彼此的“健康状况”,每收到一个节点的“通报”代表一票(心跳数)。对于有η个节点的集群,正常运行时,每个节点都会有η票,发生脑裂后,每个节点只能接受所在小集群的节点通报,只能有m(m〈n)票。如果m〈n/2,则该节点所在集群为少数派集群,该集群中所有节点全部自动停止业务,多数派子集群接管原集群的所有业务。
[0005]但现有技术由于无法有效识别脑裂和存储节点宕机,使用选举算法处理集群脑裂,存在固有缺陷,即应该接管业务的多数派集群可能无实际业务接管能力(宕机),这样少数派集群自动停止业务后,所有节点都停止处理业务。

【发明内容】

[0006]本发明实施例提供了一种集群脑裂的处理方法及装置,避免了直接选出的子集群可能无实际业务处理能力而导致业务中断,增强了故障场景处理的准确性。
[0007]本发明实施例第一方面提供了一种集群脑裂的处理方法,包括:
[0008]当集群内发生网络故障分裂为多个子集群,所述集群内各节点进行仲裁盘抢占时,判断所述多个子集群是否具备业务处理能力,确定出所述子集群中具备业务处理能力的子集群;
[0009]当所述具备业务处理能力的子集群为多个时,确定具备业务处理能力的目标子集群;
[0010]将所述具备业务处理能力的子集群中,除目标子集群外的子集群已抢占的仲裁盘释放,让所述目标子集群发起抢占所有仲裁盘。
[0011]结合本发明实施例的第一方面,在本发明实施例的第一方面的第一种实现方式中,所述判断所述多个子集群是否具备业务处理能力,确定出所述子集群中具备业务处理能力的子集群包括:
[0012]判断所述多个子集群中是否有节点抢占到仲裁盘,确定有节点抢占到仲裁盘的子集群为具备业务处理能力的子集群。
[0013]结合本发明实施例的第一方面,在本发明实施例的第一方面的第二种实现方式中,所述当所述具备业务处理能力的子集群为多个时,确定具备业务处理能力的目标子集群包括:
[0014]当所述具备业务处理能力的子集群为多个时,获取具备业务处理能力的每个子集群中的每个节点接收的心跳票数,确定接收的心跳票数最多的节点所在的子集群为最大子集群;
[0015]判断所述最大子集群是否有多个,若否,则确定所述最大子集群为目标子集群,若是,则根据预置的选择条件,确定目标子集群。
[0016]结合本发明实施例的第一方面的第二种实现方式,在本发明实施例的第一方面的第三种实现方式中,所述根据预置的选择条件,确定目标子集群包括:
[0017]判断所述多个最大子集群中是否只有一个最大子集群中包括预置的设备,若是,则确定该最大子集群为目标子集群。
[0018]结合本发明实施例的第一方面到第一方面的第三种实现方式,在本发明实施例的第一方面的第四种实现方式中,所述方法还包括:
[0019]当所述具备业务处理能力的子集群为一个时,该具备业务处理能力的子集群发起抢占所有仲裁盘。
[0020]本发明实施例的第二方面提供了一种集群脑裂的处理装置,包括:
[0021]确定单元,用于当集群内发生网络故障分裂为多个子集群,所述集群内各节点进行仲裁盘抢占时,判断所述多个子集群是否具备业务处理能力,确定出所述子集群中具备业务处理能力的子集群;
[0022]业务处理单元,用于当所述确定单元确定的具备业务处理能力的子集群为多个时,确定具备业务处理能力的目标子集群,将所述具备业务处理能力的子集群中,除目标子集群外的子集群已抢占的仲裁盘释放,让所述目标子集群发起抢占所有仲裁盘。
[0023]结合本发明实施例的第二方面,在本发明实施例的第二方面的第一种实现方式中,所述判断单元具体用于判断所述多个子集群中是否有节点抢占到仲裁盘,确定有节点抢占到仲裁盘的子集群为具备业务处理能力的子集群。
[0024]结合本发明实施例的第二方面,在本发明实施例的第二方面的第二种实现方式中,所述业务处理单元包括:
[0025]确定模块,用于当所述具备业务处理能力的子集群为多个时,获取具备业务处理能力的每个子集群中的每个节点接收的心跳票数,确定接收的心跳票数最多的节点所在的子集群为最大子集群;
[0026]判断模块,用于判断所述确定模块确定的最大子集群是否有多个,若否,则确定所述最大子集群为目标子集群,若是,则根据预置的选择条件,确定目标子集群。
[0027]结合本发明实施例的第二方面的第二种实现方式,在本发明实施例的第二方面的第三种实现方式中,所述判断模块具体用于判断所述多个最大子集群中是否只有一个最大子集群中包括预置的设备,若是,则确定该最大子集群为目标子集群。
[0028]结合本发明实施例的第二方面到第二方面的第三种实现方式,在本发明实施例的第二方面的第四种实现方式中,所述业务处理单元还用于当所述具备业务处理能力的子集群为一个时,使该具备业务处理能力的子集群发起抢占所有仲裁盘。
[0029]从以上技术方案可以看出,本发明实施例具有以下优点:
[0030]本发明实施例中先通过集群内节点仲裁盘抢占确定集群内具备业务处理能力的子集群,在具备业务处理的子集群中选举出目标子集群发起抢占所有仲裁盘,接管原集群的所有业务,避免了直接选出的子集群可能无实际业务处理能力而导致业务中断,增强了故障场景处理的准确性。
【附图说明】
[0031]图1是本发明实施例中集群脑裂的处理方法的一个实施例示意图;
[0032]图2是本发明实施例中集群脑裂的处理方法的另一个实施例示意图;
[0033]图3是本发明实施例中集群脑裂的处理方法的另一个实施例示意图;
[0034]图4是本发明实施例中集群脑裂的处理装置的一个实施例示意图;
[0035]图5是本发明实施例中集群脑裂的处理装置的另一个实施例示意图;
[0036]图6是本发明实施例中集群脑裂的处理装置的另一个实施例示意图。
【具体实施方式】
[0037]本发明实施例提供了一种集群脑裂的处理方法及装置,避免了直接选出的子集群可能无实际业务处理能力而导致业务中断,增强了故障场景处理的准确性。
[0038]为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分的实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。
[0039]本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等(如果存在)是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的实施例能够以除了在这里图示或描述的内容以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
[0040]请参阅图1,本发明实施例中集群脑裂的处理方法的一个实施例包括:
[0041]101、当集群内发生网络故障分裂为多个子集群,所述集群内各节点进行仲裁盘抢占时,判断所述多个子集群是否具备业务处理能力,确定出所述子集群中具备业务处理能力的子集群;
当前第1页1 2 3 4 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1