CN103051470B - 一种集群及其磁盘心跳的控制方法 - Google Patents
一种集群及其磁盘心跳的控制方法 Download PDFInfo
- Publication number
- CN103051470B CN103051470B CN201210500389.7A CN201210500389A CN103051470B CN 103051470 B CN103051470 B CN 103051470B CN 201210500389 A CN201210500389 A CN 201210500389A CN 103051470 B CN103051470 B CN 103051470B
- Authority
- CN
- China
- Prior art keywords
- heartbeat
- node
- sector
- cluster
- magnetic disk
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Landscapes
- Signal Processing For Digital Recording And Reproducing (AREA)
- Multi Processors (AREA)
Abstract
本发明公开了一种集群的磁盘心跳的控制方法,包括:在通信心跳标识为是时,集群的任一节点交替执行磁盘心跳与网络心跳或串口心跳之一或者在两次磁盘心跳之间至少间隔一次网络心跳和串口心跳,在通信心跳标识为否时,进行磁盘心跳;当任一节点无法检测到网络心跳或串口心跳时,将通信心跳标识设置为否;任一节点将未被其他节点使用的扇区之一确定为要使用的扇区,并将除任一节点要使用的扇区以外的其它扇区确定为其它节点要使用的扇区;任一节点通过向要使用的扇区写入数据来向其它节点传达心跳,通过读取其它扇区来获取其它节点的心跳信息。本发明在网络连接出现故障和/或串行线缆出现故障时,由于单独控制磁盘心跳,因此集群仍然可以正常工作,防止出现集群脑裂。
Description
技术领域
本发明涉及计算机网络领域,尤其涉及一种集群及其磁盘心跳的控制方法。
背景技术
高可用集群是集群中较为常见的一种,当硬件和软件***发生故障的时候,运行在集群***中的数据不易丢失,而且能在尽可能短的时间里恢复正常运行。
高可用集群的层次架构,从下向上依次为:信息基础架构层(Messageing and Infrastructure Layer)、成员层(Membership Layer)、资源分配层(Resource Allocation Layer)、资源层(Resource Layer)。其中信息基础架构层为传递心跳信息的非常重要的子层。所谓心跳传递,也就是每一个节点都会定期向其他节点通知自己的心跳信息,如果某节点在3-5个心跳周期还没有检测到的话,就认为该节点宕掉。
在现有技术中,集群中各个节点的心跳连接是一个独立的物理连接,这个连接可以是串行线缆或以太网连接或者共享磁盘。
1、串行线缆:其被认为是比以太网连接安全性稍好些的连接方式,因为黑客(hacker)无法通过串行连接来运行诸如telnet、ssh或rsh类的程序,从而可以降低其通过已劫持的节点再次侵入另一节点的几率。但串行线缆受限于可用长度,因此集群中两个节点的距离必须非常短,串行线缆对应串口心跳。
2、以太网连接:使用此方式可以消除串行线缆的在长度方面限制,并且可以通过此种连接在各个节点间同步文件***,从而减少了从正常通信连接带宽的占用,以太网连接对应网络心跳,但是其安全性较低,容易受到黑客的攻击。
3、共享磁盘:使用该方式时要求必须在高可用集群中存在某种共享的存储***。使用共享磁盘来执行心跳信号交换,多个节点将各自的心跳信息写入共享磁盘的扇区,同时读取其他节点写入的信息,共享磁盘对应磁盘心跳。磁盘心跳最大的好处就是可以防止集群发生脑裂时,集群中的节点会对共享存储中数据造成破坏。
OpenAIS是基于SA Forum标准的集群框架的应用程序接口规范。OpenAIS提供一种集群模式,这个模式包括集群框架,集群成员管理,通信方式,能够为集群软件或工具提供满足AIS标准的集群接口。OpenAIS发展后衍生出来的Corosync是开放性集群引擎工程,Corosync执行高可用应用程序的通信组***。针对心跳问题,Corosync中提供了网络心跳的支持,每个网络心跳以多播或广播的方式发送心跳信息。
但是,corosync中除网络心跳外无任何其他形式的心跳实现,在网络环境出现故障时,由于集群会脑裂成几个小集群,各个小集群会同时读写共享存储中的数据,使得共享存储中数据遭到破坏,集群无法正常工作。
因此,亟需一种解决方案以解决上述问题。
发明内容
本发明所要解决的技术问题之一是需要提供一种能够支持多种形式的心跳的集群中磁盘心跳的控制方法。
为了解决上述技术问题,本发明提供了一种集群的磁盘心跳的控制方法,该方法包括:在通信心跳标识为是时,所述集群的任一节点交替执行磁盘心跳与网络心跳或串口心跳之一或者在两次磁盘心跳之间至少间隔一次网络心跳和串口心跳,以及在通信心跳标识为否时,所述任一节点进行磁盘心跳;其中,当所述任一节点连续预设次数无法检测到网络心跳或串口心跳时,所述任一节点将所述通信心跳标识设置为否;以及在确定所述集群中的各节点使用的扇区时,所述任一节点将所述集群的共享磁盘中用于磁盘心跳的扇区中未被其他节点使用的扇区之一确定为所述任一节点要使用的扇区,并将所述用于磁盘心跳的扇区中除所述任一节点要使用的扇区以外的其它扇区确定为所述集群中除该节点以外的其它节点要使用的扇区;在执行磁盘心跳时,所述任一节点通过向所述要使用的扇区写入数据来向其它节点传达心跳,通过读取其它扇区来获取其它节点的心跳信息。
根据本发明另一方面的控制方法,还包括:在通信心跳标识为否时,所述任一节点间隔预设时间段向其它节点发送回射消息,若接收到对该回射消息的回应,则将所述通信心跳标识设置为是。
根据本发明另一方面的控制方法,在所述任一节点将所述集群的共享磁盘中未被其他节点使用的扇区之一确定为所述任一节点要使用的扇区的处理中,多次遍历所述集群的共享磁盘中用于磁盘心跳的扇区;将所述用于磁盘心跳的扇区中在多次遍历期间无数据变化的扇区判断为未被其它节点使用的扇区。
根据本发明另一方面的控制方法,在所述任一节点将所述集群的共享磁盘中未被其他节点使用的扇区之一确定为所述任一节点要使用的扇区的处理中,在多次遍历所述集群的共享磁盘中用于磁盘心跳的扇区的处理中,多次遍历所述集群的共享磁盘前n个扇区;将所述前n个扇区中在多次遍历期间无数据变化的扇区判断为未被其它节点使用的扇区。
根据本发明另一方面的控制方法,通过在Corosync中增设执行如下操作的通信模块来执行磁盘心跳:根据配置文件中所述集群支持的最大节点数,多次遍历所述集群的共享磁盘中前最大节点数个扇区;将所述前最大节点数个扇区中在多次遍历期间无数据变化的扇区判断为未被其它节点使用的扇区;所述任一节点将所述未被其他节点使用的扇区之一确定为所述任一节点要使用的扇区,并将前最大节点数个扇区中除所述任一节点要使用的扇区以外的其它扇区确定为所述集群中除该节点以外的其它节点要使用的扇区;在执行磁盘心跳时,所述任一节点通过向所述要使用的扇区写入数据来向其它节点传达心跳,通过读取其它扇区来获取其它节点的心跳信息。
根据本发明另一方面的控制方法,在所述任一节点中设置定时器,所述定时器触发所述任一节点通过读取其它扇区来获取其它节点的心跳信息。
根据本发明另一方面,还提供了一种集群,包括:所述集群包括多个节点,各个节点之间通过网络连接和/或串口连接以及共享磁盘连接,其中,
在通信心跳标识为是时,所述集群的任一节点交替执行磁盘心跳与网络心跳或串口心跳之一或者在两次磁盘心跳之间至少间隔一次网络心跳和串口心跳,以及在通信心跳标识为否时,所述任一节点进行磁盘心跳;其中,
当所述任一节点连续预设次数无法检测到网络心跳或串口心跳时,所述任一节点将所述通信心跳标识设置为否;以及
在确定所述集群中的各节点使用的扇区时,所述任一节点将所述集群的共享磁盘中用于磁盘心跳的扇区中未被其他节点使用的扇区之一确定为所述任一节点要使用的扇区,并将所述用于磁盘心跳的扇区中除所述任一节点要使用的扇区以外的其它扇区确定为所述集群中除该节点以外的其它节点要使用的扇区;
在执行磁盘心跳时,所述任一节点通过向所述要使用的扇区写入数据来向其它节点传达心跳,通过读取其它扇区来获取其它节点的心跳信息。
根据本发明另一方面的集群,还包括:在通信心跳标识为否时,所述任一节点间隔预设时间段向其它节点发送回射消息,若接收到对该回射消息的回应,则将所述通信心跳标识设置为是。
根据本发明另一方面的集群,在所述任一节点将所述集群的共享磁盘中未被其他节点使用的扇区之一确定为所述任一节点要使用的扇区的处理中,多次遍历所述集群的共享磁盘中用于磁盘心跳的扇区;将所述用于磁盘心跳的扇区中在多次遍历期间无数据变化的扇区判断为未被其它节点使用的扇区。
根据本发明另一方面的集群,在所述任一节点将所述集群的共享磁盘中未被其他节点使用的扇区之一确定为所述任一节点要使用的扇区的处理中,在多次遍历所述集群的共享磁盘中用于磁盘心跳的扇区的处理中,多次遍历所述集群的共享磁盘前n个扇区;将所述前n个扇区中在多次遍历期间无数据变化的扇区判断为未被其它节点使用的扇区。
与现有技术相比,本发明的一个或多个实施例可以具有如下优点:
本发明通过确定集群中的各个节点在共享磁盘中相应的扇区,在同时进行网络心跳和/或串口心跳时,对磁盘心跳进行单独控制。因为磁盘心跳独立于网络心跳和串口心跳,因此在网络连接出现故障和/或串行线缆出现故障时仍然可以正常工作,防止集群中的节点因无法收到心跳而从集群中脱离的情况。
本发明的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本发明而了解。本发明的目的和其他优点可通过在说明书、权利要求书以及附图中所特别指出的结构来实现和获得。
附图说明
附图用来提供对本发明的进一步理解,并且构成说明书的一部分,与本发明的实施例共同用于解释本发明,并不构成对本发明的限制。在附图中:
图1是根据本发明实施例的集群磁盘心跳的控制方法的流程示意图;
图2是根据本发明实施例的确定集群中的各节点使用的扇区的流程示意图;
图3是根据本发明一示例的高可用集群的总体架构示意图。
具体实施方式
以下将结合附图及实施例来详细说明本发明的实施方式,借此对本发明如何应用技术手段来解决技术问题,并达成技术效果的实现过程能充分理解并据以实施。需要说明的是,只要不构成冲突,本发明中的各个实施例以及各实施例中的各个特征可以相互结合,所形成的技术方案均在本发明的保护范围之内。
另外,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机***中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
图1是根据本发明实施例的集群的磁盘心跳的控制方法的流程示意图,下面参考图1来详细说明本实施例的各个步骤。
需要说明的是,在本实施例中,以集群中的高可用集群为例来说明本发明的特征和优点。其中,本实施例的高可用集群包括多个节点,各个节点之间通过网络连接和/或串口连接以及共享磁盘连接,该集群可以分别实现串口心跳、网络心跳和磁盘心跳。重要的是,该集群可以同时进行网络心跳和/或串口心跳以及磁盘心跳。下面详细说明在这种模式下,控制磁盘心跳的具体流程。
步骤S110,初始化共享磁盘以确定集群中的各节点使用的扇区。
具体地,在确定集群中的各节点使用的扇区时,任一节点将集群的共享磁盘中用于磁盘心跳的扇区中未被其他节点使用的扇区之一确定为任一节点要使用的扇区,并将磁盘心跳的扇区中除任一节点要使用的扇区以外的其它扇区确定为集群中除该节点以外的其它节点要使用的扇区。
在任一节点将集群的共享磁盘中未被其他节点使用的扇区之一确定为任一节点要使用的扇区的处理中,多次遍历集群的共享磁盘中用于磁盘心跳的扇区;将用于磁盘心跳的扇区中在多次遍历期间无数据变化的扇区判断为未被其它节点使用的扇区,或者,多次遍历集群的共享磁盘前n个扇区;将前n个扇区中在多次遍历期间无数据变化的扇区判断为未被其它节点使用的扇区。
更具体地,在集群管理引擎中,例如在Corosync中增设通信模块来执行磁盘心跳,该通信模块是一个exec/totemdisk.c文件,其中包括了用于实现初始化操作的初始化共享磁盘的函数totemdisk_initialize(),该函数负责初始化共享磁盘以确定共享磁盘中的各个扇区所对应的节点。
该函数具体执行如下操作:根据配置文件中集群支持的最大节点数,多次读取并遍历共享磁盘的前最大节点数个扇区,将前最大节点数个扇区中在多次遍历期间无数据变化的扇区判断为未被其它节点使用的扇区;任一节点将未被其他节点使用的扇区之一确定为任一节点要使用的扇区,并将前最大节点数个扇区中除所述任一节点要使用的扇区以外的其它扇区确定为集群中除该节点以外的其它节点要使用的扇区。
如图2所示,在共享磁盘中为任一节点(如节点1)分配扇区时,配置文件中集群支持的最大节点数是m,多次遍历前m个扇区,若扇区中的数据不断更新,则判定该扇区已经被集群中的某个节点使用;若扇区中的数据持续不变且其未被使用,故可以将该扇区确定为该节点1在共享磁盘中的相应扇区,以使用此扇区为节点1写入心跳消息的扇区;如果某扇区中的数据持续不变且其未被使用但节点1已确定了一个扇区为本节点在共享磁盘中的相应扇区,那么该扇区保留给其他节点使用。最后记录下所有集群中的各个节点相对应的扇区。
步骤S120,在通信心跳标识为是(TRUE)时,集群的任一节点交替执行磁盘心跳与网络心跳或串口心跳之一或者在两次磁盘心跳之间至少间隔一次网络心跳和串口心跳。
在集群的各个节点开启后,一般通信心跳标识被设置为TRUE,以表示在该集群中的各个心跳模式均可以正常进行。
以集群中可以进行网络心跳和磁盘心跳为例,在各个节点开启后,集群中的任一节点交替执行磁盘心跳与网络心跳,在执行两种心跳时,二者是彼此独立互不影响的。
例如,在第一时刻任一节点与其他节点进行网络心跳,即在这个时刻节点发送一个网络心跳给其他节点,其他节点回复一个网路心跳;在第二时刻任一节点与其他节点进行磁盘心跳。
在执行磁盘心跳时,任一节点通过向要使用的扇区写入数据来向其它节点传达心跳,通过读取其它扇区来获取其它节点的心跳信息。
例如,可以通过在exec/totemdisk.c文件中增加心跳信息的发送函数totemdisk_token_send()和totemdisk_mcast_send()函数,它们负责当本节点需要向其他节点发送心跳信息时,将心跳信息写入共享磁盘中属于本节点的扇区。
通过对任一节点设置定时器以控制任一节点向其它节点读取心跳信息。即,在任一节点中设置定时器,定时器触发任一节点通过读取其它扇区来获取其它节点的心跳信息。
具体地,该定时器每隔一段时间触发一次,每次触发都去共享磁盘中集群中的其他节点所使用的扇区里读取集群中其他节点发送的心跳信息,保证集群的正常工作。例如,在exec/totemdisk.c文件中增加一个定时器函数timer_function_disk_read(),该定时器每隔一段时间触发一次,每次触发都去已记录下的那些已经被集群中的其他节点所使用的扇区中读取集群中其他节点发送的心跳信息,保证集群的正常工作。
步骤S130,在通信心跳标识为否(FAULTY)时,任一节点进行磁盘心跳。其中,当任一节点连续预设次数无法检测到网络心跳或串口心跳时,任一节点将通信心跳标识设置为否。
需要说明的是,由于网络心跳和串口心跳都无法解决集群脑裂时对共享存储中数据的破坏问题,这是因为当网络心跳和串口心跳出现故障时,集群会脑裂成几个小集群,各个小集群都认为拥有了对共享存储的控制权,会同时读写共享存储中的数据,使得共享存储中数据遭到破坏。
但是在本实施例中由于集群中同时实现了磁盘心跳,会使出现问题的节点必然断开了与共享存储的连接,即使取得了共享存储的控制权也无法读写共享存储中的数据,保护了共享存储中数据不被破坏。
也就是说,当任一节点连续预设次数无法检测到网络心跳或串口心跳时,则可能任一节点的网络心跳或串口心跳出现了故障,则任一节点将通信心跳标识设置为否。但是,由于此时各个节点之间的磁盘心跳还在进行,则保护了集群中共享磁盘中的数据。
另外,在通信心跳标识为否时,任一节点间隔预设时间段向其它节点发送回射消息(echo消息),若接收到对该回射消息的回应,则将通信心跳标识设置为是。这样在通信心跳由中断状态恢复到正常状态时,集群又恢复成多个通信心跳的模式。
为进一步说明本发明的特征及优点,以下结合实例,来说明一个将网络心跳和磁盘心跳混合使用的例子。
图3是根据本发明一示例的高可用集群的总体架构示意图,本示例以具有两个节点的集群为例进行说明。如图3所示,本示例的高可用集群包括两个节点(图中所示的节点A和节点B)。该高可用集群通过使用一块网卡配合路由器等网络连接设备来实现网络心跳,使用一块共享存储器来实现磁盘心跳,图中eth0,eth1分别代表节点A和节点B所使用的以太网卡,/dev/sdz,/dev/sdy分别代表节点A和节点B的磁盘分区。
在正常情况下,节点A和节点B开启后,因为使用了两路心跳,节点A、B会从/etc/corosync/corosync.conf中的配置文件中读取到冗余心跳的模式为passive,在passive模式下两路心跳的通信心跳标识被标记为TRUE。集群中的两个节点会交替使用标记为TRUE的心跳线路发送心跳信息,因此两路心跳彼此独立互不影响。
而且,节点A和节点B会分别绑定本机(本节点)的IP地址。在进行心跳传输之前,会确定节点A和B在共享磁盘中的所使用的扇区,确定第0号扇区为节点A所使用的扇区,除0号扇区外的其他扇区为其他节点所使用的扇区;在确定节点B所使用的扇区时,会发现第0号扇区中的数据是不断更新的,所以会确定除第0号扇区以外的其他扇区(例如第1号扇区)作为节点B所使用的扇区。
在网络环境和共享磁盘均正常时,某一时刻节点A发送一个网络心跳,节点B会回复一个网络心跳。此时如果节点A中用于读取共享磁盘的定时器函数因时间到达而被激活,节点A会查看除第0号扇区外的其他扇区中是否有新的心跳信息达到,因为没有新的心跳信息到达(此时节点B没有通过磁盘心跳来发送心跳信息),则会在节点A中重新添加读取共享磁盘的定时器。
在冗余心跳为passive模式下,网络心跳和磁盘心跳会交替使用,下一时刻节点A会发送一个磁盘心跳,即将其本身的心跳信息写入至第0号扇区,此时如果节点A中用于读取共享磁盘的定时器函数因时间到达而被激活,将会触发节点A去查看除第0号扇区外的其他扇区中是否有新的心跳信息达到,因为没有新的心跳信息到达,则在节点A中会重新添加定时器。当节点B的用于读取共享磁盘的定时器函数因时间到达而被激活,将会触发节点B去查看除第1号扇区外的其他扇区中是否有新的心跳信息达到,因为第0号扇区中有节点A发送的心跳信息,则节点B会读出心跳信息,并回复给节点A一个磁盘心跳,即将节点B自身的心跳信息写入其自身使用的第1号扇区。当节点1的用于读取共享磁盘的定时器函数因时间到达而被激活,则将触发节点A去查看除第0号扇区外的其他扇区中是否有新的心跳信息达到,由于第1号扇区中有节点B发送的心跳信息达到,则节点A会读出心跳信息。
网络心跳和磁盘心跳进行这样的交替使用,保证了集群的正常工作。
假若在某一时刻,节点1上的网线被拔出,在现有技术中由于没有磁盘心跳,整个集群因为没有心跳的传递而无法正常工作。
但是,在本发明示例中,节点A会因为无法接收到心跳信息而进行心跳信息的重传,因为网络心跳和磁盘心跳交替使用,在重新传送心跳信息时会使用磁盘心跳。此时节点B会收到节点A发送的磁盘心跳,因为上一个发送心跳使用的是磁盘心跳,节点B在回复心跳信息时会使用网络心跳,但是由于节点A的网络出现故障,节点A无法收到网络心跳,节点B会使用磁盘心跳进行重传,节点A会收到节点B发送的磁盘心跳。这样经过几个磁盘心跳的周期之后,节点A和节点B的网络心跳的通信心跳标识会因为长时间没有收到对方发送的心跳信息而被标记为FAULTY,并定期(间隔预设时间段)尝试着发送一个回射消息期待对端的呼应,如果得到了对端的回应就会将网络心跳的通信心跳标识标记为TRUE。
在通信心跳标识被标记为FAULTY的情况下,节点1和节点2只能通过共享磁盘进行心跳信息的交互,磁盘心跳的实现保证了集群的正常运行。
本实施例是将磁盘心跳作为一种独立的心跳方式,不依赖于网络心跳或串口心跳。当共享磁盘、串行线缆连接和以太网连接混合使用时,在网络连接出现故障和/或串行线缆连接出现故障的时候,磁盘心跳仍然可以正常运行以维持集群的正常心跳。
本领域的技术人员应该明白,上述的本发明的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,可选地,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在存储装置中由计算装置来执行,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本发明不限制于任何特定的硬件和软件结合。
虽然本发明所揭露的实施方式如上,但所述的内容只是为了便于理解本发明而采用的实施方式,并非用以限定本发明。任何本发明所属技术领域内的技术人员,在不脱离本发明所揭露的精神和范围的前提下,可以在实施的形式上及细节上作任何的修改与变化,但本发明的专利保护范围,仍须以所附的权利要求书所界定的范围为准。
Claims (10)
1.一种集群的磁盘心跳的控制方法,其特征在于,包括:
在通信心跳标识为是时,所述集群的任一节点交替执行磁盘心跳与网络心跳或串口心跳之一或者在两次磁盘心跳之间至少间隔一次网络心跳和串口心跳,以及在通信心跳标识为否时,所述任一节点进行磁盘心跳;其中,
当所述任一节点连续预设次数无法检测到网络心跳或串口心跳时,所述任一节点将所述通信心跳标识设置为否;以及
在确定所述集群中的各节点使用的扇区时,所述任一节点将所述集群的共享磁盘中用于磁盘心跳的扇区中未被其他节点使用的扇区之一确定为所述任一节点要使用的扇区,并将所述用于磁盘心跳的扇区中除所述任一节点要使用的扇区以外的其它扇区确定为所述集群中除该节点以外的其它节点要使用的扇区;
在执行磁盘心跳时,所述任一节点通过向所述要使用的扇区写入数据来向其它节点传达心跳,通过读取其它扇区来获取其它节点的心跳信息;
所述网络心跳和所述串口心跳均对应于所述集群中的独立的物理连接,其中,以太网连接对应于所述网络心跳,串行线缆连接对应于所述串口心跳。
2.根据权利要求1所述的控制方法,其特征在于,还包括:
在通信心跳标识为否时,所述任一节点间隔预设时间段向其它节点发送回射消息,若接收到对该回射消息的回应,则将所述通信心跳标识设置为是。
3.根据权利要求1所述的控制方法,其特征在于,在所述任一节点将所述集群的共享磁盘中未被其他节点使用的扇区之一确定为所述任一节点要使用的扇区的处理中,
多次遍历所述集群的共享磁盘中用于磁盘心跳的扇区;
将所述用于磁盘心跳的扇区中在多次遍历期间无数据变化的扇区判断为未被其它节点使用的扇区。
4.根据权利要求1所述的控制方法,其特征在于,在所述任一节点将所述集群的共享磁盘中未被其他节点使用的扇区之一确定为所述任一节点要使用的扇区的处理中,
在多次遍历所述集群的共享磁盘中用于磁盘心跳的扇区的处理中,多次遍历所述集群的共享磁盘前n个扇区;
将所述前n个扇区中在多次遍历期间无数据变化的扇区判断为未被其它节点使用的扇区,其中,
所述扇区的个数n等于配置文件中所述集群支持的最大节点数。
5.根据权利要求3所述的控制方法,其特征在于,
通过在Corosync中增设执行如下操作的通信模块来执行磁盘心跳:
根据配置文件中所述集群支持的最大节点数,多次遍历所述集群的共享磁盘中前最大节点数个扇区;
将所述前最大节点数个扇区中在多次遍历期间无数据变化的扇区判断为未被其它节点使用的扇区;
所述任一节点将所述未被其他节点使用的扇区之一确定为所述任一节点要使用的扇区,并将前最大节点数个扇区中除所述任一节点要使用的扇区以外的其它扇区确定为所述集群中除该节点以外的其它节点要使用的扇区;
在执行磁盘心跳时,所述任一节点通过向所述要使用的扇区写入数据来向其它节点传达心跳,通过读取其它扇区来获取其它节点的心跳信息。
6.根据权利要求1所述的控制方法,其特征在于,
在所述任一节点中设置定时器,所述定时器触发所述任一节点通过读取其它扇区来获取其它节点的心跳信息。
7.一种集群,其特征在于,包括:
所述集群包括多个节点,各个节点之间通过网络连接和/或串口连接以及共享磁盘连接,其中,
在通信心跳标识为是时,所述集群的任一节点交替执行磁盘心跳与网络心跳或串口心跳之一或者在两次磁盘心跳之间至少间隔一次网络心跳和串口心跳,以及在通信心跳标识为否时,所述任一节点进行磁盘心跳;其中,
当所述任一节点连续预设次数无法检测到网络心跳或串口心跳时,所述任一节点将所述通信心跳标识设置为否;以及
在确定所述集群中的各节点使用的扇区时,所述任一节点将所述集群的共享磁盘中用于磁盘心跳的扇区中未被其他节点使用的扇区之一确定为所述任一节点要使用的扇区,并将所述用于磁盘心跳的扇区中除所述任一节点要使用的扇区以外的其它扇区确定为所述集群中除该节点以外的其它节点要使用的扇区;
在执行磁盘心跳时,所述任一节点通过向所述要使用的扇区写入数据来向其它节点传达心跳,通过读取其它扇区来获取其它节点的心跳信息;
所述网络心跳和所述串口心跳均对应于所述集群中的独立的物理连接,其中,以太网连接对应于所述网络心跳,串行线缆连接对应于所述串口心跳。
8.根据权利要求7所述的集群,其特征在于,还包括:
在通信心跳标识为否时,所述任一节点间隔预设时间段向其它节点发送回射消息,若接收到对该回射消息的回应,则将所述通信心跳标识设置为是。
9.根据权利要求7所述的集群,其特征在于,在所述任一节点将所述集群的共享磁盘中未被其他节点使用的扇区之一确定为所述任一节点要使用的扇区的处理中,
多次遍历所述集群的共享磁盘中用于磁盘心跳的扇区;
将所述用于磁盘心跳的扇区中在多次遍历期间无数据变化的扇区判断为未被其它节点使用的扇区。
10.根据权利要求7所述的集群,其特征在于,在所述任一节点将所述集群的共享磁盘中未被其他节点使用的扇区之一确定为所述任一节点要使用的扇区的处理中,
在多次遍历所述集群的共享磁盘中用于磁盘心跳的扇区的处理中,多次遍历所述集群的共享磁盘前n个扇区;
将所述前n个扇区中在多次遍历期间无数据变化的扇区判断为未被其它节点使用的扇区,其中,
所述扇区的个数n等于配置文件中所述集群支持的最大节点数。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210500389.7A CN103051470B (zh) | 2012-11-29 | 2012-11-29 | 一种集群及其磁盘心跳的控制方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210500389.7A CN103051470B (zh) | 2012-11-29 | 2012-11-29 | 一种集群及其磁盘心跳的控制方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103051470A CN103051470A (zh) | 2013-04-17 |
CN103051470B true CN103051470B (zh) | 2015-10-07 |
Family
ID=48063975
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201210500389.7A Active CN103051470B (zh) | 2012-11-29 | 2012-11-29 | 一种集群及其磁盘心跳的控制方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103051470B (zh) |
Families Citing this family (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP6183931B2 (ja) | 2013-12-25 | 2017-08-23 | Necソリューションイノベータ株式会社 | クラスタシステム、サーバ装置、クラスタシステムの管理方法、及びプログラム。 |
CN105528202B (zh) * | 2014-10-22 | 2021-01-26 | 中兴通讯股份有限公司 | 多控制器***的资源处理方法及装置 |
CN105045533B (zh) * | 2015-07-09 | 2019-03-22 | 上海爱数信息技术股份有限公司 | 适用于双控高可用存储***的磁盘心跳收发方法 |
CN105681074B (zh) * | 2015-12-29 | 2018-11-09 | 北京同有飞骥科技股份有限公司 | 一种增强双机集群可靠、可用性的方法及装置 |
CN106873918A (zh) * | 2017-02-27 | 2017-06-20 | 郑州云海信息技术有限公司 | 一种虚拟化***中的存储设置方法及装置 |
US10785350B2 (en) * | 2018-10-07 | 2020-09-22 | Hewlett Packard Enterprise Development Lp | Heartbeat in failover cluster |
CN109728981A (zh) * | 2019-03-19 | 2019-05-07 | 江苏汇智达信息科技有限公司 | 一种云平台故障监测方法及装置 |
CN112822078B (zh) * | 2021-02-26 | 2023-01-13 | 上海沄熹科技有限公司 | 一种不同网域中各节点raft心跳上报的实现方法 |
CN113595836A (zh) * | 2021-09-27 | 2021-11-02 | 云宏信息科技股份有限公司 | 一种高可用集群的心跳检测方法、存储介质和计算节点 |
CN114844809B (zh) * | 2022-04-18 | 2024-05-07 | 北京凝思软件股份有限公司 | 基于网络心跳和内核磁盘心跳的多因子仲裁方法、装置 |
CN116743550B (zh) * | 2023-08-11 | 2023-12-29 | 之江实验室 | 一种分布式存储集群的故障存储节点的处理方法 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101291243A (zh) * | 2007-04-16 | 2008-10-22 | 广东省新支点技术服务有限公司 | 高可用集群***的裂脑预防方法 |
CN102402395A (zh) * | 2010-09-16 | 2012-04-04 | 上海中标软件有限公司 | 基于仲裁磁盘的高可用***不间断运行方法 |
CN102799394A (zh) * | 2012-06-29 | 2012-11-28 | 华为技术有限公司 | 一种实现高可用集群的心跳服务的方法及装置 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6944785B2 (en) * | 2001-07-23 | 2005-09-13 | Network Appliance, Inc. | High-availability cluster virtual server system |
-
2012
- 2012-11-29 CN CN201210500389.7A patent/CN103051470B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101291243A (zh) * | 2007-04-16 | 2008-10-22 | 广东省新支点技术服务有限公司 | 高可用集群***的裂脑预防方法 |
CN102402395A (zh) * | 2010-09-16 | 2012-04-04 | 上海中标软件有限公司 | 基于仲裁磁盘的高可用***不间断运行方法 |
CN102799394A (zh) * | 2012-06-29 | 2012-11-28 | 华为技术有限公司 | 一种实现高可用集群的心跳服务的方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN103051470A (zh) | 2013-04-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103051470B (zh) | 一种集群及其磁盘心跳的控制方法 | |
US10965496B2 (en) | Logical router comprising disaggregated network elements | |
US10630570B2 (en) | System and method for supporting well defined subnet topology in a middleware machine environment | |
CN105656653B (zh) | 分布式协调***中新增节点的入网方法、装置和*** | |
US7978595B2 (en) | Method for processing multiple active devices in stacking system and stacking member device | |
JP6283361B2 (ja) | ミドルウェアマシン環境における劣化ファットツリーの発見およびルーティングをサポートするためのシステムおよび方法 | |
CN104077199B (zh) | 基于共享磁盘的高可用集群的隔离方法和*** | |
US10454809B2 (en) | Automatic network topology detection for merging two isolated networks | |
JP2003503899A (ja) | スタック型インテリジェント・スィッチング・システム | |
US9197507B2 (en) | Auto-configuring multi-layer network | |
CN101924699A (zh) | 报文转发处理方法、***和运营商边缘设备 | |
CN104753707B (zh) | 一种***维护方法及网络交换设备 | |
CN110493069A (zh) | 故障检测方法、装置、sdn控制器及转发设备 | |
CN111211955A (zh) | 从节点地址分配的方法和节点管理*** | |
CN109981404B (zh) | 自组网网络结构及其诊断方法 | |
CN104125079A (zh) | 一种确定双机热备份配置信息的方法及装置 | |
CN104702693B (zh) | 两节点***分区的处理方法和节点 | |
CN114124803B (zh) | 设备管理方法、装置、电子设备及存储介质 | |
CN102577249A (zh) | 动态寻址主机的连接的实例组 | |
CN104202443B (zh) | 对ip地址冲突进行容灾处理的方法和装置、以及相应设备 | |
CN106559234B (zh) | 控制消息发送方法及装置 | |
US9282054B2 (en) | Determining an active management uplink | |
CN103684858A (zh) | 一种租户网络生成和标签报文处理的方法,及相关设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |