集群节点故障上报方法、装置、设备及存储介质转让专利

申请号 : CN202311415752.X

文献号 : CN117155938B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 许立宪蒙立益

申请人 : 北京腾达泰源科技有限公司

摘要 :

本发明属于故障检测技术领域,公开了一种集群节点故障上报方法、装置、设备及存储介质。本发明通过在检测到集群中的邻居节点发生故障时,将发生故障的邻居节点作为待上报节点;获取待上报节点的逻辑群组标识;若逻辑群组标识与本地节点的逻辑群组标识一致,则获取故障事件记录表;在故障事件记录表中不存在待上报节点对应的故障事件记录时,根据待上报节点的节点信息构建故障信息;将故障信息上报至监控节点。由于在检测到邻居节点发生故障时,会将待上报节点与本地节点的逻辑群组标识进行比较,在一致时,才尝试上报故障信息,且还会先检测是否已有其他节点上报过,从而避免了多个节点同时上报重复的故障信息,避免了监控节点压力过大。

权利要求 :

1.一种集群节点故障上报方法,其特征在于,所述集群节点故障上报方法应用于集群节点,所述集群节点为业务集群中的任一业务节点;

所述集群节点故障上报方法包括以下步骤:

在检测到集群中的邻居节点发生故障时,将发生故障的邻居节点作为待上报节点;

获取所述待上报节点的逻辑群组标识;

若所述逻辑群组标识与本地节点的逻辑群组标识一致,则获取故障事件记录表;

在所述故障事件记录表中不存在所述待上报节点对应的故障事件记录时,根据所述待上报节点的节点信息构建故障信息;

将所述故障信息上报至监控节点;

其中,所述获取所述待上报节点的逻辑群组标识的步骤,包括:获取所述待上报节点的节点标识信息;

对所述节点标识信息进行哈希运算,获得节点哈希值;

根据业务集群的节点总数对所述节点哈希值进行取模,获得节点编号;

将所述节点编号与预设冗余系数的比值作为所述待上报节点的逻辑群组标识。

2.如权利要求1所述的集群节点故障上报方法,其特征在于,所述若所述逻辑群组标识与本地节点的逻辑群组标识一致,则获取故障事件记录表的步骤,包括:若所述逻辑群组标识与本地节点的逻辑群组标识一致,则根据所述逻辑群组标识构建记录获取请求;

通过所述记录获取请求访问监控节点,以使所述监控节点反馈故障事件记录表。

3.如权利要求2所述的集群节点故障上报方法,其特征在于,所述若所述逻辑群组标识与本地节点的逻辑群组标识一致,则根据所述逻辑群组标识构建记录获取请求的步骤,包括:若所述逻辑群组标识与本地节点的逻辑群组标识一致,则查找本地记录表;

获取所述本地记录表的最后同步时刻;

若所述最后同步时刻与当前时刻之间的间隔大于预设间隔阈值,则根据所述逻辑群组标识及所述最后同步时刻构建记录获取请求;

相应的,所述通过所述记录获取请求访问监控节点,以使所述监控节点反馈故障事件记录表的步骤之后,还包括:根据所述故障事件记录表对所述本地记录表进行更新。

4.如权利要求1所述的集群节点故障上报方法,其特征在于,所述在检测到集群中的邻居节点发生故障时,将发生故障的邻居节点作为待上报节点的步骤之前,还包括:在故障检测条件被满足时,获取节点群组列表;

根据所述节点群组列表确定目标邻居节点,并向所述目标邻居节点发送故障检测请求;

若在第一预设时长内未接收到所述目标邻居节点反馈的故障检测响应,则判定所述目标邻居节点发生故障。

5.如权利要求1‑4任一项所述的集群节点故障上报方法,其特征在于,所述在检测到集群中的邻居节点发生故障时,将发生故障的邻居节点作为待上报节点的步骤之前,还包括:在接收到故障广播信息时,从所述故障广播信息中提取发起节点标识;

根据所述发起节点标识及节点群组列表确定发起节点是否为业务集群中的业务节点;

若是,则判定检测到集群中的邻居节点发生故障。

6.如权利要求5所述的集群节点故障上报方法,其特征在于,所述从所述故障广播信息中提取发起节点标识的步骤,包括:从所述故障广播信息中提取密文广播信息;

根据预设分割规则对所述密文广播信息进行分割,获得多段分割密文;

依据预设组合顺序将所述多段分割密文进行组装,获得组装密文;

通过预设解密算法对所述组装密文进行解密,获得发起节点标识。

7.一种集群节点故障上报装置,其特征在于,所述集群节点故障上报装置包括以下模块:检测模块,用于在检测到集群中的邻居节点发生故障时,将发生故障的邻居节点作为待上报节点;

计算模块,用于获取所述待上报节点的逻辑群组标识;

获取模块,用于若所述逻辑群组标识与本地节点的逻辑群组标识一致,则获取故障事件记录表;

