节点选举方法及装置与流程

文档序号:13449922阅读:294来源:国知局
节点选举方法及装置与流程

本公开涉及集群节点管理技术领域,尤其涉及一种节点选举方法及装置。



背景技术:

脑裂是指主从模式的集群中由部分网络失效导致原集群分裂为多个新集群,多个新集群的主节点分别接管服务并且写操作共享数据的情况。当多个新集群的主节点分别对共享数据进行不同的写操作时,会导致集群的数据不一致,造成集群数据损坏。

相关技术中,可以通过引入额外的仲裁网络,添加冗余心跳线,来增加集群之间的同步可靠性,减少脑裂发生的概率。或者共享资源锁,当出现脑裂,多个主节点试图同时写操作共享数据时,可以通过资源锁对共享数据进行保护,仅允许一个主节点操作数据,避免数据不一致。

然而,仲裁网络、冗余心跳线的引入需要引入新的软硬件设备,增加了服务器集群的部署复杂度,且不利于维护。同样的,共享资源锁的实现,和特定的软硬件设备相关,不利于维护。



技术实现要素:

有鉴于此,本公开提出了一种节点选举方法及装置,能够在不增加硬件的前提下,提高集群的可靠性。

根据本公开的一方面,提供了一种节点选举方法,所述方法应用于集群中的任一从节点,所述集群中的节点分别通过业务网络和bmc管理网络连接,所述方法包括:检测到与原主节点之间的业务链路断开;通过bmc管理网络查询所述集群中是否存在主节点;若所述集群中存在主节点,则保持从模式,并通过bmc管理网络与所述主节点交互保活报文;若所述集群中不存在主节点,则切换到选举状态,以选举新的主节点。

根据本公开的另一方面,提供了一种节点选举装置,所述装置应用于集群中的任一从节点,所述集群中的节点分别通过业务网络和bmc管理网络连接,所述装置包括:检测模块,用于检测到与原主节点之间的业务链路断开;查询模块,用于通过bmc管理网络查询所述集群中是否存在主节点;保持模块,用于当所述集群中存在主节点时,保持从模式,并通过bmc管理网络与所述主节点交互保活报文;切换模块,用于当所述集群中不存在主节点,切换到选举状态,以选举新的主节点。

检测到与原主节点之间的业务链路断开后,本节点通过bmc管理网络查询集群中是否存在主节点;若存在主节点,则本节点保持从模式,并通过bmc管理网络与所述主节点交互保活报文;若不存在主节点,则本节点切换到选举状态,以选举新的主节点,根据本公开的各方面的节点选举方法及装置能够利用现有的bmc管理网络为集群提供额外的网络监控,在不增加硬件的前提下,保证原集群所有节点中只有一个主节点产生,从而提高集群数据的可靠性。

根据下面参考附图对示例性实施例的详细说明,本公开的其它特征及方面将变得清楚。

附图说明

包含在说明书中并且构成说明书的一部分的附图与说明书一起示出了本公开的示例性实施例、特征和方面,并且用于解释本公开的原理。

图1示出根据本公开一实施例的节点选举方法的流程图;

图2示出根据本公开一实施例的集群的网络连接示意图;

图3示出根据本公开一实施例的节点选举方法的流程图;

图4示出根据本公开一实施例的节点选举方法的流程图;

图5示出根据本公开一实施例的节点选举装置的框图;

图6示出根据本公开一实施例的节点选举装置的框图。

具体实施方式

以下将参考附图详细说明本公开的各种示例性实施例、特征和方面。附图中相同的附图标记表示功能相同或相似的元件。尽管在附图中示出了实施例的各种方面,但是除非特别指出,不必按比例绘制附图。

在这里专用的词“示例性”意为“用作例子、实施例或说明性”。这里作为“示例性”所说明的任何实施例不必解释为优于或好于其它实施例。

另外,为了更好的说明本公开,在下文的具体实施方式中给出了众多的具体细节。本领域技术人员应当理解,没有某些具体细节,本公开同样可以实施。在一些实例中,对于本领域技术人员熟知的方法、手段、元件和电路未作详细描述,以便于凸显本公开的主旨。

图1示出根据本公开一实施例的节点选举方法的流程图。图2示出了一种集群的网络连接示意图。如图2所示,服务器1至服务器9表示集群中的节点,集群中的节点分别通过业务网络和bmc(baseboardmanagementcontroller,基板管理控制器)管理网络连接,其中,服务器1、服务器2和服务器3位于机房a,服务器4和服务器5位于机房b,服务器6至服务器9位于机房c,服务器1为集群的主节点。图1所示的节点选举方法可以应用于图2所示的集群中的任一从节点。如图1所示,该节点选举方法包括:

步骤s11,检测到与原主节点之间的业务链路断开。

集群形成后,业务链路故障等原因可以导致集群的节点之间不能连通,使集群分裂为多个子集群。为了防止集群分裂,需要及时检测到业务链路的故障并进行后续相应的处理。

集群中的从节点可以通过周期性的发送保活报文检测与主节点的连通性。节点意外断电、死机、崩溃、重启,中间网络中断(业务链路故障)等都会造成节点之间不连通。在集群中,如果主节点意外断电、死机、崩溃、重启,会触发集群中主节点重选,而不会引起集群脑裂。因此,在本公开实施例中,当探测到与主节点不连通时,需要进一步探测与主节点之间的业务网络连通性是否正常,即与主节点之间的业务链路是否断开。在一个示例中,可以通过ping命令、发送协议报文等探测业务网络连通性,本实施例对探测业务网络连通性的方式不作限定。

步骤s12,通过bmc管理网络查询所述集群中是否存在主节点,若所述集群中存在主节点,则执行步骤s13;否则,执行步骤s14。

ipmi(intelligentplatformmanagementinterface,智能平台管理接口)是一项应用于服务器管理系统设计的标准,为节点服务器提供了一套带外的智能管理系统,可以通过独立于主机系统的bmc管理节点服务器内部的电源、风扇、温度传感器等硬件设备。bmc管理网络与节点服务器的业务网络物理隔离。bmc管理网络独立供电,业务种类的规模单一,具有较高的可靠性。

由于bmc管理网络与业务网络物理隔离,因此本节点与原主节点之间的业务链路断开时,本节点和原主节点之间的bmc管理网络不受业务网络断开的影响,仍是连通的。因此,在本节点与原主节点之间的业务网络链路断开的情况下,本节点可以通过bmc管理网络确定集群中是否存在主节点。

在一种可能的实现方式中,节点可通过本地bmc模块与其他节点的bmc模块进行通信,查询集群中是否存在主节点:节点通过本地bmc模块向其他节点的bmc模块发送查询请求;其他节点的bmc模块收到查询请求后通过与所在节点的业务模块(对应于业务网络)进行交互确定所在节点是否为主节点。

步骤s13,保持从模式,并通过bmc管理网络与所述主节点交互保活报文。

当存在主节点时,本节点保持从模式不变,同时可以通过bmc管理网络向该主节点发送保活报文。

当从节点与原主节点之间的业务链路断开后,原业务网络被分割成了多个子业务网络。在一个示例中,如图2所示,原业务网络被分割成了两个子业务网络(例如,服务器1、服务器2、服务器3、服务器6、服务器7、服务器8和服务器9组成一个子业务网络,服务器4和服务器5组成了一个子业务网络),按照相关技术的集群脑裂的方案,由于部分节点之间无法连通而导致各个子业务网络内部会重新进行主节点选举。而本公开实施例中,原本和原主节点之间断开连接的节点(例如节点4和节点5)可以和该查询到的主节点之间通过保活报文探测到对方的存在,即与原主节点业务链路断开的节点和该查询到的主节点之间通过bmc网络“连通”(此处的连通仅指交互保活报文,而不交互业务数据),如此在集群中存在一个主节点即可,可以避免在业务网络不连通的多个子业务网络内部分别进行主节点的选举。

步骤s14,切换到选举状态,以选举新的主节点。

当不存在主节点时,本节点切换到选举状态,以选举出新的主节点对集群进行管理。

检测到与原主节点之间的业务链路断开后,本节点通过bmc管理网络查询集群中是否存在主节点;若存在主节点,则本节点保持从模式,并通过bmc管理网络与所述主节点交互保活报文;若不存在主节点,则本节点切换到选举状态,以选举新的主节点,根据本公开的实施例的节点选举方法能够利用现有的bmc管理网络为集群提供额外的网络监控,在不增加硬件的前提下,保证原集群所有节点中只有一个主节点产生,从而提高集群数据的可靠性。

图3示出根据本公开一实施例的节点选举方法的流程图。在一种可能的实现方式中,如图3所示,步骤s14切换到选举状态,以选举新的主节点可以实现为步骤s141和步骤s142:

步骤s141,通过bmc管理网络或业务网络与集群中的其他节点交互选举信息。

其中,所述选举信息携带有本节点与原主节点之间的距离,以及与本节点同属一个子业务网络的节点的信息,所述本节点与原主节点之间的距离为所述业务网络中本节点与原主节点之间的路由跳数。

需要指出的是,在节点间在交互选举信息时,优先通过业务网络,例如子业务网络内部的节点之间;如果业务网络不通,则通过bmc管理网络,例如,不同子业务网络的节点之间。

步骤s142,根据所述选举信息,若满足如下条件则本节点当选为新的主节点:本节点所属子业务网络的参选权值最大、且在所属子业务网络中本节点与原主节点之间的距离最短。

其中,参选权值用于评价子业务网络的可靠性,参选权值较大的子业务网络的可靠性较高,因此根据本公开实施例的节点选举方法通过在参选权值最大的子业务网络中选举新的主节点,并将参选权值最大的子业务网络中与原主节点之间的距离最短的节点选为新的主节点,可以提高集群的可靠性。

当集群中不存在主节点时,集群中所有的从节点都会感知到,此时,所有的从节点之间可以交互选举信息,例如,自身与原主节点之间的距离,在一种可能的实现方式中,可以将业务链路断开前,集群中节点与原主节点之间的路由跳数作为节点到原主节点的距离。在一个示例中,集群中节点与原主节点之间的路由跳数可以通过traceroute命令获取。

同一个子业务网络内部的节点之间可以通过保活报文探测到对方的存在,如此,同一个子业务网络内的节点可以获知与自身在业务网络连通的节点有哪些。在一个实施例中,节点之间交互选举信息时,选举信息中还可以携带与自身同属一个子业务网络的节点的信息。

如此,在每个参与选举的节点上都可以维护这样一组信息:集群中每个节点与原主节点之间的距离,每个节点所在的子业务网络中的其他节点的信息。

在一个实施例中,将参选权值最大的子业务网络确定为新的主节点所在的子业务网络。

参选权值的计算如下:子业务网络sx∈(i...j)={si,...,sj}的参选权值vp可以通过以下公式得到:vp=∑x∈(i...j)(1/rx)。

其中,sx为子业务网络中的节点,rx为节点sx到原主节点的距离。其中,处于同一二层网络的服务器之间的连接不通过路由器,其路由跳数可以作为最小值,例如1。

在一个示例中,如图2所示,假设原主节点为服务器1,业务链路断开导致原业务网络分裂为两个子业务网络,第一子业务网络包括服务器1、服务器2和服务器3,以及服务器6至服务器9,第二子业务网络包括服务器4和服务器5。其中,r2、r3均为1,r4、r5均为3,r6、r7、r8、r9均为5。服务器2和服务器3距离原主节点的距离最近,第一子业务网络参选权值为v1=1/r2+1/r3+1/r6+1/r7+1/r8+1/r9=2.8,第二子业务网络的参选权值为v2=1/r4+1/r5=0.67。则第一子业务网络的参选权值最大。

当然,节点之间交互的选举信息中还可以携带本节点所属子业务网络的参选权值。

在一个实施例中,可以在参选权值最大的子业务网络中选举距离原主节点距离最近的节点作为新的主节点。例如,服务器2和服务器3距离原主节点服务器1最近,遵循集群只能有一个主节点的原则,可以根据服务器2和服务器3的其他信息,例如ip地址,选择ip地址较小的节点作为主节点。

在一个实施例中,节点之间交互选举信息时,选举信息中还可以携带自身所在的机房的信息。

这样在确定了参选权值最大的子业务网络之后,还可以进一步的确定该子业务网络中同属一个机房的节点,进而确定参选权值最大的机房,将参选权值最大的机房作为主节点所属的机房。

例如,图2中,第一子业务网络中的节点归属于2个机房,机房a包括服务器1、服务器2和服务器3,机房c包括服务器6至服务器9,则机房a的参选权值为va=1/r2+1/r3=2,vc=1/r6+1/r7+1/r8+1/r9=0.8。则机房a的参选权值最大。

在一个实施例中,可以在参选权值最大的机房中选举距离原主节点距离最近的节点作为新的主节点。例如,机房a中服务器2和服务器3距离原主节点服务器1最近,遵循集群只能有一个主节点的原则,可以根据服务器2和服务器3的其他信息,例如ip地址,选择ip地址较小的节点作为主节点。

