集群节点统计方法及装置与流程

文档序号:12829292阅读:274来源:国知局
集群节点统计方法及装置与流程

本申请涉及通信技术领域,尤其涉及一种集群节点统计方法及装置。



背景技术:

corosync是一种集群管理工具,集群中的每个节点上均配置有corosync,以用于感知网络拓扑的变化(例如,节点的加入、离线等)。然而对于大规模集群,corosync支持的节点数量是有限的。对于一个集群,corosync通常允许最多只能接入32个节点,并且,此时corosync在节点上感知网络拓扑变化已存在压力。因此,现有的corosync并不适用于大规模业务场景。



技术实现要素:

有鉴于此,本申请提供一种集群节点统计方法及装置,以解决现有方式不适用于大规模的集群场景的问题。

根据本申请实施例的第一方面,提供一种集群节点统计方法,所述方法应用于集群中的中心节点,所述集群包括至少一个环,且所述中心节点位于每个环中,所述方法包括:

在接收到来自普通节点的加入消息时,根据所述加入消息确定所述普通节点加入的环,并查询所述环对应的成员列表中是否存在所述普通节点的节点标识;

若否,则将所述普通节点的节点标识添加到所述环对应的成员列表;

在确定所述环达到稳定状态时,获取每个环对应的成员列表中的节点标识,并将获取到的节点标识添加到集群状态消息,并将所述集群状态消息发送至管理设备。

根据本申请实施例的第二方面,提供一种集群节点统计装置,所述装置应用于集群中的中心节点,所述集群包括至少一个环,且所述中心节点位于每个环中,所述装置包括:

确定单元,用于在接收到来自普通节点的加入消息时,根据所述加入消息确定所述普通节点加入的环;

查询单元,用于查询所述环对应的成员列表中是否存在所述普通节点的节点标识;

添加单元,用于当查询结果为否时,将所述普通节点的节点标识添加到所述环对应的成员列表;

发送单元,用于在确定所述环达到稳定状态时,获取每个环对应的成员列表中的节点标识,并将获取到的节点标识添加到集群状态消息,并将所述集群状态消息发送至管理设备。

应用本申请实施例,本申请中的集群包括至少一个环,且集群中设置有位于每个环的中心节点,该中心节点在接收到来自普通节点的加入消息时,可以根据该加入消息确定普通节点加入的环,并查询该环对应的成员列表中是否存在该普通节点的节点标识;若否,则将该普通节点的节点标识添加到该环对应的成员列表;在确定所述环达到稳定状态时,获取每个环对应的成员列表中的节点标识,并将获取到的节点标识添加到集群状态消息,并将该集群状态消息发送至管理设备。基于上述实现方式,通过在环中增加普通节点的方式可以实现对集群的扩展,从而满足大规模业务场景的应用需求。此外,由于集群中设置的中心节点位于每个环中,因此针对每个环,在有新的普通节点加入时,通过中心节点可以感知到新加入的普通节点,从而可以实现对整个集群中存在普通节点的统计。

附图说明

图1为本申请根据一示例性实施例示出的一种集群结构图;

图2为本申请根据一示例性实施例示出的一种集群节点统计方法的实施例流程图;

图3为本申请根据一示例性实施例示出的一种中心节点的硬件结构图;

图4为本申请根据一示例性实施例示出的一种集群节点统计装置的实施例结构图。

具体实施方式

这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本申请相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本申请的一些方面相一致的装置和方法的例子。

在本申请使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本申请。在本申请和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。

应当理解,尽管在本申请可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本申请范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。

图1为本申请根据一示例性实施例示出的一种集群结构图,图1所示的集群包括中心节点(设备1、设备2以及设备3)、2个环(环0和环1)以及交换机,且中心节点位于每个环中,其中,环0包括中心节点、普通节点1、普通节点2以及普通节点3,且环0中普通节点1、普通节点2以及普通节点3的ip地址均属于同一网段,每个普通节点之间可以通过交换机进行相互通信;环1包括中心节点、普通节点4、普通节点5以及普通节点6,且环1中普通节点4、普通节点5以及普通节点6的ip地址均属于同一网段,每个普通节点之间可以通过交换机进行相互通信,中心节点上配置有两个ip地址,一个ip地址属于环0所在的网段,以用于与环0中的每个普通节点通过交换机相互通信,另一个ip地址属于环1所在的网段,以用于与环1中的每个普通节点通过交换机相互通信。本领域技术人员可以理解的是,图1所示的中心节点由三台设备组成仅为示例性说明而非限制,其中,每台设备可以是一个环的中心节点,并且每台设备可以互为备份;一台设备也可以是多个环的中心节点,其它两台设备作为备份设备。由多台设备组成的中心节点,在其中一台设备出现故障时,另一台设备可以接管出故障设备的工作,从而保证了集群的正常的运行。此外,集群中的每个节点(包括普通节点和中心节点)上可以配置corosync,以用于感知网络拓扑的变化,由于corosync具有多环特性,因此通过中心节点上配置的corosync可以感知环0和环1中普通节点的加入和离线。

需要说明的是,环0与环1所在的网段可以属于同一网段,也可以属于不同的网段,并且环0中的每个节点与环1中的每个节点可以位于不同的vlan(virtuallocalareanetwork,虚拟局域网)中,以确保属于一个环的报文只在本环中转发,从而可以达到报文隔离的目的。

本领域技术人员可以理解的是,图1所示集群包括的环0和环1仅为示例性说明而非限制,本申请对集群中环的数量不做限制,且图1所示环0和环1包括的3个普通节点仅为示例性说明而非限制,每个环中包括的普通节点数量可以根据实际经验进行设置,例如,可以设置每个环包括的普通节点数量不超过30。此外,本申请中提及的普通节点和中心节点均属于节点,且节点可以是服务器、主机等设备。基于上述描述可知,通过在环中增加普通节点的方式均可以实现对集群的扩展,以满足大规模业务场景的应用需求。

图2为本申请根据一示例性实施例示出的一种集群节点统计方法的实施例流程图,该集群统计方法可以应用在集群中的中心节点上,本实施例结合图1所示的集群结构进行详细阐述,如图1所示的中心节点上可以配置corosync,并使中心节点适应于多环的集群通信网络,从而中心节点可以与各个环中的普通节点进行通信。如图2所示,该集群节点统计方法包括如下步骤:

步骤201:在接收到来自普通节点的加入消息时,根据该加入消息确定该普通节点加入的环。

在一实施例中,在业务需求增加时,可以对集群进行扩展,即通过在环中加入新的普通节点的方式扩展集群,以分担集群中增加的业务需求。首先可以为该普通节点配置ip地址,然后该普通节点再发送加入消息。例如,可以先确定该普通节点要加入的环,然后确定该环对应的网段地址,并从网段地址中选择一个未被环中其他普通节点使用的ip地址,并将该ip地址配置到该普通节点上。

在另一实施例中,在有新的普通节点加入集群时,新的普通节点会先向要加入的环以广播方式发送加入消息,环中的其他普通节点在接收到该加入消息时,触发本普通节点以广播方式发送加入消息,此时该环进入不稳定状态。从而,中心节点除了会接收到新的普通节点发送的加入消息,后续还会接收到环中已有普通节点发送的加入消息,并且中心节点在首次接收到加入消息时,也会触发本节点以广播方式发送加入消息。

在又一实施例中,普通节点在发送加入消息时,可以将要加入的环对应的环标识添加到加入消息中,从而,中心节点可以获取加入消息携带的环标识,根据该环标识确定该普通节点加入的环。其中,环标识可以是数字或者字符,也可以是数字与字符的组合,本申请在此不做限制。如图1中的环0,对应的环标识可以是ring0,环1对应的环标识可以是ring1,以此类推。

步骤202:查询该环对应的成员列表中是否存在该普通节点的节点标识,若否,则执行步骤203后,再执行步骤204,否则,直接执行步骤204。

