一种基于高可用检测节点的分布式系统节点故障检测方法技术方案

技术编号:19067414 阅读:17 留言:0更新日期:2018-09-29 14:44
本发明专利技术公开了一种基于高可用检测节点的分布式系统节点故障检测方法,包括1)在系统中设置两个以上检测节点,用于对其他所有节点的故障检测;多个检测节点之间使用心跳报文进行主检测节点选举和故障切换,同时心跳报文也会到达系统每个节点;2)客户端向主检测节点发出请求,由主检测检点对待检测的节点进行故障检测;3)主检测节点将不同客户端对同一个待检测的目标节点的检测请求进行合并;4)主检测节点接收到请求后开始周期性的对目标节点进行检测,检测结果缓存在主检测节点的内存中,能够合并检测相同的目标节点,本发明专利技术能够避免用户层程序卡顿对检测结果的误判,并且减少了报文数量,提高了检测效率。

【技术实现步骤摘要】
一种基于高可用检测节点的分布式系统节点故障检测方法
本专利技术涉及一种基于高可用检测节点的分布式系统节点故障检测方法,属于网络通信

技术介绍
分布式系统是由多个节点构成,如果某些节点发生故障后不进行处理,如流量分摊、主备切换等处理动作,则会影响整个系统的功能。因此如何快速准确的判断节点故障是非常重要的。心跳方案是目前较为流行的节点故障检测方法,但是它有一项重大缺陷,就是心跳发送和接收程序是运行在操作系统之上的用户层级中,一旦CPU等资源不足,心跳程序会发生卡顿,会造成误判。另外操作系统的ping命令是一种常用的节点检测手段,但是如果简单的让每个节点ping其他所有节点获取状态,则系统形成一个网状的检测拓扑结构,报文数量与节点数量成指数级相关,大量的ping报文可能会造成网络瘫痪。
技术实现思路
针对现有技术存在的问题,本专利技术提供一种基于高可用检测节点的分布式系统节点故障检测方法,能够避免用户层程序卡顿对检测结果的误判,并且减少了报文数量,提高了检测效率。本专利技术所要解决的技术问题是通过以下技术方案实现的:本专利技术是一种基于高可用检测节点的分布式系统节点故障检测方法,方法采用具备多个冗余备份的检测节点对目标节点发送ICMP(InternetControlMessageProtocol,控制报文协议)报文进行故障检测,能够将多个客户端对同一个节点的检测请求进行合并,能够利用检测节点本地缓存和全局共享内存对检测请求应答进行加速。一种基于高可用检测节点的分布式系统节点故障检测方法,包括:1)在系统中设置两个以上检测节点(检测节点可以由任意节点担任)其中一个为主检测节点,其余节点为备检测节点,用于对其他所有节点的故障检测;多个检测节点之间周期性的发出UDP广播作为心跳报文,报文中包括检测节点的节点名、IP地址、是否主节点等信息。每个检测节点在收到其他检测节点的心跳后,选举出IP地址数值最小的节点为主检测节点。非检测节点收到心跳后也会执行同样的逻辑确定主检测节点,并获知主检测节点的IP地址用于通信。当主检测节点故障后,其他检测节点通过心跳报文重新确定IP地址最小的为主检测节点,完成故障切换。同时主检测节点周期性的将检测结果通过组播发送到其他检测节点,使得故障切换后新的主检测节点能够获取上一时刻系统节点的状态,能够立刻响应客户端的查询请求,实现无缝切换。2)客户端(即每个节点的客户端程序)调用接口,接口内通过TCP或UDP向主检测节点发送请求报文,报文中包括希望被检测的目标节点的IP和超时时间这两个参数。由主检测节点向目标节点直接发出ICMP报文,在超时时间内得到响应则回复客户端该目标节点在线,否则回复该目标节点故障,并且主检测检点对待检测的节点进行故障检测时,由被检测点的系统内核回复检测报文,这样避免了用户层程序卡顿对判断造成影响,并且检测网络的拓扑是以检测节点为中心的星型结构,代替了传统的每个节点对等的网状结构。3)主检测节点将不同客户端对同一个待检测的目标节点的检测请求进行合并;检测节点为每个客户端单独保存了目标IP和超时时间参数,实现了对不同目标节点使用不同检测超时时间的功能。检测节点在超时时间内以均匀间隔连续发出3次ICMP报文进行检测,当收到第一次回复后判定节点状态为在线。当多个客户端对同一目标节点提出检测请求时,对请求参数进行合并处理,取最短的超时时间,并且只发出一份ICMP检测报文,减少了报文数量。最后将结果统一回复给所有客户端。4)主检测节点接收到请求后开始周期性的对目标节点进行检测,检测结果缓存在主检测节点的内存中,当其他任意客户端需要对同一目标节点进行检测时,立刻从缓存直接返回目标节点的实时状态,具体为检测节点以一定的周期对目标节点发送ICMP报文进行故障检测,并将检测结果缓存在本地内存中。当再次收到对同一目标节点的检测请求时,直接将内存中缓存的检测结果立刻发送给请求节点。而不是每次请求单独发送ICMP报文,不需要请求节点等待。当超过一定时间间隔没有任何节点再请求检测这个目标节点,则停止周期性ICMP报文的发送,此间隔可配置。主检测节点不仅仅将检测结果通过TCP或UDP返回给客户端。还可将所有被检测节点的健康状态以广播推送到全系统,在每个节点上设立检测代理,由代理接收广播后存入本地共享内存。当本地客户端发出一个请求时,首先查询本地共享内存是否已经存在结果,如果存在直接获取,不再与检测节点网络通信,大大提高了检测速度。如果共享内存中没有目标节点,说明此节点第一次被检测,则客户端与检测节点通信传递参数,开始检测过程。这个广播可以通过配置打开,如果不打开则每次客户端都与主检测节点通信,如果打开则以增加报文来提升响应速度。本专利技术所达到的有益效果如下:1.本专利技术在检测故障时,由操作系统内核回复检测报文,而不是用户层的心跳程序,避免用户层程序卡顿对判断造成的影响,使得检测结果更加准确;2.本专利技术统一由检测节点对其他节点进行故障检测,而不是每个节点自身去检测其他节点,避免网状拓扑的大量报文的发送,在全系统层面减少了检测报文;3.本专利技术的多个检测节点之间通过心跳报文和共享内存实现故障冗余和无缝切换,提高了系统检测功能的可靠性;4.本专利技术的中不同客户端对同一目标节点的检测请求可以进行合并,减少了报文的发送;5.本专利技术利用缓存技术对同一节点的重复请求可以立刻给予回复,而不是请求一次检测一次,提升了单次检测请求的完成速度;6.本专利技术可以把节点检测结果广播到全系统,让每个节点从本地共享内存直接查询,大大提升检测速度。7.本专利技术不需要安装额外的第三方软件,只需安装检测服务端、客户端动态库,检测代理可选。且适用于各种Linux、UNIX和Windows平台。综上所述,本专利技术是一种结果准确、可靠性高、速度快、报文少、安装简单、支持跨平台的分布式系统节点故障检测方法。附图说明图1是本专利技术主检测节点的故障切换流程图;图2是本专利技术节点故障检测网络拓扑图;图3是本专利技术全系统节点状态广播推送和客户端查询示意图。具体实施方式为了进一步描述本专利技术的技术特点和效果,以下结合附图和具体实施方式对本专利技术做进一步描述。为了具体说明故障检测过程,现以6个节点构成分布式系统,node1、node2、node3担当检测节点(它们也可以同时是被检测节点)的场景举例。如图1-图3所示,图1是主检测节点的故障切换流程图。在系统初始状态因为node1的IP地址最小它被选举为主检测节点,然后它接收各个节点的检测请求后将检测结果存储在本地共享内存,同时使用组播将检测结果发送到每个检测节点。node1以一定的周期发出心跳广播,同时其他节点也发出心跳。每个检测节点都接收其他检测节点的心跳,假设某一时刻node1故障,则到达超时时间后,其他检测节点都选举IP第二小的node2为新的主检测节点,整个过程不需要第三方仲裁节点参与。图2是节点故障检测网络拓扑图。图中描述了检测系统工作的原理,包括检测节点的高可用,上一段已经详细描述过,也包括客户端发起请求到获得结果的过程。客户端是运行在node1~node6其中一个节点上的进程,它通过检测节点的心跳报文获知主检测节点的IP。客户端1向主检测节点发送检测192.168.206.3的请求,超时时间timeout1;客本文档来自技高网...

【技术保护点】
1.一种基于高可用检测节点的分布式系统节点故障检测方法,其特征在于,包括:1)在系统中设置两个以上检测节点,其中一个为主检测节点,其余节点为备检测节点,用于对其他所有节点的故障检测;多个检测节点之间使用心跳报文进行主检测节点选举和故障切换,同时心跳报文也会到达系统每个节点,通知每个节点当前具体执行检测工作的主检测节点的IP地址;2)客户端向主检测节点发出请求,由主检测检点对待检测的节点进行故障检测;3)主检测节点将不同客户端对同一个待检测的目标节点的检测请求进行合并;4)主检测节点接收到请求后开始周期性的对目标节点进行检测,检测结果缓存在主检测节点的内存中,当其他任意客户端需要对同一目标节点进行检测时,立刻从缓存直接返回目标节点的实时状态。

【技术特征摘要】
1.一种基于高可用检测节点的分布式系统节点故障检测方法,其特征在于,包括:1)在系统中设置两个以上检测节点,其中一个为主检测节点,其余节点为备检测节点,用于对其他所有节点的故障检测;多个检测节点之间使用心跳报文进行主检测节点选举和故障切换,同时心跳报文也会到达系统每个节点,通知每个节点当前具体执行检测工作的主检测节点的IP地址;2)客户端向主检测节点发出请求,由主检测检点对待检测的节点进行故障检测;3)主检测节点将不同客户端对同一个待检测的目标节点的检测请求进行合并;4)主检测节点接收到请求后开始周期性的对目标节点进行检测,检测结果缓存在主检测节点的内存中,当其他任意客户端需要对同一目标节点进行检测时,立刻从缓存直接返回目标节点的实时状态。2.根据权利要求1所述的一种基于高可用检测节点的分布式系统节点故障检测方法,其特征在于,所述主检测节点能够向所有节点广播被检测节点的健康状态。3.根据权利要求1所述的一种基于高可用检测节点的分布式系统节点故障检测方法,其特征在于,所述步骤1)中多个检测节点之间使用心跳报文进行主检测节点选举和故障切换,同时心跳报文也会到达系统每个节点,通知每个节点当前具体执行检测工作的主检测节点的IP地址具体为:每个检测节点周期性的发出UDP广播作为心跳报文,报文中包括检测节点的节点名、IP地址、是否为主节点的信息;非检测节点收到心跳后也会执行检测检点同样的逻辑确定主检测节点,并获知主检测节点的IP地址;当主监测点发生故障后,其他检测节点通过心跳报文重新确定IP地址最小的为主检测节点,完成故障后的主检测点切换。4.根据权利要求3所述的一种基于高可用检测节点的分布式系统节点故障检测方法,其特征在于,所述步骤2)客户端向主检测节点发出请求,由主检测检点对待检测的节点进行故障检测具体为:由某个节点的客户端程序通过TCP或UDP向主检测节点发送请求报文,报文中包括希望被检测的目标节点的IP和超时时间这两个参数,由主检测节点向目标节点直接发出ICM...

【专利技术属性】
技术研发人员:高原张勇顾文杰宁剑陈鹏王毅郭骏张学勇何源
申请(专利权)人:国电南瑞科技股份有限公司国家电网公司华北分部国家电网公司南瑞集团有限公司国电南瑞南京控制系统有限公司
类型:发明
国别省市:江苏,32

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1