选举出新的主节点后,参与选举的节点中,被选举为新的主节点的节点切换到主模式,其他节点切换到从模式。

需要说明的是,步骤s141和步骤s142还可以在原主节点意外断电、死机、崩溃、重启或者切换到选举状态的情况下执行。在一种可能的实现方式中,当原主节点的可靠性较低(例如,感知到的从节点的数量较少,如少于原集群节点数量的一半)时,原主节点可能会切换到选举状态,以触发新的主节点的选举。

图4示出根据本公开一实施例的节点选举方法的流程图。如图4所示,该节点选举方法还包括步骤s15和步骤s16中的一者或两者。

步骤s15,在本节点切换到主模式的情况下,通过bmc管理网络获取无效节点的业务ip地址,并将所述业务ip地址加入黑名单,所述无效节点为与本节点属于不同子业务网络的节点。

步骤s16,在本节点切换到主模式的情况下,通过bmc管理网络对无效节点进行下电操作。

若本节点切换到主模式,则本节点成为了集群的新的主节点。

在一种可能的实现方式中,本节点可以通过将其他子业务网络中的节点的业务ip地址加入黑名单,并对共享资源设备(例如:交换机设备)刷新黑名单ip地址,以便于共享资源拒绝黑名单中的ip地址对应的节点发送的操作请求,从而进一步提高集群的可靠性。

在一种可能的实现方式中,本节点可以通过对其他子业务网络中的节点进行下电操作,从而将该节点推出集群,从而减少不必要的资源消耗。

在一种可能的实现方式中,在步骤s141、步骤s15和步骤s16中,本节点可以通过本地bmc模块与其他节点的bmc模块进行通信,交互选举信息、获取无效节点的ip地址,以及对无效节点进行下电操作。该过程与步骤s12中查询集群中是否存在主节点的过程一致,这里不再赘述。

需要说明的是,步骤s11至步骤s16中涉及的bmc模块的计算量及代码量较小,可以通过一般的服务器的bmc芯片实现。

图5示出根据本公开一实施例的节点选举装置60的框图。该装置60可以应用于集群中的任一从节点,所述集群中的节点分别通过业务网络和bmc管理网络连接。如图5所示,该装置60包括:

检测模块61,用于检测到与原主节点之间的业务链路断开。

查询模块62,用于通过bmc管理网络查询所述集群中是否存在主节点。

保持模块63,用于当所述集群中存在主节点时,保持从模式,并通过bmc管理网络与所述主节点交互保活报文。

切换模块64,用于当所述集群中不存在主节点,切换到选举状态,以选举新的主节点。

图6示出根据本公开一实施例的节点选举装置60的框图。在一种可能的实现方式中,如图6所示,所述切换模块64包括:

获取单元641,用于通过bmc管理网络或业务网络与集群中的其他节点交互选举信息。

选举单元642,用于根据所述选举信息,若满足如下条件则本节点当选为新的主节点:本节点所属子业务网络的参选权值最大、且在所属子业务网络中本节点与原主节点之间的距离最短。

在一种可能的实现方式中,所述选举信息携带有本节点与原主节点之间的距离,以及与本节点同属一个子业务网络的节点的信息;所述本节点与原主节点之间的距离为在所述业务网络中本节点与原主节点之间的路由跳数;子业务网络sx∈(i...j)={si,...,sj}的参选权值vp的计算公式为vp=∑x∈(i...j)(1/rx),其中,sx为子业务网络中的节点,rx为节点sx到原主节点的距离。

在一种可能的实现方式中,所述装置60还包括:

获取模块65,用于当本节点切换到主模式时,通过bmc管理网络获取无效节点的业务ip地址,并将所述业务ip地址加入黑名单,所述无效节点为与本节点属于不同子业务网络的节点。

在一种可能的实现方式中,所述装置60还包括:

下电模块66,用于当本节点切换到主模式时,通过bmc管理网络对无效节点进行下电操作。

以上已经描述了本公开的各实施例,上述说明是示例性的,并非穷尽性的,并且也不限于所披露的各实施例。在不偏离所说明的各实施例的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。本文中所用术语的选择,旨在最好地解释各实施例的原理、实际应用或对市场中的技术的技术改进,或者使本技术领域的其它普通技术人员能理解本文披露的各实施例。

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