在一实施例中,中心节点中可以预先为集群中的每个环配置一个成员列表,以用于记录当前包括的所有节点的节点标识(既有普通节点的节点标识,也有中心节点的节点标识)。因此,中心节点可以查询该环对应的成员列表中是否存在该普通节点的节点标识,若存在,则表示该环当前包括有该普通节点,若不存在,则表示该普通节点为新加入的普通节点。其中,节点标识可以是数字或者字符,也可以是数字与字符的组合,本申请对此不做限制,只要可以唯一区别每个节点即可,例如,可以利用每个节点的ip地址表示节点的节点标识。

步骤203:将该普通节点的节点标识添加到该环对应的成员列表。

在一实施例中,中心节点在将该普通节点的节点标识添加到该环对应的成员列表之后,可以在该环对应的成员列表中,为该普通节点的节点标识设置预设标记,以表示已接收到新加入的普通节点的加入消息,并将之前加入该环的普通节点的节点标识对应的预设标记清除,以用于后面在接收到这些普通节点的加入消息时,再为对应的节点标识设置预设标记。因此,若该环对应的成员列表中存在普通节点的节点标识,则查询普通节点的节点标识是否设置有预设标记;若否,则为普通节点的节点标识设置预设标记。其中,该预设标记可以是数字或者字符,也可以是数字与字符的组合,本申请在此不做限制。

步骤204:在确定该环达到稳定状态时,获取每个环对应的成员列表中的节点标识,并将获取到的节点标识添加到状态消息,并将该状态消息发送至管理设备。

在一实施例中,针对确定该环达到稳定状态的过程,中心节点可以从接收到普通节点的加入消息开始计时,在第一预设时间间隔之后,向该环中的每个普通节点发送携带有该环对应的成员列表的提交令牌环消息,并开始计时;其中,每个普通节点在接收到提交令牌环消息时,判断提交令牌环消息携带的成员列表中的节点标识与本节点上的成员列表中的节点标识是否一致,若一致,则向中心节点返回提交令牌环响应消息;在第二预设时间间隔之后,中心节点若接收到来自该环中的每个普通节点的提交令牌环响应消息,则确定该环达到稳定状态;若未接收到某普通节点的提交令牌环响应消息,则将该环对应的成员列表中除本节点的节点标识之外的节点标识删除,并以广播方式向该环发送加入消息,以触发该环中的每个普通节点发送加入消息,并继续执行步骤201的过程。

其中,第一预设时间间隔可以根据实际经验设置,只要确保在该段时间间隔内能够接收到环中每个普通节点的加入消息即可。第二预设时间间隔也可以根据实际经验设置,只要确保在向环中的每个普通节点发送提交令牌环消息之后,在该段时间间隔内能够接收到环中每个普通节点返回的提交令牌环响应消息即可。在第二预设时间间隔之后,中心节点如果接收到来自该环中的每个普通节点的提交令牌环响应消息,则表示每个普通节点均在线,且提交令牌环消息携带的成员列表中的节点标识与每个普通节点上的成员列表中的节点标识一致,该环达到稳定状态,中心节点可以针对每个环包括的节点进行统计。而如果未接收到某普通节点的提交令牌环响应消息,则表示某普通节点可能离线,或者某普通节点可能仍在线,但提交令牌环消息携带的成员列表中的节点标识与该某普通节点上的成员列表中的节点标识不一致,该环还未达到稳定状态,从而,中心节点可以将该环对应的成员列表中除本节点的节点标识之外的节点标识删除,并重新发送加入消息,以触发该环中每个普通节点再次发送加入消息,重新维护该成员列表。

