掌桥专利:专业的专利平台
掌桥专利
首页

一种集群节点的故障处理方法及系统

文献发布时间:2023-06-19 12:24:27


一种集群节点的故障处理方法及系统

技术领域

本发明涉及通信技术领域,更具体的说是涉及一种集群节点的故障处理方法及系统。

背景技术

计算机集群简称集群,是一种计算机系统,它通过一组松散集成的计算机软件(和/或)硬件连接起来高度紧密地协作完成计算工作。在某种意义上,他们可以被看作是一台计算机。集群系统中的单个计算机通常称为节点,通常通过局域网连接,但也有其它的可能连接方式。集群计算机通常用来改进单个计算机的计算速度(和/或)可靠性。一般情况下集群计算机比单个计算机,工作站或超级计算机性能价格比要高得多。

集群是由多个节点组成,共同为客户端提供业务的群体,集群为了应对计划外故障的发生,一旦集群中的业务节点发送故障时,集群中会制定一个故障处理节点去进行故障处理。现有的技术中的故障处理节点产生方法中往往会产生脑裂,进而引发集群无法对外提供服务的情况,对客户端的业务造成严重影响。

发明内容

针对以上问题,本发明的目的在于提供一种集群节点的故障处理方法及系统,通过提供一种数据库,根据数据库中的信息,选取故障处理节点,在集群中业务节点发生故障时,由选取的故障处理节点及时的进行故障处理,保证了业务的连续性。

本发明为实现上述目的,通过以下技术方案实现:一种集群节点的故障处理方法,包括:

在集群中增加一个节点信息数据库,获取集群中所有节点的信息存入节点信息数据库;

当集群启动和客户端连接至集群节点后,定时更新节点信息数据库,并根据节点信息数据库存储的数据采用排序算法确定出节点健康状况排序;

根据排序结果确定当前的故障处理节点标号,并存入节点信息数据库中;

当集群中有节点发生故障后,集群直接读取节点信息数据库中记录的当前的故障处理节点标号,通知对应的节点进行故障恢复。

进一步,所述节点信息数据库中存储的数据包括:节点服务信息、节点信息、集群信息和故障处理节点条;

所述节点服务信息包括服务名称、服务启动时间和服务状态信息;

所述节点信息包括节点启动时间、节点的CPU占用率和节点上连接的客户端数量;

所述集群信息包括集群内的节点数、节点状态信息和集群状态信息;

所述故障处理节点条,用于存储当前的故障处理节点标号。

进一步,所述根据节点信息数据库存储的数据采用排序算法确定出节点健康状况排序包括如下步骤:

步骤1:根据节点状态信息确定每个节点的状态得分;

步骤2:根据节点启动时间确定每个节点的启动时间得分;

步骤3:根据服务状态信息确定每个节点的服务状态得分;

步骤4:根据节点上连接的客户端数量确定每个节点的客户端连接数得分;

步骤5:根据节点的CPU占用率确定每个节点的CPU占有率得分;

步骤6:根据服务启动时间确定每个节点的服务启动时间得分;

步骤7:将每个节点的状态得分、启动时间得分、服务状态得分、客户端连接数得分、CPU占有率得分和服务启动时间得分相加,得出每个节点的健康状态分值;

步骤8:将健康状态分值最高的节点的节点号填入故障处理节点条,并将每个节点的健康状态分值按照降序存储到节点信息数据库中。

进一步,所述步骤1包括:

若节点的节点状态信息为节点正常,则节点的状态得分为1;若节点的节点状态信息为节点异常状态,则节点的状态得分为0。

进一步,所述步骤2包括:

读取节点启动时间,将节点按启动时间时序进行降序排列,将排序后每个节点所在的位次作为节点的启动时间得分。

进一步,所述步骤3包括:

若节点的服务状态信息为服务状态正常,则节点的服务状态得分为1;若节点的服务状态信息为服务状态异常,则节点的服务状态得分为0。

进一步,所述步骤4包括:

读取每个节点上连接的客户端数量,将节点按连接的客户端数量从多到少降序排列,将排序后每个节点所在的位次作为节点的客户端连接数得分。

进一步,所述步骤5包括:

读取每个节点的CPU占用率,将节点按CPU占用率从高到低降序排列,将排序后每个节点所在的位次作为节点的CPU占用率得分。

进一步,所述步骤6包括:

读取节点的服务启动时间,将节点按服务启动时间的时序进行降序排列,将排序后每个节点所在的位次作为节点的服务启动时间得分。

相应的,本发明还公开了一种集群节点的故障处理系统,包括:

数据库组建单元,用于在集群中增加一个节点信息数据库,获取集群中所有节点的信息存入节点信息数据库;

排序单元,用于当集群启动和客户端连接至集群节点后,定时更新节点信息数据库,并根据节点信息数据库存储的数据采用排序算法确定出节点健康状况排序;

存储单元,用于根据排序结果确定当前的故障处理节点标号,并存入节点信息数据库中;

节点选取单元,用于当集群中有节点发生故障后,集群直接读取节点信息数据库中记录的当前的故障处理节点标号,通知对应的节点进行故障恢复。

进一步,所述排序单元包括:

第一评分模块,用于根据节点状态信息确定每个节点的状态得分;

第二评分模块,用于根据节点启动时间确定每个节点的启动时间得分;

第三评分模块,用于根据服务状态信息确定每个节点的服务状态得分;

第四评分模块,用于根据节点上连接的客户端数量确定每个节点的客户端连接数得分;

第五评分模块,用于根据节点的CPU占用率确定每个节点的CPU占有率得分;

第六评分模块,用于根据服务启动时间确定每个节点的服务启动时间得分;

汇总模块,用于将每个节点的状态得分、启动时间得分、服务状态得分、客户端连接数得分、CPU占有率得分和服务启动时间得分相加,得出每个节点的健康状态分值;

筛选模块,用于将健康状态分值最高的节点的节点号填入故障处理节点条,并将每个节点的健康状态分值按照降序存储到节点信息数据库中。

进一步,第一评分模块具体用于:若节点的节点状态信息为节点正常,则节点的状态得分为1;若节点的节点状态信息为节点异常状态,则节点的状态得分为0。

进一步,第二评分模块具体用于:读取节点启动时间,将节点按启动时间时序进行降序排列,将排序后每个节点所在的位次作为节点的启动时间得分。

进一步,第三评分模块具体用于:若节点的服务状态信息为服务状态正常,则节点的服务状态得分为1;若节点的服务状态信息为服务状态异常,则节点的服务状态得分为0。

进一步,第四评分模块具体用于:读取每个节点上连接的客户端数量,将节点按连接的客户端数量从多到少降序排列,将排序后每个节点所在的位次作为节点的客户端连接数得分。

进一步,第五评分模块具体用于:读取每个节点的CPU占用率,将节点按CPU占用率从高到低降序排列,将排序后每个节点所在的位次作为节点的CPU占用率得分。

进一步,第六评分模块具体用于:读取节点的服务启动时间,将节点按服务启动时间的时序进行降序排列,将排序后每个节点所在的位次作为节点的服务启动时间得分。

相应的,本发明公开了一种集群节点的故障处理装置,包括:

存储器,用于存储集群节点的故障处理程序;

处理器,用于执行所述集群节点的故障处理程序时实现如上文任一项所述集群节点的故障处理方法的步骤。

相应的,本发明公开了一种可读存储介质,所述可读存储介质上存储有集群节点的故障处理程序,所述集群节点的故障处理程序被处理器执行时实现如上文任一项所述集群节点的故障处理方法的步骤。

对比现有技术,本发明有益效果在于:

1、本发明通过为集群创建了一种节点信息数据库,在节点故障发生后,无需进行选举,而通过读取集群中的数据库来直接获取故障处理的节点号,该节点来完成故障恢复,避免产生脑裂风险,将由于故障对客户端的业务造成的影响降到最低,进而提升集群的稳定性及场景适应性。

2.本发明的节点信息数据库能够有效收集集群内的节点信息,并根据排序算法确定出节点健康状况排序,确定出最适合进行故障处理的节点。

由此可见,本发明与现有技术相比,具有突出的实质性特点和显著的进步,其实施的有益效果也是显而易见的。

附图说明

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

附图1是本发明的方法流程图;

附图2是本发明的系统结构图。

图中,1为数据库组建单元;2为排序单元;3为存储单元;4为节点选取单元。

具体实施方式

本发明的核心是提供一种集群节点的故障处理方法,现有技术中,故障处理节点产生方法中往往会产生脑裂,进而引发集群无法对外提供服务的情况,对客户端的业务造成严重影响。

