一种集群系统中集群成员的仲裁方法及系统与流程

文档序号:17488518发布日期:2019-04-23 20:12阅读:507来源:国知局
一种集群系统中集群成员的仲裁方法及系统与流程

本发明涉及计算机存储技术领域,具体涉及一种集群系统中集群成员的仲裁方法及系统。



背景技术:

集群文件系统作为一种集群系统,在计算机存储领域被广泛应用,它能够为在集群成员部署上的应用提供共享的存储资源。在云计算领域常基于集群文件系统来实现虚拟化应用的动态迁移和高可用等高级功能。集群文件系统最核心的一个技术要点是为各集群成员提供数据视图的一致性服务,即在任何时刻集群成员看到的文件视图都是一样的。但在集群系统的运行过程中,可能由于某些异常情况的发生,例如网络阻塞等,导致整个集群系统被分裂成两个或多个子集群。此时同一个子集群中的成员之间可以相互通信,而两个不同子集群中的成员之间无法通信。当各子集群中的成员仍有权限访问共享资源时,如果不采用相应的保护措施则会导致整个集群系统发生脑裂,即分裂后的子集群成员各自都认为对共享的存储资源拥有访问权限,可能会对同一共享资源分别进行读写操作,致使各成员看到的数据出现不一致的情况。

为了使得集群系统能正常运作,亟需一种集群成员的仲裁机制,及时将非法成员从原集群系统中移除。



技术实现要素:

针对现有技术中存在的缺陷,本发明的目的在于提供一种集群系统中集群成员的仲裁方法及系统,集群成员的仲裁机制,及时仲裁出集群成员的非法成员,有效保护共享资源在集群环境中的一致性和可用性。

为达到以上目的,本发明采取的技术方案是:一种集群系统中集群成员的仲裁方法,包括以下步骤:

向集群系统中引入集群心跳设备,所述集群心跳设备由多个心跳设备组成,集群成员之间周期性的相互通信,且周期性的向各个心跳设备写入心跳信息;

集群成员根据其与多个心跳设备的连接状态判断仲裁其自身是否为非法成员;

当该集群系统发生脑裂时,根据该集群成员与其他集群成员的通信状态、以及所有集群成员在集群心跳设备上的心跳总数,仲裁其自身是否为非法成员;

如果仲裁为非法成员,则该集群成员自动退出集群系统。

在上述技术方案的基础上,集群成员根据其与多个心跳设备的连接状态判断仲裁其自身是否为非法成员,具体包括以下步骤:

将集群系统中的心跳设备总数定义为heartbeatnum,heartbeatnum为奇数;

将与某一集群成员正常连接的心跳设备个数定义为heartbeatconnected;

如果heartbeatconnected大于heartbeatnum/2,则表示该集群成员与心跳设备的连接是正常的;否则该集群成员仲裁为非法成员。

在上述技术方案的基础上,当该集群系统发生脑裂时,根据该集群成员与其他集群成员的通信状态、以及所有集群成员在集群心跳设备上的心跳总数,仲裁其自身是否为非法成员,具体包括以下步骤:

所有集群成员在集群心跳设备上的心跳总数定义为heartbeat,如果集群成员与心跳设备连接正常,则heartbeat数加1;

集群成员仲裁为合法成员需要的最少票数定义为quorum;

与心跳设备连接正常且成员编号最小的集群成员定义为lowest;

集群成员间的网络连接总数定义为connected,如果某集群成员能与另一集群成员进行网络通信,则该集群成员的connected加1;

当发生脑裂时,判断该集群成员的connected是否小于quorum,若是,则该集群成员仲裁为非法成员。

在上述技术方案的基础上,如果当前集群中的heartbeat为奇数,则quorum=(heartbeat+1)/2;如果当前集群中的heartbeat为偶数,则quorum=heartbeat/2。

