一种集群投票仲裁方法及系统与流程

文档序号:12491351阅读:244来源:国知局
一种集群投票仲裁方法及系统与流程

本发明涉及集群管理技术领域,特别涉及一种集群投票仲裁方法及系统。



背景技术:

集群是一种包含多台计算机的系统,能够作为一个整体向用户提供一组网络资源。其中,集群中的单个计算机称为集群的节点。高可用性是用来评判集群性能的一个重要指标。高可用集群具有更好的可靠性,应用范围越来越广。

高可用集群的出现是为了使集群的整体服务尽可能可用,从而减少由计算机硬件和软件易错性所带来的损失。如果某个节点失效,它的备援节点将在几秒钟的时间内接管它的职责。现有技术中,高可用集群通常采用投票仲裁机制来保证集群的高可用性,也即从集群中筛选出固定数量的节点,并为这些筛选出来的节点赋予投票仲裁的权利,通过这些具有投票仲裁权利的节点,可以在一定程度上维持集群的高可用性。

然而,在具有投票仲裁权利的节点出现失效故障,并且具有投票仲裁权利的失效节点的总数量超过具有投票仲裁权利的所有节点的一半时,集群将无法进行仲裁,导致无法正常工作,从而有损集群的高可用性。

综上所述可以看出,如何进一步提升集群的高可用性是目前有待解决的问题。



技术实现要素:

有鉴于此,本发明的目的在于提供一种集群投票仲裁方法及系统,进一步提升了集群的高可用性。其具体方案如下:

一种集群投票仲裁方法,包括:

根据预先设置的初始投票节点数量,从集群中筛选出相应数量的节点,并为筛选出的节点赋予投票仲裁权利;

对所述集群进行实时监测;

若监测到所述集群中具有投票仲裁权利的节点出现失效故障,则将出现失效故障的节点从所述集群中剔除,并取消出现失效故障的节点的投票仲裁权利,然后对当前具有投票仲裁权利的节点的数量进行相应更新。

可选的,所述对所述集群进行实时监测的过程,包括:

对所述集群中具有投票仲裁权利的节点进行监测;

若监测到任一具有投票仲裁权利的节点处于失效状态,并且失效状态持续时间段大于预设时长,则判定该节点出现失效故障。

可选的,所述对所述集群进行实时监测的过程,还包括:

对所述集群是否出现脑裂现象进行监测。

可选的,所述集群投票仲裁方法,还包括:

若监测到所述集群出现脑裂现象,则从当前所有脑裂子集群中筛选一个脑裂子集群,得到目标子集群;

将未被筛选的脑裂子集群从所述集群中剔除,并控制所述目标子集群中具有投票仲裁权利的节点继续保留投票仲裁权利,然后对当前具有投票仲裁权利的节点的数量进行相应更新。

可选的,所述从当前所有脑裂子集群中筛选一个脑裂子集群的过程,包括:

从当前所有脑裂子集群中筛选出具有最小节点ID或最大节点ID的一个脑裂子集群。

可选的,所述从当前所有脑裂子集群中筛选一个脑裂子集群的过程,包括:

从当前所有脑裂子集群中筛选出节点数量最大的一个脑裂子集群。

本发明还公开了一种集群投票仲裁系统,包括:

投票权利初始化模块,用于根据预先设置的初始投票节点数量,从集群中筛选出相应数量的节点,并为筛选出的节点赋予投票仲裁权利;

集群监测模块,用于对所述集群进行实时监测;

第一节点管理模块,用于当所述集群监测模块监测到所述集群中具有投票仲裁权利的节点出现失效故障,则将出现失效故障的节点从所述集群中剔除,并取消出现失效故障的节点的投票仲裁权利,然后对当前具有投票仲裁权利的节点的数量进行相应更新。

可选的,所述集群监测模块,包括:

第一监测单元,用于对所述集群中具有投票仲裁权利的节点进行监测;

失效判定单元,用于当所述第一监测单元监测到任一具有投票仲裁权利的节点处于失效状态,并且失效状态持续时间段大于预设时长,则判定该节点出现失效故障。

可选的,所述集群监测模块,还包括:

第二监测单元,用于对所述集群是否出现脑裂现象进行监测。

可选的,所述集群投票仲裁系统,还包括:

子集群筛选模块,用于当所述第二监测单元监测到所述集群出现脑裂现象,则从当前所有脑裂子集群中筛选一个脑裂子集群,得到目标子集群;

第二节点管理模块,用于将未被筛选的脑裂子集群从所述集群中剔除,并控制所述目标子集群中具有投票仲裁权利的节点继续保留投票仲裁权利,然后对当前具有投票仲裁权利的节点的数量进行相应更新。