构建模块,用于在所述故障事件记录表中不存在所述待上报节点对应的故障事件记录时,根据所述待上报节点的节点信息构建故障信息;

上报模块,用于将所述故障信息上报至监控节点;

所述计算模块,还用于获取所述待上报节点的节点标识信息;对所述节点标识信息进行哈希运算,获得节点哈希值;根据业务集群的节点总数对所述节点哈希值进行取模,获得节点编号;将所述节点编号与预设冗余系数的比值作为所述待上报节点的逻辑群组标识。

8.一种集群节点故障上报设备,其特征在于,所述集群节点故障上报设备包括:处理器、存储器及存储在所述存储器上并可在所述处理器上运行的集群节点故障上报程序,所述集群节点故障上报程序被处理器执行时实现如权利要求1‑6中任一项所述的集群节点故障上报方法的步骤。

9.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有集群节点故障上报程序,所述集群节点故障上报程序执行时实现如权利要求1‑6中任一项所述的集群节点故障上报方法的步骤。

说明书 :

集群节点故障上报方法、装置、设备及存储介质

技术领域

[0001] 本发明涉及故障检测技术领域,尤其涉及一种集群节点故障上报方法、装置、设备及存储介质。

背景技术

[0002] 在分布式集群计算中,集群节点通常需要将有关信息,比如节点的资源,健康状况上报到主控中心,便于集群控制器进行资源调度,业务管理,和监控展示等操作。
[0003] 如今集群设计监控节点和其他节点的链接一般都采用星型结构,而为了大幅度提高系统的可靠性,新型的集群设计会采用星型结构(star)叠加全网链接结构(full mesh)。但是,在全网链接结构中,当集群中的一个节点发生故障时,集群中的其他节点都可能监听到这个事件,并试图上报给监控节点。如果集群的节点数较少,监控节点不会存在过载问题,但是在集群节点数量较多时,监控节点会收来自所有被监控节点上报的信息,会形成类似DoS(Denied of Service)攻击的状况,从而可能造成监控节点过载,甚至瘫痪。

发明内容