在一示例性场景中,如图1所示,假设普通节点3为新加入的普通节点,普通节点3的节点标识为node3,普通节点1和普通节点2的节点标识分别为node1和node2,环0对应的环标识为ring0,普通节点3首先以广播方式向环0发送加入消息,中心节点在接收到来自普通节点3的加入消息时,开始计时,并根据加入消息中携带的环标识ring0确定普通节点3加入环0,然后查询到ring0对应的成员列表中不存在node3,将node3添加到ring0对应的成员列表中,在此期间,中心节点还会接收到环0中node1和node2的加入消息,并执行查询ring0对应的成员列表中是否存在node1和node2的过程。在第一预设时间间隔之后,向环0中的每个普通节点发送携带有ring0对应的成员列表的提交令牌环消息,并开始计时;其中,每个普通节点在接收到提交令牌环消息时,判断提交令牌环消息携带的成员列表中的节点标识与本节点上的成员列表中的节点标识是否一致,若一致,则向中心节点返回提交令牌环响应消息;在第二预设时间间隔之后,中心节点若接收到来自环0中的每个普通节点(node1、node2、node3)的提交令牌环响应消息,则确定环0达到稳定状态;若未接收到某普通节点的提交令牌环响应消息,则将ring0对应的成员列表中的node1、node2、node3删除,并以广播方式向环0发送加入消息,以触发环0中的每个普通节点发送加入消息,并继续执行步骤201的过程。

针对上述步骤203所示的实施例,若在第二预设时间间隔之后,中心节点仍未接收到某普通节点的提交令牌环响应消息,则将该环对应的成员列表中除本节点的节点标识的预设标记之外的节点标识的预设标记清除,并以广播方式向该环发送加入消息,以触发该环中的每个普通节点发送加入消息,并开始计时;当接收到该环中的普通节点发送的加入消息时,在该环对应的成员列表中,为该普通节点的节点标识设置预设标记;在第一预设时间间隔之后,查询该环对应的成员列表中是否存在未设置有预设标记的节点标识,若不存在,则继续执行向该环中的每个普通节点发送携带有该环对应的成员列表的提交令牌环消息的过程;若存在,则删除未设置有预设标记的节点标识,并将携带有该未设置有预设标记的节点标识的提示消息发送至管理设备,以使管理设备显示该提示消息,以提示该节点标识对应的节点已离线。并继续执行向该环中的每个普通节点发送携带有该环对应的成员列表的提交令牌环消息的过程。从而,技术人员可以查看到集群中已经离线的节点,并可以进一步确定该节点的离线原因。

在另一实施例中,中心节点也可以在接收到来自管理设备的集群状态查询请求时,获取每个环对应的成员列表中的节点标识,并将获取到的节点标识添加到集群状态消息,并将所述集群状态消息发送至管理设备。从而,管理设备除了被动的接收状态消息之外,也可以通过发送集群状态查询请求主动获取状态消息,获得集群中存在的节点。

在又一实施例中,由于中心节点位于集群包括的每个环中,因此中心节点可以获取到每个环对应的成员列表中的节点标识,并可以将获取到的节点标识添加到状态消息中,并将该状态消息发送至管理设备,以使管理设备显示该状态消息,从而技术人员可以清晰的查看到集群中存在的节点,并对集群中每个节点的任务和资源进行调度。

需要说明的是,中心节点可以针对每个环,统计该环对应的成员列表中的节点标识的数量,若该数量超过预设数值,则生成用于提示该环已饱和的提示消息,并将该提示消息发送至管理设备。从而,中心节点可以实时的监测每个环中普通节点的数量是否已饱和。

其中,预设数值可以根据实践经验进行设置,例如,中心节点上配置有corosync,corosync对于每个环可以支持的节点数量通常最大为32个,因此,可以将预设数值设置为30个。

由上述实施例可知,本申请中的集群包括至少一个环,且集群中设置有位于每个环的中心节点,该中心节点在接收到来自普通节点的加入消息时,可以根据该加入消息确定普通节点加入的环,并查询该环对应的成员列表中是否存在该普通节点的节点标识;若否,则将该普通节点的节点标识添加到该环对应的成员列表;在确定所述环达到稳定状态时,获取每个环对应的成员列表中的节点标识,并将获取到的节点标识添加到集群状态消息,并将该集群状态消息发送至管理设备。基于上述实现方式,通过在环中增加普通节点的方式可以实现对集群的扩展,从而满足大规模业务场景的应用需求。此外,由于集群中设置的中心节点位于每个环中,因此针对每个环,在有新的普通节点加入时,通过中心节点可以感知到新加入的普通节点,从而可以实现对整个集群中存在普通节点的统计。