本发明中,集群投票仲裁方法,包括:根据预先设置的初始投票节点数量,从集群中筛选出相应数量的节点,并为筛选出的节点赋予投票仲裁权利;对集群进行实时监测;若监测到集群中具有投票仲裁权利的节点出现失效故障,则将出现失效故障的节点从集群中剔除,并取消出现失效故障的节点的投票仲裁权利,然后对当前具有投票仲裁权利的节点的数量进行相应更新。

可见,本发明在原本具有投票仲裁权利的节点失效之后,会将其进行剔除处理,并取消它的投票仲裁权利,然后更新当前具有投票仲裁权利的节点的数量,也即,本发明中具有投票仲裁权利的节点数量是随着投票节点的失效而动态更新的,并且原本具有投票仲裁权利的节点失效之后,将会取消该节点的投票仲裁权利,这样,在集群中的具有投票仲裁权利的节点的数量大于2时,均不会再出现失效节点的总数量超过具有投票仲裁权利的所有节点的一半的情形,从而确保集群能够在大部分情形下均能进行仲裁。综上,本发明进一步提升了集群的高可用性。

附图说明

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

图1为本发明实施例公开的一种集群投票仲裁方法流程图;

图2为本发明实施例公开的一种集群投票仲裁系统结构示意图。

具体实施方式

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

本发明实施例公开了一种集群投票仲裁方法,参见图1所示,包括:

步骤S11:根据预先设置的初始投票节点数量,从集群中筛选出相应数量的节点,并为筛选出的节点赋予投票仲裁权利。

本实施例中,上述初始投票节点数量具体可以由用户根据实际情况进行具体设定,当然也可以由后台系统默认设定,并且,上述初始投票节点数量通常可设为奇数个,在此不对其具体数值进行具体限定。

步骤S12:对集群进行实时监测。

本实施例中,上述对集群进行实时监测的过程,具体可以包括:

对集群中具有投票仲裁权利的节点进行监测,若监测到任一具有投票仲裁权利的节点处于失效状态,并且失效状态持续时间段大于预设时长,则判定该节点出现失效故障。

可以理解的是,上述预设时长可以由用户根据实际经验进行具体设定,也可以由后台系统进行默认设定。

当然,除了监测具有投票仲裁权利的节点是否处于失效状态,上述对集群进行实时监测的过程,还可以进一步包括:对集群是否出现脑裂现象进行监测。

步骤S13:若监测到集群中具有投票仲裁权利的节点出现失效故障,则将出现失效故障的节点从集群中剔除,并取消出现失效故障的节点的投票仲裁权利,然后对当前具有投票仲裁权利的节点的数量进行相应更新。

例如,假设集群中一共包括100个节点,这100个节点当中包括9个具有投票仲裁权利的节点,此时集群中投票节点数量为9个。当监测到该集群中有2个具有投票仲裁权利的节点出现失效故障,则将这2个节点从上述100个节点当中剔除,并取消这2个节点原有的投票仲裁权利,然后对集群中投票节点数量进行动态更新,更新后的投票节点数量为7个。而对于现有的投票仲裁机制,当上述2个节点发生失效故障之后,集群中的投票节点数据量依然是9个,这样会导致当集群中出现失效故障的投票节点的数量超过原有数量的一半之后,集群将无法进行仲裁,从而无法进行正常工作。

需要进一步指出的是,当原本具有投票仲裁权利的节点失效并重新恢复正常之后,本实施例可以将其自动添加入集群中,并且重新将投票仲裁权利赋予给上述恢复正常的节点,然后对当前具有投票仲裁权利的节点的数量进行相应更新。

可见,本发明实施例在原本具有投票仲裁权利的节点失效之后,会将其进行剔除处理,并取消它的投票仲裁权利,然后更新当前具有投票仲裁权利的节点的数量,也即,本发明实施例中具有投票仲裁权利的节点数量是随着投票节点的失效而动态更新的,并且原本具有投票仲裁权利的节点失效之后,将会取消该节点的投票仲裁权利,这样,在集群中的具有投票仲裁权利的节点的数量大于2时,均不会再出现失效节点的总数量超过具有投票仲裁权利的所有节点的一半的情形,从而确保集群能够在大部分情形下均能进行仲裁。综上,本发明实施例进一步提升了集群的高可用性。

本发明实施例公开了一种具体的集群投票仲裁方法,包括如下步骤:

步骤S21:根据预先设置的初始投票节点数量,从集群中筛选出相应数量的节点,并为筛选出的节点赋予投票仲裁权利。

步骤S22:对集群进行实时监测。

步骤S23:若监测到集群中具有投票仲裁权利的节点出现失效故障,则将出现失效故障的节点从集群中剔除,并取消出现失效故障的节点的投票仲裁权利,然后对当前具有投票仲裁权利的节点的数量进行相应更新。

具体的,对于一个有m个节点的高可用集群,可使用参数expected_votes指定其参与投票节点个数为n(其中m>=n)。当其中某个节点失效后并且超过一定的时间,集群当前参与投票的节点数自动调整为n-1。此时做事务仲裁时所需票数大于(n-1)/2+1即可进行仲裁。在有更多的节点失效时,上述过程可以重复直到n=2。

步骤S24:若监测到集群出现脑裂现象,则从当前所有脑裂子集群中筛选一个脑裂子集群,得到目标子集群,然后将未被筛选的脑裂子集群从集群中剔除,并控制目标子集群中具有投票仲裁权利的节点继续保留投票仲裁权利,然后对当前具有投票仲裁权利的节点的数量进行相应更新。

具体的,上述从当前所有脑裂子集群中筛选一个脑裂子集群的过程,可以包括:从当前所有脑裂子集群中筛选出具有最小节点ID或最大节点ID的一个脑裂子集群。

除了以节点ID的大小作为筛选依据,本实施例还可以节点数量作为筛选依据。具体的,上述从当前所有脑裂子集群中筛选一个脑裂子集群的过程,也可以包括:从当前所有脑裂子集群中筛选出节点数量最大的一个脑裂子集群。

具体的,对于一个有m个节点的高可用集群,可用参数expected_votes指定其参与投票节点个数为n(其中m>=n),通过tie_breaker_node指定继承投票权利的节点为low_node。当集群发生脑裂时,每个脑裂部分获得的投票数不足以仲裁,此时由low_node的部分继承投票权利。此处理过程支持当前投票节点数n=2时发生脑裂,只剩一个节点仍然可以进行仲裁。

相应的,本发明实施例还公开了一种集群投票仲裁系统,参见图2所示,该系统包括:

投票权利初始化模块11,用于根据预先设置的初始投票节点数量,从集群中筛选出相应数量的节点,并为筛选出的节点赋予投票仲裁权利;

集群监测模块12,用于对集群进行实时监测;

第一节点管理模块13,用于当集群监测模块12监测到集群中具有投票仲裁权利的节点出现失效故障,则将出现失效故障的节点从集群中剔除,并取消出现失效故障的节点的投票仲裁权利,然后对当前具有投票仲裁权利的节点的数量进行相应更新。

具体的,上述集群监测模块,可以包括第一监测单元和失效判定单元;其中,

第一监测单元,用于对集群中具有投票仲裁权利的节点进行监测;

失效判定单元,用于当第一监测单元监测到任一具有投票仲裁权利的节点处于失效状态,并且失效状态持续时间段大于预设时长,则判定该节点出现失效故障。

进一步的,上述集群监测模块,还可以包括:

第二监测单元,用于对集群是否出现脑裂现象进行监测。

本实施例中,上述集群投票仲裁系统,还可以进一步包括子集群筛选模块和第二节点管理模块;其中,

子集群筛选模块,用于当第二监测单元监测到集群出现脑裂现象,则从当前所有脑裂子集群中筛选一个脑裂子集群,得到目标子集群;

第二节点管理模块,用于将未被筛选的脑裂子集群从集群中剔除,并控制目标子集群中具有投票仲裁权利的节点继续保留投票仲裁权利,然后对当前具有投票仲裁权利的节点的数量进行相应更新。

其中,关于上述各个模块更加具体的工作过程可以参考前述实施例中公开的相应内容,在此不再进行赘述。

可见,本发明实施例在原本具有投票仲裁权利的节点失效之后,会将其进行剔除处理,并取消它的投票仲裁权利,然后更新当前具有投票仲裁权利的节点的数量,也即,本发明实施例中具有投票仲裁权利的节点数量是随着投票节点的失效而动态更新的,并且原本具有投票仲裁权利的节点失效之后,将会取消该节点的投票仲裁权利,这样,在集群中的具有投票仲裁权利的节点的数量大于2时,均不会再出现失效节点的总数量超过具有投票仲裁权利的所有节点的一半的情形,从而确保集群能够在大部分情形下均能进行仲裁。综上,本发明实施例进一步提升了集群的高可用性。

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

以上对本发明所提供的一种集群投票仲裁方法及系统进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。

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