CN102546233A - 一种高可用集群中串口心跳的实现方法 - Google Patents

一种高可用集群中串口心跳的实现方法 Download PDF

Info

Publication number
CN102546233A
CN102546233A CN2011103847497A CN201110384749A CN102546233A CN 102546233 A CN102546233 A CN 102546233A CN 2011103847497 A CN2011103847497 A CN 2011103847497A CN 201110384749 A CN201110384749 A CN 201110384749A CN 102546233 A CN102546233 A CN 102546233A
Authority
CN
China
Prior art keywords
network
heartbeat
node
cluster
serial ports
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.)
Pending
Application number
CN2011103847497A
Other languages
English (en)
Inventor
兰雨晴
魏子然
刘涛
张永军
夏颖
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
China Standard Software Co Ltd
Original Assignee
China Standard Software Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by China Standard Software Co Ltd filed Critical China Standard Software Co Ltd
Priority to CN2011103847497A priority Critical patent/CN102546233A/zh
Publication of CN102546233A publication Critical patent/CN102546233A/zh
Pending legal-status Critical Current

Links

Images

Landscapes

  • Computer And Data Communications (AREA)

Abstract

本发明公开了一种高可用集群中串口心跳的实现方法。本发明的高可用集群同时以网络连接和串行线缆构成,且在一般情况下是以网络心跳对外提供服务,本发明借助一个定时器模块,该定时器模块是通过修改corosync中判断网络心跳出现故障的定时器函数来监控网络环境的状态,在网络心跳中断时,及时启用串口心跳代替网络心跳,保证了节点不会因为网络故障而脱离集群,使得集群可以正常运行。

Description