在上述技术方案的基础上,如果当前集群中的heartbeat为偶数,若该集群成员的connected小于quorum,则该集群成员仲裁为非法成员;如果该集群成员的connected等于quorum,继续判定该集群成员是否与集群成员lowest处于连接状态,如果是,则该集群成员仲裁为合法成员,否则仲裁为非法成员。

本发明还提供一种集群系统,所述集群系统包括多个集群成员和多个心跳设备:

集群成员之间周期性的进行相互通信,且周期性的向各个心跳设备写入心跳信息;

当该集群系统发生脑裂时,集群成员用于:根据其与多个心跳设备的连接状态判断仲裁其自身是否为非法成员;当该集群系统发生脑裂时,根据该集群成员与其他集群成员的通信状态、以及所有集群成员在集群心跳设备上的心跳总数,仲裁其自身是否为非法成员;如果仲裁为非法成员,则该集群成员自动退出集群系统。

在上述技术方案的基础上,所述集群成员具体用于:

将集群系统中的心跳设备总数定义为heartbeatnum,heartbeatnum为奇数;

将与某一集群成员正常连接的心跳设备个数定义为heartbeatconnected;

如果heartbeatconnected大于heartbeatnum/2,则表示该集群成员与心跳设备的连接是正常的;否则该集群成员仲裁为非法成员。

在上述技术方案的基础上,所述集群成员具体用于:

所有集群成员在集群心跳设备上的心跳总数定义为heartbeat,如果集群成员与心跳设备连接正常,则heartbeat数加1;

集群成员仲裁为合法成员需要的最少票数定义为quorum;

与心跳设备连接正常且成员编号最小的集群成员定义为lowest;

集群成员间的网络连接总数定义为connected,如果某集群成员能与另一集群成员进行网络通信,则该集群成员的connected加1;

当发生脑裂时,判断该集群成员的connected是否小于quorum,若是,则该集群成员仲裁为非法成员。

在上述技术方案的基础上,如果当前集群中的heartbeat为奇数,则quorum=(heartbeat+1)/2;如果当前集群中的heartbeat为偶数,则quorum=heartbeat/2。

在上述技术方案的基础上,如果当前集群中的heartbeat为偶数,若该集群成员的connected小于quorum,则该集群成员仲裁为非法成员;如果该集群成员的connected等于quorum,继续判定该集群成员是否与集群成员lowest处于连接状态,如果是,则该集群成员仲裁为合法成员,否则仲裁为非法成员。

与现有技术相比,本发明的优点在于:

本发明向集群系统中引入集群心跳设备;集群成员根据其与多个心跳设备的连接状态判断仲裁其自身是否为非法成员;当该集群系统发生脑裂时,根据该集群成员与其他集群成员的通信状态、以及所有集群成员在集群心跳设备上的心跳总数,仲裁其自身是否为非法成员;如果仲裁为非法成员,则该集群成员自动退出集群系统,及时仲裁出集群成员的非法成员,有效保护共享资源在集群环境中的一致性和可用性。

附图说明

图1为本发明实施例中通过多个心跳设备对单个集群成员的仲裁方式;

图2为本发明实施例中当前集群中的heartbeat为奇数时采用的仲裁方式;

图3为本发明实施例中当前集群中的heartbeat为偶数时采用的仲裁方式。

具体实施方式

以下结合附图及实施例对本发明作进一步详细说明。

实施例1:

参见图1所示,本发明实施例提供一种集群系统中集群成员的仲裁方法,包括以下步骤:

向集群系统中引入集群心跳设备,所述集群心跳设备由多个心跳设备组成,集群成员之间周期性的相互通信,且周期性的向各个心跳设备写入心跳信息;

集群成员根据其与多个心跳设备的连接状态判断仲裁其自身是否为非法成员;

当该集群系统发生脑裂时,根据该集群成员与其他集群成员的通信状态、以及所有集群成员在集群心跳设备上的心跳总数,仲裁其自身是否为非法成员;

如果仲裁为非法成员,则该集群成员自动退出集群系统。