与前述集群节点统计方法的实施例相对应,本申请还提供了集群节点统计装置的实施例。

本申请集群节点统计装置的实施例可以应用在中心节点上。装置实施例可以通过软件实现,也可以通过硬件或者软硬件结合的方式实现。以软件实现为例,作为一个逻辑意义上的装置,是通过其所在设备的处理器将非易失性存储器中对应的计算机程序指令读取到内存中运行形成的。从硬件层面而言,如图3所示,为本申请根据一示例性实施例示出的一种中心节点的硬件结构图,除了图3所示的处理器、内存、网络接口、以及非易失性存储器之外,实施例中装置所在的设备通常根据该设备的实际功能,还可以包括其他硬件,对此不再赘述。

图4为本申请根据一示例性实施例示出的一种集群节点统计装置的实施例结构图,该集群统计装置可以应用在集群中的中心节点上,如图4所示,该装置包括:确定单元410、查询单元420、添加单元430以及发送单元440。

其中,确定单元410,用于在接收到来自普通节点的加入消息时,根据所述加入消息确定所述普通节点加入的环;

查询单元420,用于查询所述环对应的成员列表中是否存在所述普通节点的节点标识;

添加单元430,用于当查询结果为否时,将所述普通节点的节点标识添加到所述环对应的成员列表;

发送单元440,用于在确定所述环达到稳定状态时,获取每个环对应的成员列表中的节点标识,并将获取到的节点标识添加到集群状态消息,并将所述集群状态消息发送至管理设备。

在一实施例中,所述装置还包括(图4中未示出):

设置及清除单元,用于在所述添加单元430将所述普通节点的节点标识添加到所述环对应的成员列表之后,在所述环对应的成员列表中,为所述普通节点的节点标识设置预设标记,并将之前加入所述环的普通节点的节点标识对应的预设标记清除;

所述装置还包括(图4中未示出):

查询及设置单元,用于在查询结果为是时,查询所述普通节点的节点标识是否设置有预设标记;若否,则为所述普通节点的节点标识设置预设标记。

在一实施例中,所述发送单元,具体用于在确定所述环达到稳定状态的过程中,从接收到来自普通节点的加入消息开始计时,在第一预设时间间隔之后,向所述环中的每个普通节点发送携带有所述环对应的成员列表的提交令牌环消息,并开始计时;其中,每个普通节点在接收到提交令牌环消息时,判断所述提交令牌环消息携带的成员列表中的节点标识与本节点上的成员列表中的节点标识是否一致,若一致,则向所述中心节点返回提交令牌环响应消息;在第二预设时间间隔之后,若接收到来自所述环中的每个普通节点的提交令牌环响应消息,则确定所述环达到稳定状态。

在一实施例中,所述装置还包括(图4中未示出):

重新维护单元,用于若未接收到某普通节点的提交令牌环响应消息,则将所述环对应的成员列表中除本节点的节点标识之外的节点标识删除,并以广播方式向所述环发送加入消息,以触发所述环中的每个普通节点发送加入消息,并继续执行在接收到来自普通节点的加入消息时根据所述加入消息确定所述普通节点加入的环,并查询所述环对应的成员列表中是否存在所述普通节点的节点标识的过程。

在一实施例中,所述确定单元410,具体用于在根据所述加入消息确定所述普通节点加入的环的过程中,获取所述加入消息携带的环标识;根据所述环标识确定所述普通节点加入的环。

上述装置中各个单元的功能和作用的实现过程具体详见上述方法中对应步骤的实现过程,在此不再赘述。

对于装置实施例而言,由于其基本对应于方法实施例,所以相关之处参见方法实施例的部分说明即可。以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本申请方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。

以上所述仅为本申请的较佳实施例而已,并不用以限制本申请,凡在本申请的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本申请保护的范围之内。

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