一种高可用集群中串口心跳的实现方法
技术领域
本发明涉及一种高可用集群中串口心跳的实现方法,尤指一种在高可用集群中增加冗余心跳问题的方法。
背景技术
高可用集群是集群中较为常见的一种,当硬件和软件系统发生故障的时候,运行在集群系统中的数据不易丢失,而且能在尽可能短的时间里恢复正常运行。
高可用集群的层次架构,从下向上讲:Messageing and Infrastructure Layer (信息基础架构层)、Membership 成员层、Resource Allocation资源分配层、Resource Layer(资源层)。其中Messageing and Infrastructure Layer (信息基础架构层)为传递心跳信息的非常重要的子层。传递心跳,也就是说每一个节点都会定期向其他节点通知自己的心跳信息,如果某节点在3-5个心跳周期还没有检测到的话,就认为该节点宕掉。
集群中各个节点的心跳连接是一个独立的物理连接,这个连接可以是串行线缆或以太网连接。
1、  串行线缆:被认为是比以太网连接安全性稍好些的连接方式,因为hacker无法通过串行连接运行诸如telnet、ssh或rsh类的程序,从而可以降低其通过已劫持的节点再次侵入另一节点的几率。但串行线缆受限于可用长度,因此集群中两个节点的距离必须非常短,串行线缆对应串口心跳。
2、以太网连接:使用此方式可以消除串行线缆的在长度方面限制,并且可以通过此种连接在各个节点间同步文件系统,从而减少了从正常通信连接带宽的占用,以太网连接对应网络心跳。
OpenAIS是基于SA Forum标准的集群框架的应用程序接口规范。OpenAIS提供一种集群模式,这个模式包括集群框架,集群成员管理,通信方式,能够为集群软件或工具提供满足AIS标准的集群接口。
OpenAIS发展后衍生出来的corosync是开放性集群引擎工程,Corosync执行高可用应用程序的通信组系统。针对心跳问题,corosync中提供了网络心跳的支持,每个网络心跳以多播或广播的方式发送心跳信息,corosync支持两个网络心跳。
但是corosync中无法增加更多的网络心跳,因此也不支持两个网络心跳与一个串口心跳的组合方式。在网络环境出现故障时,节点将无法传递心跳信息,使得集群无法正常工作。
发明内容
为了解决上述问题,本发明是将串行线缆连接和以太网连接两种综合应用到集群中,在网络连接出现故障的时候,启动串行线缆连接以维持集群的正常心跳。
本发明采用的方式是在集群网络环境刚出现问题时及时开启串口心跳替代网络心跳。
本发明的具体方法包括:该集群同时以串行线缆和网络连接两种方式构成,串行线缆对应串口心跳,网络连接对应网络心跳,在一般情况下该集群以网络心跳对外提供服务,并借助一个定时器模块来监控网络环境的状态,当网络出现故障时,则该定时器模块开启串口心跳以代替网络心跳,以保证集群中的心跳不中断,使得集群可以正常运行并对外提供服务,当网络恢复正常时,则该定时器模块关闭串口心跳。
当corosync中的负责接收发送接收网络心跳的模块在限定时间内无法接收到网络心跳,则重传网络心跳以期待对端网络心跳的回应,多次重传仍无法收到网络心跳时,表示网络出现故障。
当corosync中的负责接收发送接收网络心跳的模块接收到来自对端的网络心跳时,则表示网络恢复正常。
其中,该集群中的每个节点持续向其他节点发送心跳信息以期待回应,若在预定时间内某一个节点无法收到其他节点发送的心跳信息时该定时器模块被激活,而开始对集群的当前网络环境的状态进行监控。
实际操作中,可包括以下几个步骤:
(1)本发明中的定时器模块是通过修改现有的exec/totemudp.c文件中的timer_function_netif_ check_timeout函数来监控网络环境状态的。在该定时器模块中查看网络的连接状态和当前集群中的节点个数以及串口是否已经启用这三个变量的组合值。corosync的网络连接状态有两种状态,在网络环境出现故障时是网络故障状态,网络状态正常时是网络正常状态。当前集群中节点的个数有等于1或大于1两种状态,串口心跳是否启用仅有启用和未启用两种状态。
(2)若网络连接状态和当前节点个数和串口是否启用的这三个变量的组合值表示网络环境的状态为:当前节点所在的网络正常,当前节点所在的集群中节点个数等于1,串口启用,则表示本节点网络故障已恢复,则定时器模块将关闭串口心跳,并将串口状态置为未启用。
(3)若网络连接状态和节点个数和串口是否启用的组合值表示网络环境的状态为:当前节点所在的网络故障,当前节点所在的集群中节点个数等于1,串口未启用,则定时器模块开启串口心跳,将串口状态置为启用。
(4)若网络连接状态和节点个数和串口是否启用的组合值表示网络环境的状态为:当前节点所在的网络故障,当前节点所在的集群中节点个数等于1,串口启用,则该定时器模块不作任何处理。
(5)若网络连接状态和节点个数和串口是否启用的组合值表示网络环境的状态为:当前节点所在的网络正常,当前节点所在的集群中节点个数大于1,串口未启用,则表示网络环境出现故障,对端节点的网络断开,定时器模块将开启串口心跳,将串口状态置为启用。
(6)若网络连接状态和节点个数和串口是否启用的组合值表示网络环境的状态为:当前节点所在的网络正常,当前节点所在的集群中节点个数大于1,串口启用,则表示节点网络故障已恢复,该定时器模块将关闭串口心跳,将串口状态置为未启用。
(7)若网络连接状态和节点个数和串口是否启用的组合值表示网络环境的状态为:当前节点所在的网络故障,当前节点所在的集群中节点个数大于1,串口未启用,则表示本节点的网络出现故障,该定时器模块将开启串口心跳,将串口状态置为启用。
(8)若网络连接状态和节点个数和串口是否启用的组合值表示网络环境的状态为:当前节点所在的网络故障,当前节点所在的集群中节点个数大于1,串口启用,则表示本节点的网络出现故障,串口心跳也出现故障,定时器模块将要做故障处理。
本发明的技术效果是,通过本发明定时器模块,来监控集群中网络环境的状态,若发现网络故障,则由定时器模块及时开启串口心跳代替网络心跳,防止集群中的节点因网络故障无法收到心跳而从集群中脱离的情况。
附图说明
图1为本发明的总体架构示意图;
图2为本发明的定时器模块处理网络故障的流程图。
具体实施方式
为了使本发明的目的、技术方案及有益效果更加清楚明白,以下结合、实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。
图1为本发明的总体示意图,其以具有两个节点的集群为例进行说明。如图1所示,两个长方体代表高可用集群的两个节点(节点1和节点2)。该高可用集群用一块网卡配合路由器等网络连接设备作为网络心跳,用一根串行线缆(Serial Cable)作为串口心跳。
为使本发明的特征及优点得到更清楚的了解,以下结合实例,举一个由于网线被拔出导致网络故障的处理流程的例子(主要涉及图2的分支),并做详细说明如下。
正常情况下,节点1和节点2开启后,节点1、2会分别绑定本机的IP地址,此时集群中有两个节点。节点1和节点2会持续向对方发送心跳信息以期待对方的回应。如果节点1在一定时间内无法收到对方发送的心跳信息则会激活定时器timer_function_netif_timeout_check函数来检查当前网络环境的状态,集群中的成员个数。本发明的定时器模块也可以一开始就不断的对网络环境的状态进行监控,而无需激活步骤。
实施例:假若某一时刻,节点1上的网线被拔出。
节点1会因为无法接收到心跳信息而激活定时器timer_function_netif_timeout_check函数,定时器模块会先调用netif_determine函数,查看当前网络的连接,因为网线被拔出,返回值为0,表示本节点的网络已中断。此时节点2也会因为无法接收到心跳信息而激活定时器timer_function_netif_timeout_check函数,定时器模块会先调用netif_determine函数,查看当前网络的连接,返回值为1,表示对端节点的网络已中断。
若没有使用本发明所述的方法,节点1会因为网络中断,脱离原来的集群,重新绑定回环IP地址(127.0.0.1),形成一个只有一个节点的集群,等到网络故障恢复时才会重新绑定本机IP地址并加入集群中。节点2会因为对端节点的网络已中断,将节点1从集群中排除,如果集群中节点个数并未达到临界值将继续对外提供服务,如果集群中节点个数已达到临界值,集群将停止工作。
在本发明所述的方法的情况下,当节点1调用timer_function_netif_timeout_check函数时,节点1的状态是网络环境故障,集群中的节点个数大于1,串口未启用(图2分支6),此时定时器模块将启用串口心跳用以代替网络心跳发送数据。当节点2调用timer_function_netif_timeout_check函数时,节点2的状态是网络环境正常,集群中的节点个数大于1,串口未启用(图2分支4),此时定时器模块将启用串口心跳用以代替网络心跳发送数据。用户插好被拔出的节点1上的网线之后,节点1和节点2都会收到对端发送过来的网络心跳,此时将关闭串口心跳。
图2的分支1,5是用于在网络心跳信息到来之前如果定时器timer_function_netif_timeout_check函数被激活,将恢复网络心跳,同时关闭串口心跳。图2的分支7是串口线缆出现故障才会遇到的情况,此时网络心跳与串口心跳都出现了故障,关闭串口心跳,节点只能脱离集群。
图2的分支2和3是节点1在节点2未启动时就遇到了网络环境故障,此时集群尚未建立成功,节点1开启串口心跳等待网络环境的恢复。
现有技术中的定时器模块在网络中时会被激活,会绑定回环IP地址并等待网络环境的恢复。本发明的定时器模块将启动串口心跳代替网络心跳,使得集群正常运行并在网络环境恢复时,由本发明的定时器模块关闭串口心跳,重新启动网络心跳。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所做的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。

