一种高可用集群的心跳检测方法、存储介质和计算节点技术

技术编号:30637847 阅读:23 留言:0更新日期:2021-11-04 00:26
本发明专利技术公开了一种高可用集群的心跳检测方法、存储介质和计算节点。该心跳检测方法,由集群的计算节点执行,该方法包括网络心跳步骤:按照第一预设时间间隔定时通过心跳网络向其他计算节点发送心跳信息,若超过预设时长t1未接收到计算节点A的心跳信息,则认为计算节点A发生故障;存储心跳步骤:按照第二预设时间间隔定时往心跳盘写入自身的心跳信息并读取其他计算节点写入的心跳信息,若超过预设时长t2未读取到计算节点A新写入的心跳信息,则认为计算节点A发生故障。该心跳检测方法能及时检测到计算节点无法访问存储设备。检测到计算节点无法访问存储设备。检测到计算节点无法访问存储设备。

【技术实现步骤摘要】
一种高可用集群的心跳检测方法、存储介质和计算节点


[0001]本专利技术涉及高可用集群
,尤其涉及一种高可用集群的心跳检测方法、存储介质和计算节点。

技术介绍

[0002]Pacemaker是 Linux环境中使用最为广泛的开源集群资源管理器。Pacemaker仅是集群资源管理器,并不提供集群心跳信息,因此需要基于Corosync(集群信息引擎)来实现心跳检测机制,利用Corosync提供的消息和集群成员管理功能,来实现节点和资源级别的故障检测和资源恢复,从而最大程度保证集群服务的高可用性。因此,业内常用Pacemaker+Corosync来构建高可用集群,运行时通过Corosync的心跳检测机制来检测集群计算节点是否还在提供服务,若检测计算节点发生故障,pacemaker就会把故障计算节点上的资源转移到其他正常计算节点上,如此则实现了高可用集群的自动管理。
[0003]Corosync的心跳检测机制具体为:每个计算节点定时通过心跳网络向其他节点组播心跳包,以告知其他计算节点本节点是健康的。如果计算节点超过预设个数的心跳周期没有接收到某个计算节点的心跳包的话,就通知集群该计算节点异常以对其进行隔离。这种心跳检测机制存在缺陷,在某些情况下不能及时检测出计算节点的存储故障,例如,计算节点A主机正常但无法访问存储设备,此时计算节点A与其他计算节点之间的心跳网络仍是连通的,其他计算节点仍能接收到计算节点A的心跳包,集群就会以为计算节点A是正常的,但计算节点A实际上已经发生了故障(无法访问存储设备)。

技术实现思路