[0004] 本发明的主要目的在于提供一种集群节点故障上报方法、装置、设备及存储介质,旨在解决现有技术采用全网链接结构时,故障重复上报的技术问题。
[0005] 为实现上述目的,本发明提供了一种集群节点故障上报方法,所述集群节点故障上报方法应用于集群节点,所述集群节点为业务集群中的任一业务节点;
[0006] 所述集群节点故障上报方法包括以下步骤:
[0007] 在检测到集群中的邻居节点发生故障时,将发生故障的邻居节点作为待上报节点;
[0008] 获取所述待上报节点的逻辑群组标识;
[0009] 若所述逻辑群组标识与本地节点的逻辑群组标识一致,则获取故障事件记录表;
[0010] 在所述故障事件记录表中不存在所述待上报节点对应的故障事件记录时,根据所述待上报节点的节点信息构建故障信息;
[0011] 将所述故障信息上报至监控节点。
[0012] 可选的,所述获取所述待上报节点的逻辑群组标识的步骤,包括:
[0013] 获取所述待上报节点的节点标识信息;
[0014] 对所述节点标识信息进行哈希运算,获得节点哈希值;
[0015] 根据业务集群的节点总数对所述节点哈希值进行取模,获得节点编号;
[0016] 将所述节点编号与预设冗余系数的比值作为所述待上报节点的逻辑群组标识。
[0017] 可选的,所述若所述逻辑群组标识与本地节点的逻辑群组标识一致,则获取故障事件记录表的步骤,包括:
[0018] 若所述逻辑群组标识与本地节点的逻辑群组标识一致,则根据所述逻辑群组标识构建记录获取请求;
[0019] 通过所述记录获取请求访问监控节点,以使所述监控节点反馈故障事件记录表。
[0020] 可选的,所述若所述逻辑群组标识与本地节点的逻辑群组标识一致,则根据所述逻辑群组标识构建记录获取请求的步骤,包括:
[0021] 若所述逻辑群组标识与本地节点的逻辑群组标识一致,则查找本地记录表;
[0022] 获取所述本地记录表的最后同步时刻;
[0023] 若所述最后同步时刻与当前时刻之间的间隔大于预设间隔阈值,则根据所述逻辑群组标识及所述最后同步时刻构建记录获取请求;
[0024] 相应的,所述通过所述记录获取请求访问监控节点,以使所述监控节点反馈故障事件记录表的步骤之后,还包括:
[0025] 根据所述故障事件记录表对所述本地记录表进行更新。
[0026] 可选的,所述在检测到集群中的邻居节点发生故障时,将发生故障的邻居节点作为待上报节点的步骤之前,还包括:
[0027] 在故障检测条件被满足时,获取节点群组列表;
[0028] 根据所述节点群组列表确定目标邻居节点,并向所述目标邻居节点发送故障检测请求;
[0029] 若在第一预设时长内未接收到所述目标邻居节点反馈的故障检测响应,则判定所述目标邻居节点发生故障。
[0030] 可选的,所述在检测到集群中的邻居节点发生故障时,将发生故障的邻居节点作为待上报节点的步骤之前,还包括:
[0031] 在接收到故障广播信息时,从所述故障广播信息中提取发起节点标识;
[0032] 根据所述发起节点标识及节点群组列表确定发起节点是否为业务集群中的业务节点;
[0033] 若是,则判定检测到集群中的邻居节点发生故障。
[0034] 可选的,所述从所述故障广播信息中提取发起节点标识的步骤,包括:
[0035] 从所述故障广播信息中提取密文广播信息;
[0036] 根据预设分割规则对所述密文广播信息进行分割,获得多段分割密文;
[0037] 依据预设组合顺序将所述多段分割密文进行组装,获得组装密文;
[0038] 通过预设解密算法对所述组装密文进行解密,获得发起节点标识。
[0039] 此外,为实现上述目的,本发明还提出一种集群节点故障上报装置,所述集群节点故障上报装置包括以下模块:
[0040] 检测模块,用于在检测到集群中的邻居节点发生故障时,将发生故障的邻居节点作为待上报节点;
[0041] 计算模块,用于获取所述待上报节点的逻辑群组标识;
[0042] 获取模块,用于若所述逻辑群组标识与本地节点的逻辑群组标识一致,则获取故障事件记录表;
[0043] 构建模块,用于在所述故障事件记录表中不存在所述待上报节点对应的故障事件记录时,根据所述待上报节点的节点信息构建故障信息;
[0044] 上报模块,用于将所述故障信息上报至监控节点。
[0045] 此外,为实现上述目的,本发明还提出一种集群节点故障上报设备,所述集群节点故障上报设备包括:处理器、存储器及存储在所述存储器上并可在所述处理器上运行的集群节点故障上报程序,所述集群节点故障上报程序被处理器执行时实现如上所述的集群节点故障上报方法的步骤。
[0046] 此外,为实现上述目的,本发明还提出一种计算机可读存储介质,所述计算机可读存储介质上存储有集群节点故障上报程序,所述集群节点故障上报程序执行时实现如上所述的集群节点故障上报方法的步骤。
[0047] 本发明通过在检测到集群中的邻居节点发生故障时,将发生故障的邻居节点作为待上报节点;获取待上报节点的逻辑群组标识;若逻辑群组标识与本地节点的逻辑群组标识一致,则获取故障事件记录表;在故障事件记录表中不存在待上报节点对应的故障事件记录时,根据待上报节点的节点信息构建故障信息;将故障信息上报至监控节点。由于在检测到邻居节点发生故障时,会将待上报节点与本地节点的逻辑群组标识进行比较,在一致时,才尝试上报故障信息,且还会先检测是否已有其他节点上报过,从而避免了多个节点同时上报重复的故障信息,避免了监控节点压力过大。

附图说明

[0048] 图1是本发明实施例方案涉及的硬件运行环境的电子设备的结构示意图;
[0049] 图2为本发明集群节点故障上报方法第一实施例的流程示意图;
[0050] 图3为本发明一实施例的集群结构示意图;
[0051] 图4为本发明集群节点故障上报方法第二实施例的流程示意图;
[0052] 图5为本发明集群节点故障上报方法第二实施例的流程示意图;
[0053] 图6为本发明集群节点故障上报装置第一实施例的结构框图。
[0054] 本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。

具体实施方式