Claims (10)

1.一种高可用集群中串口心跳的实现方法,其特征在于,该集群同时以串行线缆和网络连接两种方式构成,串行线缆对应串口心跳,网络连接对应网络心跳,在一般情况下该集群以网络心跳对外提供服务,并借助一个定时器模块来监控网络环境的状态,当网络出现故障时,则该定时器模块开启串口心跳以代替网络心跳,以保证集群中的心跳不中断,使得集群可以正常运行并对外提供服务,当网络恢复正常时,则该定时器模块关闭串口心跳。
2.如权利要求1所述的方法,其特征在于,该集群中的每个节点持续向其他节点发送心跳信息以期待回应,若在预定时间内某一个节点无法收到其他节点发送的心跳信息时该定时器模块被激活,并开始对集群的当前网络环境的状态进行监控。
3.如权利要求1所述的方法,其特征在于,所述网络环境的状态包含当前节点所在的网络连接状态、当前节点所在集群中节点的个数以及串口心跳是否已启用这三个变量,而该网络连接状态有两种状态,在网络出现故障时是网络故障状态,网络状态正常时是网络正常状态,所述当前节点所在集群中节点的个数有等于1或大于1两种状态,而串口心跳是否启用有启用和未启用两种状态。
4.如权利要求3所述的方法,其特征在于,若在该定时器模块中查看到一个节点所在的网络环境的状态为网络正常,该节点所在的集群中节点个数等于1,串口心跳启用,则表示该节点网络故障已恢复,该定时器模块将关闭串口心跳,将串口状态置为未启用。
5.如权利要求3所述的方法,其特征在于,若在该定时器模块中查看到一个节点所在的网络环境的状态为网络故障,该节点所在的集群中节点个数等于1,串口未启用,则该定时器模块开启串口心跳,将串口状态置为启用。
6.如权利要求3所述的方法,其特征在于,若在该定时器模块中查看到一个节点所在的的网络环境的状态为网络故障,该节点所在的集群中节点个数等于1,串口启用,则该定时器模块不作任何处理。
7.如权利要求3所述的方法,其特征在于,若在该定时器模块中查看到一个节点所在的网络环境的状态为网络正常,该节点所在的集群中节点个数大于1,串口未启用,则表示网络环境出现故障,对端节点的网络断开,该定时器模块开启串口心跳,将串口状态置为启用。
8.如权利要求3所述的方法,其特征在于,若在该定时器模块中查看到一个节点所在的网络环境的状态为网络正常,该节点所在的集群中节点个数大于1,串口启用,则表示本节点的网络故障已恢复,该定时器模块关闭串口心跳,将串口状态置为未启用。
9.如权利要求3所述的方法,其特征在于,若在该定时器模块中查看到一个节点所在的网络环境的状态为网络故障,该节点所在的集群中节点个数大于1,串口未启用,则表示本节点的网络出现故障,该定时器模块开启串口心跳,将串口状态置为启用。
10.如权利要求3所述的方法,其特征在于,若在该定时器模块中查看到一个节点所在的网络环境的状态为网络故障,该节点所在的集群中节点个数大于1,串口启用,则表示本节点的网络出现故障,串口心跳也出现故障,此时该定时器模块关闭串口心跳,将要做故障处理。
CN2011103847497A 2011-11-28 2011-11-28 一种高可用集群中串口心跳的实现方法 Pending CN102546233A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN2011103847497A CN102546233A (zh) 2011-11-28 2011-11-28 一种高可用集群中串口心跳的实现方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN2011103847497A CN102546233A (zh) 2011-11-28 2011-11-28 一种高可用集群中串口心跳的实现方法