而本发明提供的集群节点的故障处理方法,节点启动之后,集群新增节点信息数据库,并启动定时事件去获取各个节点的信息存入更新数据库。当集群启动和客户端连接至集群节点后,定时更新节点信息至数据库中,并根据排序算法确定出节点健康状况排序,排序由高到底依次为最适合进行故障处理的节点。最终按照得分对节点健康状态进行打分,将打分结果最高的节点号填入数据库中的故障处理节点条。结果按照从高到低保存于数据库中,供集群使用。当集群中有节点发生故障后,集群直接读取数据库中主节点中所记录的节点,通知该节点去做故障恢复。由此可见,本发明通过提供一种数据库,根据数据库中的信息,选取故障处理节点,在集群中业务节点发生故障时,由选取的故障处理节点及时的进行故障处理,保证业务的连续性。

为了使本技术领域的人员更好地理解本发明方案,下面结合附图和具体实施方式对本发明作进一步的详细说明。显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

实施例一:

如图1所示,本实施例提供了一种集群节点的故障处理方法,包括如下步骤:

S1:在集群中增加一个节点信息数据库,获取集群中所有节点的信息存入节点信息数据库。

其中,节点信息数据库中存储的数据包括:节点服务信息、节点信息、集群信息和故障处理节点条。所述节点服务信息包括服务名称、服务启动时间和服务状态信息;所述节点信息包括节点启动时间、节点的CPU占用率和节点上连接的客户端数量;所述集群信息包括集群内的节点数、节点状态信息和集群状态信息;所述故障处理节点条,用于存储当前的故障处理节点标号。

S2:当集群启动和客户端连接至集群节点后,定时更新节点信息数据库,并根据节点信息数据库存储的数据采用排序算法确定出节点健康状况排序。

其中,根据节点信息数据库存储的数据采用排序算法确定出节点健康状况排序主要通过以下8步实现:

步骤1:根据节点状态信息确定每个节点的状态得分。若节点的节点状态信息为节点正常,则节点的状态得分为1;若节点的节点状态信息为节点异常状态,则节点的状态得分为0。

步骤2:根据节点启动时间确定每个节点的启动时间得分。读取节点启动时间,将节点按启动时间时序进行降序排列,将排序后每个节点所在的位次作为节点的启动时间得分。即节点的启动时间越早,其启动时间得分越高。

步骤3:根据服务状态信息确定每个节点的服务状态得分。若节点的服务状态信息为服务状态正常,则节点的服务状态得分为1;若节点的服务状态信息为服务状态异常,则节点的服务状态得分为0。

步骤4:根据节点上连接的客户端数量确定每个节点的客户端连接数得分。读取每个节点上连接的客户端数量,将节点按连接的客户端数量从多到少降序排列,将排序后每个节点所在的位次作为节点的客户端连接数得分。即节点的连接的客户端数量越少,其客户端连接数得分越高。

步骤5:根据节点的CPU占用率确定每个节点的CPU占有率得分。读取每个节点的CPU占用率,将节点按CPU占用率从高到低降序排列,将排序后每个节点所在的位次作为节点的CPU占用率得分。即节点的CPU占用率越低,其CPU占用率得分越高。

步骤6:根据服务启动时间确定每个节点的服务启动时间得分。读取节点的服务启动时间,将节点按服务启动时间的时序进行降序排列,将排序后每个节点所在的位次作为节点的服务启动时间得分。即节点的服务启动越早,其服务启动得分越高。

步骤7:将每个节点的状态得分、启动时间得分、服务状态得分、客户端连接数得分、CPU占有率得分和服务启动时间得分相加,得出每个节点的健康状态分值。节点的健康状态分值越高,说明节点的数据处理能力越强。

步骤8:将健康状态分值最高的节点的节点号填入故障处理节点条,并将每个节点的健康状态分值按照降序存储到节点信息数据库中。

S3:根据排序结果确定当前的故障处理节点标号,并存入节点信息数据库中。

S4:当集群中有节点发生故障后,集群直接读取节点信息数据库中记录的当前的故障处理节点标号,通知对应的节点进行故障恢复。

本实施例提供了一种集群节点的故障处理方法,通过为集群创建了一种节点信息数据库,在节点故障发生后,无需进行选举,而通过读取集群中的数据库来直接获取故障处理的节点号,该节点来完成故障恢复,避免产生脑裂风险,将由于故障对客户端的业务造成的影响降到最低,进而提升集群的稳定性及场景适应性。

实施例二:

本实施例还提供了一种集群节点的故障处理方法,包括:

1、节点启动之后,集群新增节点信息数据库,并启动定时事件去获取各个节点的信息存入更新节点信息数据库。

其中,节点信息数据库中保存如下信息;

节点服务信息:服务名称,服务启动时间,服务状态信息;

本节点信息:节点启动时间,CPU占用率,客户端连接数信息;

集群信息:节点数,每个节点的状态,集群状态;

用于存储故障恢复节点标号的故障处理节点条。

2、当集群启动和客户端连接至集群节点后,定时更新以上信息至节点信息数据库中,并根据排序算法确定出节点健康状况排序,排序由高到底依次为最适合进行故障处理的节点。

其中,排序算法规则如下:

步骤1:节点状态得分。节点正常:得分为1,节点状态异常:得分为0。

步骤2:节点的启动时间得分:将节点按启动时间从早到晚排序所在的位次,如节点0、节点1、节点2排序后,顺序为节点2、节点0、节点1,则各个节点的权重分别为1 2 3,该项得分为节点0得1分,节点1得2分,节点2得3分。

步骤3:为客户端提供服务的状态得分。服务状态正常:得分为1,服务状态异常:得分为0。

步骤4:客户端连接数得分:得分为该节点上所连接的客户端数量从多到少进行排序,得分分别为1 、2、……N分,如节点0、节点1、节点2按照连接数从多到少的排序后,顺序为节点2、节点0、节点1,则各个节点的得分分别为1、2、3分。

步骤5:CPU占用率得分:得分为按照各个节点的CPU占用率由高到低对各个节点进行排序,按照排序,各个节点得分为1、2……N分。

步骤6:服务启动时间得分:得分为按照各个节点为客户端提供服务的启动时间,进行时序的降序排序,按照排序,各个节点得分为1、2……N分。

3、最终按照得分求和后对节点的健康状态进行打分,将打分结果最高的节点号填入节点信息数据库中的故障处理节点条。结果按照从高到低保存于数据库中,供集群使用。其中,服务名称包含但不限于SAMBA/NFS/FTP/HTTP/ISCSI/RGW,服务的状态信息包含但不限于进程数量,每个进程状态;客户端连接数包含但不限于通过域名挂载、通过虚拟IP挂载、通过物理IP挂载;每个节点的状态信息包含但不限于网卡的状态、网卡收发包是否有阻塞。

4、当集群中有节点发生故障后,集群直接读取节点信息数据库中主节点中所记录的节点,通知该节点去做故障恢复。

实施例三:

基于实施例一,如图2所示,本发明还公开了一种集群节点的故障处理系统,包括:数据库组建单元1、排序单元2、存储单元3和节点选取单元4。

数据库组建单元1,用于在集群中增加一个节点信息数据库,获取集群中所有节点的信息存入节点信息数据库。

排序单元2,用于当集群启动和客户端连接至集群节点后,定时更新节点信息数据库,并根据节点信息数据库存储的数据采用排序算法确定出节点健康状况排序。

其中,排序单元2具体包括:

第一评分模块,用于根据节点状态信息确定每个节点的状态得分;

第二评分模块,用于根据节点启动时间确定每个节点的启动时间得分;

第三评分模块,用于根据服务状态信息确定每个节点的服务状态得分;

第四评分模块,用于根据节点上连接的客户端数量确定每个节点的客户端连接数得分;

第五评分模块,用于根据节点的CPU占用率确定每个节点的CPU占有率得分;

第六评分模块,用于根据服务启动时间确定每个节点的服务启动时间得分;

汇总模块,用于将每个节点的状态得分、启动时间得分、服务状态得分、客户端连接数得分、CPU占有率得分和服务启动时间得分相加,得出每个节点的健康状态分值;

筛选模块,用于将健康状态分值最高的节点的节点号填入故障处理节点条,并将每个节点的健康状态分值按照降序存储到节点信息数据库中。

存储单元3,用于根据排序结果确定当前的故障处理节点标号,并存入节点信息数据库中。

节点选取单元4,用于当集群中有节点发生故障后,集群直接读取节点信息数据库中记录的当前的故障处理节点标号,通知对应的节点进行故障恢复。

本实施例提供了一种集群节点的故障处理系统,通过提供一种数据库,根据数据库中的信息,选取故障处理节点,在集群中业务节点发生故障时,由选取的故障处理节点及时的进行故障处理,保证了业务的连续性。