[0004]本专利技术所要解决的技术问题是提供一种高可用集群的心跳检测方法、存储有被执行时可实现上述方法的计算机程序的计算机可读存储介质以及包括该存储介质的高可用集群的计算节点,该心跳检测方法能及时检测到计算节点无法访问存储设备。
[0005]为了解决上述技术问题,本专利技术的一种高可用集群的心跳检测方法,由集群的计算节点执行,该方法包括网络心跳步骤:按照第一预设时间间隔定时通过心跳网络向其他计算节点发送心跳信息,若超过预设时长t1未接收到计算节点A的心跳信息,则认为计算节点A发生故障,以集群中的共享盘作为心跳盘,该方法包括存储心跳步骤:按照第二预设时间间隔定时往心跳盘写入自身的心跳信息并读取其他计算节点写入的心跳信息,若超过预设时长t2未读取到计算节点A新写入的心跳信息,则认为计算节点A发生故障。
[0006]可选的,所述心跳盘划分为分别对应多个计算节点的多个存储块,每个计算节点只往自身对应的存储块写入心跳信息。
[0007]可选的,所述第二预设时间间隔是2秒/次。
[0008]可选的,所述的“往心跳盘写入自身的心跳信息”具体是“向心跳盘写入当前的时间戳”。
[0009]可选的,所述预设时长t2为60s。
[0010]可选的,在认为计算节点A发生故障后,若计算节点A不是主节点,则上报给集群主节点以使主节点把计算节点A所在的主机隔离起来,若计算节点A是主节点,则在其他计算节点当中重新选举出主节点然后上报给集群新的主节点以使主节点把计算节点A所在的主机隔离起来。
[0011]可选的,具体是基于Pacemaker和Corosync的高可用集群的心跳检测方法。
[0012]一种计算机可读存储介质,其上存储有可执行的计算机程序,所述计算机程序被执行时可实现如上所述的高可用集群的心跳检测方法。
[0013]一种高可用集群的计算节点,包括处理器和计算机可读存储介质,该计算机可读存储介质是如上所述的计算机可读存储介质。
[0014]该高可用集群的心跳检测方法在网络心跳检测机制的基础上增加了存储心跳检测机制,集群的每个计算节点定时向心跳盘写入自身的心跳信息并读取其他计算节点写入的心跳信息,从而获知其他计算节点的健康状态。计算节点若无法访问存储设备,就会无法往心跳盘中写入心跳信息,其他计算节点若超过预设时长t2未读取到该计算节点新写入的心跳信息,则认为该计算节点发生故障,如此在计算节点无法访问存储设备时就可以检测到了。这两种心跳检测机制分别独立执行,两者互为补充,从而更全面地对计算节点的故障进行检测。
附图说明
[0015]图1是高可用集群的结构框图。
具体实施方式
[0016]以下结合具体实施例对本专利技术创造作详细说明。
[0017]如图1所示,高可用集群包括相互通信连接的三个计算节点A、B、C,其中计算节点A作为主节点。各个计算节点A、B、C都安装有集群资源管理器Pacemaker和集群信息引擎Corosync,该集群使用Pacemaker和Corosync实现其高可用服务。计算节点A、B、C包括处理器和计算机可读存储介质,计算机可读存储介质存储有可执行的计算机程序,处理器可读取所述计算机程序从而实现高可用集群的心跳检测方法,下面通过具体实例说明该方法的执行流程:假设在T1时刻启用高可用服务,此时,计算节点A、B、C都能够正常工作,各个计算节点之间通过网络心跳机制和存储心跳机制来告知其他计算节点本节点是健康的。计算节点A、B、C一起共享使用外部存储系统,外部存储系统中设有一个心跳盘,心跳盘划分为三个存储块a、b、c,这三个存储块a、b、c分别对应三个计算节点A、B、C。以计算节点A为例来说明网络心跳机制和存储心跳机制:在T1时刻,计算节点A通过网络分别向计算节点B、C发送网络心跳信息,与此同时,计算节点A判断是否在预设时长t1=90s内通过网络接收到来自计算节点B、C的网络心跳信息。计算节点A在90s内接收到计算节点B、C的网络心跳信息,就判定计算节点B、C是健康的。同理,计算节点B亦通过网络接收到计算节点A、C发送的网络心跳信息,据此判定计算节点A、C是健康的。以此类推,计算节点C亦判定计算节点A、B是健康的。
[0018]在T1时刻,计算节点A除了通过网络发送网络心跳信息以外,还往心跳盘的存储块a写入当前时刻的时间戳,以时间戳作为存储心跳信息。同样地,计算节点B、C也分别往存储
块b、c写入当前时刻的时间戳。计算节点A在写入了时间戳之后,随即读取存储块b、c中的信息。以读取存储块b的信息为例,读取到计算节点B写入到存储块b中的时间戳,判断该时间戳与当前时刻的时间差是否超过预设时长t2=60s,若不超过则判定计算节点B是健康的。同理,计算节点A判定计算节点C亦是健康的。
[0019]同理,计算节点B在写入了时间戳之后,随即读取出存储块a、c中的信息,读取到存储块a、c中的时间戳与当前时刻的时间差都不超过预设时长t2=60s,从而判定计算节点A、C是健康的。同理,计算节点C亦判定计算节点A、B是健康的。
[0020]自T1时刻过了2s之后(记为T2时刻),计算节点A通过网络分别向计算节点B、C发送网络心跳信息,与此同时,计算节点A判断是否在预设时长t1=90s内通过网络接收到来自计算节点B、C的网络心跳信息。计算节点A在90s内接收到计算节点B、C的网络心跳信息,就判定计算节点B、C是健康的。同本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种高可用集群的心跳检测方法,由集群的计算节点执行,该方法包括网络心跳步骤:按照第一预设时间间隔定时通过心跳网络向其他计算节点发送心跳信息,若超过预设时长t1未接收到计算节点A的心跳信息,则认为计算节点A发生故障,其特征是:以集群中的共享盘作为心跳盘,该方法包括存储心跳步骤:按照第二预设时间间隔定时往心跳盘写入自身的心跳信息并读取其他计算节点写入的心跳信息,若超过预设时长t2未读取到计算节点A新写入的心跳信息,则认为计算节点A发生故障。2.如权利要求1所述的高可用集群的心跳检测方法,其特征是:所述心跳盘划分为分别对应多个计算节点的多个存储块,每个计算节点只往自身对应的存储块写入心跳信息。3.如权利要求1所述的高可用集群的心跳检测方法,其特征是:所述第二预设时间间隔是2秒/次。4.如权利要求1所述的高可用集群的心跳检测方法,其特征是:所述的往心跳盘写入自身的心跳信息具体是往心跳盘写入当前的时间戳。5....

【专利技术属性】
技术研发人员:程少锋刘建平朱敏健
申请(专利权)人:云宏信息科技股份有限公司
类型:发明
国别省市:

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

1