Publications (1)

Publication Number Publication Date
CN102546233A true CN102546233A (zh) 2012-07-04

Family

ID=46352240

Family Applications (1)

Application Number Title Priority Date Filing Date
CN2011103847497A Pending CN102546233A (zh) 2011-11-28 2011-11-28 一种高可用集群中串口心跳的实现方法

Country Status (1)

Country Link
CN (1) CN102546233A (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104486128A (zh) * 2014-12-23 2015-04-01 浪潮(北京)电子信息产业有限公司 一种实现双控制器节点间冗余心跳的系统及方法
CN108446250A (zh) * 2018-03-12 2018-08-24 上海燊星机器人科技有限公司 一种多cpu之间通讯的方法
CN111308990A (zh) * 2020-03-15 2020-06-19 武汉天富海科技发展有限公司 一种舰用电站控制系统双cpu混成式故障检测系统及方法

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101207512A (zh) * 2006-12-22 2008-06-25 中兴通讯股份有限公司 一种数据库系统冗灾备份和切换方法
CN101291243A (zh) * 2007-04-16 2008-10-22 广东省新支点技术服务有限公司 高可用集群系统的裂脑预防方法
US20080301491A1 (en) * 2004-11-04 2008-12-04 International Business Machines Corporation Quorum-based power-down of unresponsive servers in a computer cluster
CN101345663A (zh) * 2008-08-22 2009-01-14 杭州华三通信技术有限公司 心跳检测方法和心跳检测设备
CN101364904A (zh) * 2008-10-06 2009-02-11 浪潮电子信息产业股份有限公司 通过心跳接口对双控存储控制器进行相互检测的方法
CN101488101A (zh) * 2008-01-18 2009-07-22 研祥智能科技股份有限公司 Cpci冗余备份系统
CN101572724A (zh) * 2009-03-05 2009-11-04 国电南瑞科技股份有限公司 一种软件版本管理系统

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080301491A1 (en) * 2004-11-04 2008-12-04 International Business Machines Corporation Quorum-based power-down of unresponsive servers in a computer cluster
CN101207512A (zh) * 2006-12-22 2008-06-25 中兴通讯股份有限公司 一种数据库系统冗灾备份和切换方法
CN101291243A (zh) * 2007-04-16 2008-10-22 广东省新支点技术服务有限公司 高可用集群系统的裂脑预防方法
CN101488101A (zh) * 2008-01-18 2009-07-22 研祥智能科技股份有限公司 Cpci冗余备份系统
CN101345663A (zh) * 2008-08-22 2009-01-14 杭州华三通信技术有限公司 心跳检测方法和心跳检测设备
CN101364904A (zh) * 2008-10-06 2009-02-11 浪潮电子信息产业股份有限公司 通过心跳接口对双控存储控制器进行相互检测的方法
CN101572724A (zh) * 2009-03-05 2009-11-04 国电南瑞科技股份有限公司 一种软件版本管理系统

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104486128A (zh) * 2014-12-23 2015-04-01 浪潮(北京)电子信息产业有限公司 一种实现双控制器节点间冗余心跳的系统及方法
CN104486128B (zh) * 2014-12-23 2018-07-17 浪潮(北京)电子信息产业有限公司 一种实现双控制器节点间冗余心跳的系统及方法
CN108446250A (zh) * 2018-03-12 2018-08-24 上海燊星机器人科技有限公司 一种多cpu之间通讯的方法
CN111308990A (zh) * 2020-03-15 2020-06-19 武汉天富海科技发展有限公司 一种舰用电站控制系统双cpu混成式故障检测系统及方法
CN111308990B (zh) * 2020-03-15 2021-03-23 武汉天富海科技发展有限公司 一种舰用电站控制系统双cpu混成式故障检测系统及方法

Similar Documents

Publication Publication Date Title
KR100812374B1 (ko) 클러스터 시스템에서 프로토콜 네트워크 장애 관리 시스템및 방법
CN1921369B (zh) 一种网络连接的接管方法
CN104486128B (zh) 一种实现双控制器节点间冗余心跳的系统及方法
CN103442035B (zh) 一种空管自动化系统的双网热备冗余实现方法
CN103973424B (zh) 缓存系统中的故障解决方法和设备
KR101419579B1 (ko) 서버 고장 상황에서 클라이언트 어플리케이션의 더 빠른 복구를 가능하게 하는 방법
US9385944B2 (en) Communication system, path switching method and communication device
JP5366177B2 (ja) スロットインターフェースアクセス装置、その方法及びそのプログラム並びに主装置の冗長構成及び代替方法
EP2323344A1 (en) Method for preventing thread hanging in a multi-thread communication program
CN105656645B (zh) 堆叠系统的故障处理的决策方法和装置
CN105095008B (zh) 一种适用于集群系统的分布式任务故障冗余方法
CN103200109B (zh) 一种ospf邻居关系管理方法和设备
CN109391691A (zh) 一种单节点故障下nas服务的恢复方法及相关装置
CN101610188A (zh) Sip服务器服务进程故障恢复方法及sip服务器
CN112087375A (zh) Wan口备援路由器的wan口切换方法、存储介质及路由器
EP4094421A2 (en) Pce controlled network reliability
CN102231126B (zh) 一种实现多核处理器中核间备份的方法及系统
CN102546233A (zh) 一种高可用集群中串口心跳的实现方法
CN101980478B (zh) 设备故障的检测处理方法、装置和网络设备
CN101951327B (zh) 一种iSCSI网络系统以及检测网络故障的方法
US9323629B2 (en) Method for managing path failures of OSEK networks
CN113938319B (zh) 一种数据传输方法及单向网闸
CN104270255A (zh) 一种基于linx进程的节点间通信模块及方法
CN115720180A (zh) 基于srio总线通信网络故障实时监测与恢复的方法和系统
CN111224803B (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
C12 Rejection of a patent application after its publication
RJ01 Rejection of invention patent application after publication

Application publication date: 20120704