实施例四:

本实施例公开了一种集群节点的故障处理装置,包括处理器和存储器;其中,所述处理器执行所述存储器中保存的集群节点的故障处理程序时实现以下步骤:

1、在集群中增加一个节点信息数据库,获取集群中所有节点的信息存入节点信息数据库。

2、当集群启动和客户端连接至集群节点后,定时更新节点信息数据库,并根据节点信息数据库存储的数据采用排序算法确定出节点健康状况排序。

3、根据排序结果确定当前的故障处理节点标号,并存入节点信息数据库中。

4、当集群中有节点发生故障后,集群直接读取节点信息数据库中记录的当前的故障处理节点标号,通知对应的节点进行故障恢复。

进一步的,本实施例中的集群节点的故障处理装置,还可以包括:

输入接口,用于获取外界导入的集群节点的故障处理程序,并将获取到的集群节点的故障处理程序保存至所述存储器中,还可以用于获取外界终端设备传输的各种指令和参数,并传输至处理器中,以便处理器利用上述各种指令和参数展开相应的处理。本实施例中,所述输入接口具体可以包括但不限于USB接口、串行接口、语音输入接口、指纹输入接口、硬盘读取接口等。

输出接口,用于将处理器产生的各种数据输出至与其相连的终端设备,以便于与输出接口相连的其他终端设备能够获取到处理器产生的各种数据。本实施例中,所述输出接口具体可以包括但不限于USB接口、串行接口等。

通讯单元,用于在集群节点的故障处理装置和外部服务器之间建立远程通讯连接,以便于集群节点的故障处理装置能够将镜像文件挂载到外部服务器中。本实施例中,通讯单元具体可以包括但不限于基于无线通讯技术或有线通讯技术的远程通讯单元。

键盘,用于获取用户通过实时敲击键帽而输入的各种参数数据或指令。

显示器,用于运行服务器供电线路短路定位过程的相关信息进行实时显示。

鼠标,可以用于协助用户输入数据并简化用户的操作。

实施例五:

本实施例还公开了一种可读存储介质,这里所说的可读存储介质包括随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动硬盘、CD-ROM或技术领域内所公知的任意其他形式的存储介质。可读存储介质中存储有集群节点的故障处理程序,所述集群节点的故障处理程序被处理器执行时实现以下步骤:

1、在集群中增加一个节点信息数据库,获取集群中所有节点的信息存入节点信息数据库。

2、当集群启动和客户端连接至集群节点后,定时更新节点信息数据库,并根据节点信息数据库存储的数据采用排序算法确定出节点健康状况排序。

3、根据排序结果确定当前的故障处理节点标号,并存入节点信息数据库中。

4、当集群中有节点发生故障后,集群直接读取节点信息数据库中记录的当前的故障处理节点标号,通知对应的节点进行故障恢复。

综上所述,本发明通过为集群创建了一种节点信息数据库,在节点故障发生后,无需进行选举,而通过读取集群中的数据库来直接获取故障处理的节点号,该节点来完成故障恢复,避免产生脑裂风险,将由于故障对客户端的业务造成的影响降到最低,进而提升集群的稳定性及场景适应性。

本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其它实施例的不同之处,各个实施例之间相同或相似部分互相参见即可。对于实施例公开的方法而言,由于其与实施例公开的系统相对应,所以描述的比较简单,相关之处参见方法部分说明即可。

专业人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。

在本发明所提供的几个实施例中,应该理解到,所揭露的系统、系统和方法,可以通过其它的方式实现。例如,以上所描述的系统实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,系统或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。

所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。

另外,在本发明各个实施例中的各功能模块可以集成在一个处理单元中,也可以是各个模块单独物理存在,也可以两个或两个以上模块集成在一个单元中。

同理,在本发明各个实施例中的各处理单元可以集成在一个功能模块中,也可以是各个处理单元物理存在,也可以两个或两个以上处理单元集成在一个功能模块中。

结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或技术领域内所公知的任意其它形式的存储介质中。

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

以上对本发明所提供的集群节点的故障处理方法、系统、装置及可读存储介质进行了详细介绍。本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以对本发明进行若干改进和修饰,这些改进和修饰也落入本发明权利要求的保护范围内。

相关技术
  • 一种基于集群日志的反馈式节点故障处理方法及系统
  • 一种集群节点的故障处理方法及系统
技术分类

06120113281491