[0055] 应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。
[0056] 参照图1,图1为本发明实施例方案涉及的硬件运行环境的集群节点故障上报设备结构示意图。
[0057] 如图1所示,该电子设备可以包括:处理器1001,例如中央处理器(Central Processing Unit,CPU),通信总线1002、用户接口1003,网络接口1004,存储器1005。其中,通信总线1002用于实现这些组件之间的连接通信。用户接口1003可以包括显示屏(Display)、输入单元比如键盘(Keyboard),可选用户接口1003还可以包括标准的有线接口、无线接口。网络接口1004可选的可以包括标准的有线接口、无线接口(如无线保真(Wireless‑Fidelity,WI‑FI)接口)。存储器1005可以是高速的随机存取存储器(Random Access Memory,RAM),也可以是稳定的非易失性存储器(Non‑Volatile Memory,NVM),例如磁盘存储器。存储器1005可选的还可以是独立于前述处理器1001的存储装置。
[0058] 本领域技术人员可以理解,图1中示出的结构并不构成对电子设备的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。
[0059] 如图1所示,作为一种存储介质的存储器1005中可以包括操作系统、网络通信模块、用户接口模块以及集群节点故障上报程序。
[0060] 在图1所示的电子设备中,网络接口1004主要用于与网络服务器进行数据通信;用户接口1003主要用于与用户进行数据交互;本发明电子设备中的处理器1001、存储器1005可以设置在集群节点故障上报设备中,所述电子设备通过处理器1001调用存储器1005中存储的集群节点故障上报程序,并执行本发明实施例提供的集群节点故障上报方法。
[0061] 本发明实施例提供了一种集群节点故障上报方法,参照图2,图2为本发明一种集群节点故障上报方法第一实施例的流程示意图。
[0062] 本实施例中,所述集群节点故障上报方法应用于集群节点,所述集群节点为业务集群中的任一业务节点;
[0063] 所述集群节点故障上报方法包括以下步骤:
[0064] 步骤S10:在检测到集群中的邻居节点发生故障时,将发生故障的邻居节点作为待上报节点。
[0065] 需要说明的是,本实施例的执行主体可以是所述集群节点故障上报设备(简称为故障上报设备),所述故障上报设备可以是业务集群中任意一个业务节点,所述故障上报设备可以是个人电脑、服务器等电子设备,或其他可实现相同或相似功能的设备,本实施例对此不加以限制,在本实施例及下述各实施例中,以故障上报设备为例对本发明集群节点故障上报方法进行说明。
[0066] 为了便于理解,现结合图3对星型结构及全网链接结构进行说明,但不对本方案进行限定。图3为本实施例的集群结构示意图。
[0067] 目前集群设计监控节点和其他节点的链接一般都采用星型结构,其结构如图3a所示,即集群中的节点(节点1、2和3)均直接将资源、健康状态上报至监控节点;
[0068] 而为了大幅度提高系统的可靠性,新的集群结构采用了星型结构叠加全网链接结构(如图3b所示),在这种设计中,星型结构用来处理相对稳定的信息,比如集群节点的资源信息采集,即令集群中的节点直接将采集的资源信息上报至监控节点;
[0069] 全网链接结构用于集群节点间相互监控,避免星型结构中的单点故障的问题(SPOF),如图3b所示,集群中的节点1、2和3会互相监控,此时节点1会监控节点2和3是否发生故障(则节点2和节点3为节点1的邻居节点),节点2会监控节点1和3是否发生故障,节点3会监控节点1和2是否发生故障,此时若节点1发生故障,节点2和3均有可能会发现此故障,并向监控节点上报故障信息,由此可能会导致监控节点可能会同时接收到过多集群节点上报的故障信息,从而形成类似DoS攻击的状况。
[0070] 而为了避免出现类似DoS攻击的状况,需要在检测到节点出现故障时,避免出现过多节点在同一时刻重复上报,则此时可以先在检测到集群中的邻居节点发生故障时,将发生故障的邻居节点作为待上报节点。
[0071] 步骤S20:获取所述待上报节点的逻辑群组标识。
[0072] 需要说明的是,为了避免重复进行上报,可以以逻辑群组标识进行划分,即一个集群节点,仅在其他与该集群节点对应的逻辑群组标识相同的集群节点出现故障时,才进行故障上报,而为了确定是否需要对上报故障信息,可以获取待上报节点的逻辑群组标识。
[0073] 在具体实现中,为了合理的设置逻辑群组标识,本实施例所述步骤S20,可以包括以下步骤:
[0074] 获取所述待上报节点的节点标识信息;
[0075] 对所述节点标识信息进行哈希运算,获得节点哈希值;
[0076] 根据业务集群的节点总数对所述节点哈希值进行取模,获得节点编号;
[0077] 将所述节点编号与预设冗余系数的比值作为所述待上报节点的逻辑群组标识。
[0078] 需要说明的是,节点标识信息可以包括节点名称、节点唯一标识等信息中的至少一种。对节点标识信息进行哈希运算,获得节点哈希值可以是对节点标识信息进行哈希运算,计算节点标识信息对应的哈希值,并将该哈希值作为节点哈希值。
[0079] 在实际使用中,业务集群的节点总数可以是业务集群中包含的集群节点的总数,根据业务集群的节点总数对节点哈希值进行取模,获得节点编号可以是通过业务集群的节点总数对节点哈希值进行取模,将取模获得的余数作为节点编号。
[0080] 在实际使用中,预设冗余系数可以由故障上报设备的管理人员根据实际需要预先进行设置,其用于表征同一逻辑群组标识对应的集群节点的最大数量,预设冗余系数越大,则集群的可靠性就越高,相应的,同一逻辑群组标识对应的集群节点的数量就越多,可能产生的冗余信息就越多;反之,预设冗余系数越小,则集群的可靠性就越低,相应的,同一逻辑群组标识对应的集群节点的数量就越少,可能产生的冗余信息就越少。
[0081] 在实际使用中,预设冗余系数不建议过大,预设冗余系数过大会导致同一逻辑群组标识对应的集群节点的数量过多,因此,预设冗余系数的取值可以设置为3或4。
[0082] 步骤S30:若所述逻辑群组标识与本地节点的逻辑群组标识一致,则获取故障事件记录表。
[0083] 可以理解的是,若逻辑群组标识与本地节点的逻辑群组标识一致,则表示此时需要故障上报设备可以进行故障上报,但是,为了尽可能减少重复上报,此时可以获取故障事件记录表。其中,故障事件记录表可以记录有已经上报的故障事件记录。
[0084] 步骤S40:在所述故障事件记录表中不存在所述待上报节点对应的故障事件记录时,根据所述待上报节点的节点信息构建故障信息。
[0085] 步骤S50:将所述故障信息上报至监控节点。
[0086] 可以理解的是,若故障事件记录表中不存在所述待上报节点对应的故障事件记录,则表示此时待上报节点出现故障的信息并未被其他节点上报过,因此,可以根据待上报节点的节点信息构建故障信息,并将故障信息上报至监控节点,监控节点在接收到故障信息之后,会根据故障信息生成对应的故障信息记录,并进行存储。
[0087] 进一步的,在本实施例中,为了保证可正常检测到故障节点,本实施例所述步骤S10之前,还可以包括:
[0088] 在故障检测条件被满足时,获取节点群组列表;
[0089] 根据所述节点群组列表确定目标邻居节点,并向所述目标邻居节点发送故障检测请求;
[0090] 若在第一预设时长内未接收到所述目标邻居节点反馈的故障检测响应,则判定所述目标邻居节点发生故障。
[0091] 需要说明的是,若是故障检测条件被满足,则表示故障上报设备此时需要检测同一组中的其他集群节点是否发生了故障,为了保证故障上报设备可以确定同一组的集群节点有哪些,可以获取节点群组列表。
[0092] 其中,故障检测条件可以由故障上报设备的管理人员预先进行设置,由于采用邻里协防的方式检测节点故障是否发生故障,集群节点一般仅检测同一组内其他的集群节点是否发生故障,同时需要通信的节点较少,因此,可以将检测的间隔设置的较短,例如:将故障检测条件设置为每隔1秒(甚至可以设置检测间隔为300毫秒到1.5秒之间的任意数值)检测一次同群组节点是否故障;节点群组列表中可以存储有集群节点的分组信息。
[0093] 在实际使用中,若接收到用户通过其他设备发送的检测指令,也可以判定故障检测条件被满足。例如:用户在存在特定需求,需要控制集群中的节点进行故障检测时,可以通过其终端设备(如手机或个人电脑)主动向故障上报设备发送检测指令,则此时故障上报设备可以判定故障检测条件被满足。
[0094] 在实际使用中,节点群组列表中可以存储有集群中各节点的节点标识信息,根据节点群组列表确定目标邻居节点可以是从节点群组列表中提取各节点的节点标识信息,根据节点标识信息计算各节点对应的逻辑群组标识,将对应的逻辑群组标识与本地节点的逻辑群组标识相同的节点作为目标邻居节点。
[0095] 可以理解的是,在确定目标邻居节点之后,为了确定目标邻居节点是否发生故障,可以向目标邻居节点发送故障检测请求。
[0096] 在具体实现中,为了避免故障检测被恶意利用,本实施例所述步骤S20,可以包括:
[0097] 获取本地节点的节点信息;
[0098] 以第一预设顺序将所述节点信息进行数据组合,获得组合数据;
[0099] 对所述组合数据进行分割,获得多个分割数据;
[0100] 以第二预设顺序将所述多个分割数据进行拼接, 获得拼接数据;
[0101] 通过预设签名算法对所述拼接数据进行加密,获得加密数据;
[0102] 以所述加密数据为请求参数构建故障检测请求,并获取所述目标邻居节点与本地节点之间的主要通信通道;
[0103] 通过所述主要通信通道将所述故障检测请求发送至所述目标邻居节点。
[0104] 需要说明的是,本地节点可以是所述故障上报设备,本地节点的节点信息可以是故障上报设备作为集群节点时的节点信息,可以包括节点名称、节点标识、节点设备类型、节点设备编号等信息。第一预设顺序及第二预设顺序均可以由故障上报设备的管理人员根据实际需要预先进行设置,预设签名算法可以为可逆加密算法,如:RC2或RC4算法。目标邻居节点与本地节点之间的主要通信通道可以是目标邻居节点与本地节点在此前依据TIPC协议(Transparent Inter‑process communication protocol)预先创建的通信链路。
[0105] 例如:获取到目标邻居节点的节点信息(节点名称、节点标识、节点设备类型、节点设备编号),将节点信息转化为字符串,第一预设顺序“节点标识‑节点名称‑节点设备编号‑节点设备类型”的形式将其进行字符串拼接,组合为组合数据,之后将组合数据等长分割为4份,获得4个分割数据,然后对其进行编号(分别编号为1、2、3、4),以第二预设顺序“3‑4‑2‑
1”将4个分割数据进行拼接,从而获得拼接数据,之后再通过预设签名算法对拼接数据进行加密,将加密获得的密文作为加密数据。
[0106] 其中,在将组合数据分割为多个分割数据时,也可以采用分割为更多份数,此处分为4份仅做举例说明,但不对其进行限制。
[0107] 可以理解的是,由于故障检测请求中的请求参数,是通过复杂处理的方式根据目标邻居节点的节点信息构建,恶意攻击者即使拦截到了故障检测请求,也难以获知故障检测请求中的请求参数构建方式,难以伪造故障检测请求,但是,目标邻居节点在接收到故障检测请求之后,可以通过预先设置的逆向方式对故障检测请求中的请求参数进行解析,从而还原得到发起该故障检测请求的节点的节点信息,并验证其是否存在于节点群组列表中,确定故障检测请求是否为真正的集群节点发送,从而确定是否需要进行响应,由此,则保证了集群中的分组故障检测不会被恶意攻击者恶意利用。
[0108] 本实施例通过在检测到集群中的邻居节点发生故障时,将发生故障的邻居节点作为待上报节点;获取待上报节点的逻辑群组标识;若逻辑群组标识与本地节点的逻辑群组标识一致,则获取故障事件记录表;在故障事件记录表中不存在待上报节点对应的故障事件记录时,根据待上报节点的节点信息构建故障信息;将故障信息上报至监控节点。由于在检测到邻居节点发生故障时,会将待上报节点与本地节点的逻辑群组标识进行比较,在一致时,才尝试上报故障信息,且还会先检测是否已有其他节点上报过,从而避免了多个节点同时上报重复的故障信息,避免了监控节点压力过大。
[0109] 参考图4,图4为本发明一种集群节点故障上报方法第二实施例的流程示意图。
[0110] 基于上述第一实施例,本实施例集群节点故障上报方法的所述步骤S30,包括:
[0111] 步骤S301:若所述逻辑群组标识与本地节点的逻辑群组标识一致,则根据所述逻辑群组标识构建记录获取请求。
[0112] 需要说明的是,若逻辑群组标识与本地节点的逻辑群组标识一致,则表示此时故障上报设备可以上报故障信息,此时可以尝试从监控节点获取最新的故障事件记录表,因此,可以根据逻辑群组标识构建记录获取请求。其中,本地节点可以是所述故障上报设备本身。
[0113] 步骤S302:通过所述记录获取请求访问监控节点,以使所述监控节点反馈故障事件记录表。
[0114] 需要说明的是,由于集群节点仅会上报与其逻辑群组标识相同的其他集群节点的故障信息,因此,在监控节点中,故障事件记录也可以分为多张表进行存储,令一个逻辑群组标识对应一张故障事件记录表,则监控节点在接收到记录获取请求后,可以从记录获取请求中提取逻辑群组标识,然后将逻辑群组标识对应的故障事件记录表反馈给故障上报设备。
[0115] 进一步的,若每次需要上报故障信息时,均从监控节点处获取故障事件记录表,可能会导致监控节点的压力过大,为了克服此种缺陷,本实施例所述步骤S301,可以包括:
[0116] 若所述逻辑群组标识与本地节点的逻辑群组标识一致,则查找本地记录表;
[0117] 获取所述本地记录表的最后同步时刻;
[0118] 若所述最后同步时刻与当前时刻之间的间隔大于预设间隔阈值,则根据所述逻辑群组标识及所述最后同步时刻构建记录获取请求;
[0119] 相应的,所述通过所述记录获取请求访问监控节点,以使所述监控节点反馈故障事件记录表的步骤之后,还包括:
[0120] 根据所述故障事件记录表对所述本地记录表进行更新。
[0121] 需要说明的是,为了避免每次需要上报故障信息时都要从监控节点中获取故障事件记录表,可以令故障上报事件中缓存故障事件记录表(缓存的故障事件记录表即为本地记录表),并以固定的时间间隔与监控节点中的故障事件记录表进行同步(例如:每隔60秒进行一次故障事件记录表同步),并基于同步的时间周期设置一个确定本地记录表可信的预设间隔阈值,例如:将预设间隔阈值设置为同步的时间间隔的一半,此时假设每隔60秒进行一次故障事件记录表同步,则预设间隔阈值可以为30秒。
[0122] 在实际使用中,在缓存有本地记录表时,若确定逻辑群组标识与本地节点的逻辑群组标识一致,则可以先查找本地记录表,将本地记录表的最后同步时刻与当前时刻之间的间隔与预设时间间隔进行比较,来确定本地记录表中的信息是否可信。
[0123] 若是本地记录表的最后同步时刻与当前时刻之间的间隔小于或等于预设时间间隔,则表示此时本地记录表距离上次同步的时刻较近,该本地记录包中的记录可信,因此,可以直接将本地记录表作为步骤S40中判断时使用的故障事件记录表。
[0124] 若是本地记录表的最后同步时刻与当前时刻之间的间隔大于预设时间间隔,则表示此时本地记录表距离上次同步的时刻已经较久,该本地记录表中的记录已经不再可信,因此,可以根据逻辑群组标识及最后同步时刻构建记录获取请求,将记录获取请求发送至监控节点,令监控节点反馈故障时间记录表,之后根据故障事件记录表对本地记录表进行更新。
[0125] 其中,由于随着时间的推进,监控节点中的故障事件记录表会不断变大,若每次均需要其反馈完整的故障事件记录表,可能会导致整体流程过慢,最终导致故障上报不及时,为了避免此种现象,监控节点在接收到记录获取请求后,可以从中提取逻辑群组标识及最后同步时刻,根据逻辑群组标识查找到对应的故障事件记录表,并将故障事件记录表中最后同步时刻之后新增的故障事件记录发送至故障上报设备,则此时故障上报设备可以根据新增的故障事件记录对本地记录表进行更新,并将更新后的本地记录表作为步骤S40中判断时使用的故障事件记录表。
[0126] 本实施例通过若所述逻辑群组标识与本地节点的逻辑群组标识一致,则根据所述逻辑群组标识构建记录获取请求;通过所述记录获取请求访问监控节点,以使所述监控节点反馈故障事件记录表。由于是从监控节点获取故障事件记录表,可以保证可以获得最新的故障事件记录表,从而准确的判断是否已有其他节点上报过该故障信息。
[0127] 参考图5,图5为本发明一种集群节点故障上报方法第三实施例的流程示意图。
[0128] 基于上述第一实施例,本实施例集群节点故障上报方法的所述步骤S10之前,还包括:
[0129] 步骤S01:在接收到故障广播信息时,从所述故障广播信息中提取发起节点标识。
[0130] 需要说明的是,特定情况下,可能有集群节点检测到了其他集群节点出现故障,但是,其无法将故障信息上报至监控节点(例如:检测到故障信息的集群节点与监控节点之间的通信链路异常,无法正常通信),则此时该集群节点可以选择在集群中将故障信息进行广播,则此时集群中的其他节点(如故障上报设备)可以接收到故障广播信息,此时为了确定故障广播信息是否为集群中的节点发送,可以从故障广播信息中提取发起节点标识。
[0131] 进一步的,为了保证其他集群节点可以验证故障广播信息是否为伪造的广播信息,集群节点在发送广播信息时,可以将自身的节点信息进行多重处理,然后生成的密文添加在故障广播信息中,则此时本实施例所述从所述故障广播信息中提取发起节点标识的步骤,可以包括:
[0132] 从所述故障广播信息中提取密文广播信息;
[0133] 根据预设分割规则对所述密文广播信息进行分割,获得多段分割密文;
[0134] 依据预设组合顺序将所述多段分割密文进行组装,获得组装密文;
[0135] 通过预设解密算法对所述组装密文进行解密,获得发起节点标识。
[0136] 需要说明的是,预设分割规则及预设组合规则均可以由故障上报设备的管理人员根据实际需要预先进行设置,例如:将预设分割规则设置为将密文广播信息按等分分割为4份,预设组合顺序可以设置为对组装密文按分割先后顺序进行编号,然后依据编号顺序“2‑4‑1‑3”进行拼接组装。
[0137] 在实际使用中,预设解密算法可以为可逆加密算法对应的解密算法,例如:RC2或RC4算法。
[0138] 其中,将自身的节点信息进行多重处理,生成密文广播信息的方式为上述从所述故障广播信息中提取发起节点标识的步骤的逆向处理步骤,此处不再赘述。
[0139] 可以理解的是,由于密文广播信息是根据节点信息经过复杂处理后生成的,恶意攻击者难以获知具体的生成方式,因此,密文广播信息难以被伪造,由此保证了其他集群节点可以根据故障广播信息中的密文广播信息快速验证故障广播信息是否为伪造的广播信息。
[0140] 步骤S02:根据所述发起节点标识及节点群组列表确定发起节点是否为业务集群中的业务节点。
[0141] 在实际使用中,根据发起节点标识及节点群组列表确定发起节点是否为业务集群中的业务节点可以是检测节点群组列表中是否存在发起节点标识对应的节点信息,若存在,则判定发起节点是否为业务集群中的业务节点;若不存在,则判定发起节点不为业务集群中的业务节点。
[0142] 步骤S03:若是,则判定检测到集群中的邻居节点发生故障。
[0143] 可以理解的是,若发起节点是业务集群中的业务节点,则表示此时该业务节点自身无法上报故障信息,需要其他集群节点协助进行故障信息上报,此时故障上报设备可以判定检测到集群中的邻居节点发生故障,并继续执行后续步骤,以确定是否需要将故障信息上报至监控节点。
[0144] 本实施例通过在接收到故障广播信息时,从所述故障广播信息中提取发起节点标识;根据所述发起节点标识及节点群组列表确定发起节点是否为业务集群中的业务节点;若是,则判定检测到集群中的邻居节点发生故障。由于在接收到故障广播信息时,会从中提取发起节点标识,在根据发起节点标识确定发起节点为业务集群中的业务节点时,才会判定检测到集群中的邻居节点发生故障,避免了外部广播信息对故障上报的影响。
[0145] 此外,本发明实施例还提出一种存储介质,所述存储介质上存储有集群节点故障上报程序,所述集群节点故障上报程序被处理器执行时实现如上文所述的集群节点故障上报方法的步骤。
[0146] 参照图6,图6为本发明集群节点故障上报装置第一实施例的结构框图。
[0147] 如图6所示,本发明实施例提出的集群节点故障上报装置包括:
[0148] 检测模块10,用于在检测到集群中的邻居节点发生故障时,将发生故障的邻居节点作为待上报节点;
[0149] 计算模块20,用于获取所述待上报节点的逻辑群组标识;
[0150] 获取模块30,用于若所述逻辑群组标识与本地节点的逻辑群组标识一致,则获取故障事件记录表;
[0151] 构建模块40,用于在所述故障事件记录表中不存在所述待上报节点对应的故障事件记录时,根据所述待上报节点的节点信息构建故障信息;
[0152] 上报模块50,用于将所述故障信息上报至监控节点。
[0153] 本实施例通过在检测到集群中的邻居节点发生故障时,将发生故障的邻居节点作为待上报节点;获取待上报节点的逻辑群组标识;若逻辑群组标识与本地节点的逻辑群组标识一致,则获取故障事件记录表;在故障事件记录表中不存在待上报节点对应的故障事件记录时,根据待上报节点的节点信息构建故障信息;将故障信息上报至监控节点。由于在检测到邻居节点发生故障时,会将待上报节点与本地节点的逻辑群组标识进行比较,在一致时,才尝试上报故障信息,且还会先检测是否已有其他节点上报过,从而避免了多个节点同时上报重复的故障信息,避免了监控节点压力过大。
[0154] 进一步的,所述计算模块20,还用于获取所述待上报节点的节点标识信息;对所述节点标识信息进行哈希运算,获得节点哈希值;根据业务集群的节点总数对所述节点哈希值进行取模,获得节点编号;将所述节点编号与预设冗余系数的比值作为所述待上报节点的逻辑群组标识。
[0155] 进一步的,所述获取模块30,还用于若所述逻辑群组标识与本地节点的逻辑群组标识一致,则根据所述逻辑群组标识构建记录获取请求;通过所述记录获取请求访问监控节点,以使所述监控节点反馈故障事件记录表。
[0156] 进一步的,所述获取模块30,还用于若所述逻辑群组标识与本地节点的逻辑群组标识一致,则查找本地记录表;获取所述本地记录表的最后同步时刻;若所述最后同步时刻与当前时刻之间的间隔大于预设间隔阈值,则根据所述逻辑群组标识及所述最后同步时刻构建记录获取请求;
[0157] 所述获取模块30,还用于根据所述故障事件记录表对所述本地记录表进行更新。
[0158] 进一步的,所述检测模块,还用于在故障检测条件被满足时,获取节点群组列表;根据所述节点群组列表确定目标邻居节点,并向所述目标邻居节点发送故障检测请求;若在第一预设时长内未接收到所述目标邻居节点反馈的故障检测响应,则判定所述目标邻居节点发生故障。
[0159] 进一步的,所述检测模块,还用于在接收到故障广播信息时,从所述故障广播信息中提取发起节点标识;根据所述发起节点标识及节点群组列表确定发起节点是否为业务集群中的业务节点;若是,则判定检测到集群中的邻居节点发生故障。
[0160] 进一步的,所述检测模块,还用于从所述故障广播信息中提取密文广播信息;根据预设分割规则对所述密文广播信息进行分割,获得多段分割密文;依据预设组合顺序将所述多段分割密文进行组装,获得组装密文;通过预设解密算法对所述组装密文进行解密,获得发起节点标识。
[0161] 应当理解的是,以上仅为举例说明,对本发明的技术方案并不构成任何限定,在具体应用中,本领域的技术人员可以根据需要进行设置,本发明对此不做限制。
[0162] 需要说明的是,以上所描述的工作流程仅仅是示意性的,并不对本发明的保护范围构成限定,在实际应用中,本领域的技术人员可以根据实际的需要选择其中的部分或者全部来实现本实施例方案的目的,此处不做限制。
[0163] 另外,未在本实施例中详尽描述的技术细节,可参见本发明任意实施例所提供的集群节点故障上报方法,此处不再赘述。
[0164] 此外,需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者系统不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者系统所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者系统中还存在另外的相同要素。
[0165] 上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
[0166] 通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如只读存储器(Read Only Memory,ROM)/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
[0167] 以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。