本发明实施例中如果仲裁为非法成员,则该集群成员自动退出集群系统,实现及时仲裁出集群成员的非法成员,有效保护共享资源在集群环境中的一致性和可用性。

作为优选的实施方式,集群成员根据其与多个心跳设备的连接状态判断仲裁其自身是否为非法成员,具体包括以下步骤:

将集群系统中的心跳设备总数定义为heartbeatnum,heartbeatnum为奇数;

将与某一集群成员正常连接的心跳设备个数定义为heartbeatconnected;

如果heartbeatconnected大于heartbeatnum/2,则表示该集群成员与心跳设备的连接是正常的;否则该集群成员仲裁为非法成员。

所有集群成员在集群心跳设备上的心跳总数定义为heartbeat,如果集群成员与心跳设备连接正常,则heartbeat数加1;

集群成员仲裁为合法成员需要的最少票数定义为quorum;

与心跳设备连接正常且成员编号最小的集群成员定义为lowest;

集群成员间的网络连接总数定义为connected,如果某集群成员能与另一集群成员进行网络通信,则该集群成员的connected加1;

参见图2所示,当发生脑裂时,如果当前集群中的heartbeat为奇数,则quorum=(heartbeat+1)/2。如果成员的connected小于quorum,则该成员仲裁为非法成员。

参见图3所示,如果当前集群中的heartbeat为偶数,则quorum=heartbeat/2。如果成员的connected小于quorum,则该成员仲裁为非法成员。如果connected刚好等于quorum,则判定该成员是否与成员lowest处于连接状态,如果是则该成员仲裁为合法成员;否则仲裁为非法成员。

实施例2:

本发明实施例提供一种集群系统,所述集群系统包括多个集群成员和多个心跳设备:

集群成员之间周期性的进行相互通信,且周期性的向各个心跳设备写入心跳信息;

当该集群系统发生脑裂时,集群成员用于:根据其与多个心跳设备的连接状态判断仲裁其自身是否为非法成员;当该集群系统发生脑裂时,根据该集群成员与其他集群成员的通信状态、以及所有集群成员在集群心跳设备上的心跳总数,仲裁其自身是否为非法成员;如果仲裁为非法成员,则该集群成员自动退出集群系统。

本发明实施例中如果仲裁为非法成员,则该集群成员自动退出集群系统,实现及时仲裁出集群成员的非法成员,有效保护共享资源在集群环境中的一致性和可用性。

作为优选的实施方式,集群成员中仲裁过程具体如下:

将集群系统中的心跳设备总数定义为heartbeatnum,heartbeatnum为奇数;

将与某一集群成员正常连接的心跳设备个数定义为heartbeatconnected;

如果heartbeatconnected大于heartbeatnum/2,则表示该集群成员与心跳设备的连接是正常的;否则该集群成员仲裁为非法成员。

所有集群成员在集群心跳设备上的心跳总数定义为heartbeat,如果集群成员与心跳设备连接正常,则heartbeat数加1;

集群成员仲裁为合法成员需要的最少票数定义为quorum;

与心跳设备连接正常且成员编号最小的集群成员定义为lowest;

集群成员间的网络连接总数定义为connected,如果某集群成员能与另一集群成员进行网络通信,则该集群成员的connected加1;

当发生脑裂时,如果当前集群中的heartbeat为奇数,则quorum=(heartbeat+1)/2。如果成员的connected小于quorum,则该成员仲裁为非法成员。

如果当前集群中的heartbeat为偶数,则quorum=heartbeat/2。如果成员的connected小于quorum,则该成员仲裁为非法成员。如果connected刚好等于quorum,则判定该成员是否与成员lowest处于连接状态,如果是则该成员仲裁为合法成员;否则仲裁为非法成员。

本发明不局限于上述实施方式,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也视为本发明的保护范围之内。本说明书中未作详细描述的内容属于本领域专业技术人员公知的现有技术。

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