CN112367198B - 主备节点切换方法及装置 - Google Patents

主备节点切换方法及装置 Download PDF

Info

Publication number
CN112367198B
CN112367198B CN202011192921.4A CN202011192921A CN112367198B CN 112367198 B CN112367198 B CN 112367198B CN 202011192921 A CN202011192921 A CN 202011192921A CN 112367198 B CN112367198 B CN 112367198B
Authority
CN
China
Prior art keywords
node
cluster
timestamp
standby
opposite end
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
Application number
CN202011192921.4A
Other languages
English (en)
Other versions
CN112367198A (zh
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.)
New H3C Big Data Technologies Co Ltd
Original Assignee
New H3C Big Data Technologies 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 New H3C Big Data Technologies Co Ltd filed Critical New H3C Big Data Technologies Co Ltd
Priority to CN202011192921.4A priority Critical patent/CN112367198B/zh
Publication of CN112367198A publication Critical patent/CN112367198A/zh
Application granted granted Critical
Publication of CN112367198B publication Critical patent/CN112367198B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/08Configuration management of networks or network elements
    • H04L41/0803Configuration setting
    • H04L41/0813Configuration setting characterised by the conditions triggering a change of settings
    • H04L41/0816Configuration setting characterised by the conditions triggering a change of settings the condition being an adaptation, e.g. in response to network events
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L43/00Arrangements for monitoring or testing data switching networks
    • H04L43/10Active monitoring, e.g. heartbeat, ping or trace-route
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L43/00Arrangements for monitoring or testing data switching networks
    • H04L43/10Active monitoring, e.g. heartbeat, ping or trace-route
    • H04L43/106Active monitoring, e.g. heartbeat, ping or trace-route using time related information in packets, e.g. by adding timestamps

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Health & Medical Sciences (AREA)
  • Cardiology (AREA)
  • General Health & Medical Sciences (AREA)
  • Hardware Redundancy (AREA)

Abstract

本发明实施例提供一种主备节点切换方法及装置,本发明实施例通过集群节点在向同一集群中对端节点发送心跳检测信号后的第一指定时间内未接收到对端节点针对心跳检测信号返回的心跳检测响应时,向指定设备发送当前时间戳信息,判断发送当前时间戳信息之后的第二指定时间内是否接收到指定设备返回的时间戳列表,如果否,在集群节点为主节点时,将集群节点从主节点切换为备节点,在集群节点为备节点时,维持集群节点为备节点;如果是,若依据时间戳列表中记录的对端节点的最新时间戳确定对端节点异常,则在集群节点为主节点时,维持集群节点为主节点,在集群节点为备节点时,将集群节点从备节点切换为主节点,避免了脑裂的发生,提升了用户体验。

Description

主备节点切换方法及装置
技术领域
本发明涉及通信技术领域,尤其涉及一种主备节点切换方法及装置。
背景技术
在分布式系统中,集群中大多会构建主节点和备节点来提高系统服务的高可用性(High Availability,HA)能力,但随之而来的是主、备节点带来的脑裂(split-brain)风险。
脑裂是指在一个系统中,当联系着的两个节点断开联系时,本来为一个整体的系统,分裂为两个独立节点,这时两个节点开始争抢共享资源,结果会导致系统混乱,数据损坏。本质上,脑裂的状态即是一个集群中出现了两个及以上的主节点,犹如人的一个大脑裂变成了多个大脑,指挥混乱。
脑裂对服务可用性而言是灾难性的,因此需要严格防范和避免脑裂的发生。
相关技术中,采用仲裁节点的方式来增加对脑裂的预防和判断,当主节点与备节点之间的心跳线路不通时,通过测试节点(主节点或备节点)与仲裁节点的联通性,来判断和规避脑裂。如果节点能ping通仲裁节点,则切换为主节点;如果节点不能ping通仲裁节点,则切换为备节点。
该相关技术中,当主节点和备节点之间的心跳线路断开、但主节点和备节点都能ping通仲裁节点时,也会将备节点切换为主节点,从而导致脑裂。除此之外,使用该相关技术的系统还存在发生其他情况脑裂的可能。
发明内容
为克服相关技术中存在的问题,本发明提供了一种主备节点切换方法及装置,能够避免采用主、备节点的集群发生脑裂。
第一方面,本发明提供一种主备节点切换方法,该方法应用于集群中的集群节点,所述集群节点为主节点或者为备节点,所述方法包括:
所述集群节点在向同一集群中对端节点发送心跳检测信号后的第一指定时间内未接收到对端节点针对所述心跳检测信号返回的心跳检测响应时,向指定设备发送当前时间戳信息,以使所述指定设备根据接收的时间戳信息更新时间戳列表中所述集群节点对应的时间戳信息;所述指定设备为处于业务核心链路上的设备;
判断发送当前时间戳信息之后的第二指定时间内是否接收到所述指定设备返回的所述时间戳列表,如果否,在所述集群节点为主节点时,通过主备切换将所述集群节点从主节点切换为备节点,在所述集群节点为备节点时,维持所述集群节点为备节点;如果是,若依据所述时间戳列表中记录的对端节点的最新时间戳确定对端节点异常,则在所述集群节点为主节点时,维持所述集群节点为主节点,在所述集群节点为备节点时,通过主备切换将所述集群节点从备节点切换为主节点。
结合第一方面,在第一种可能的实现方式中,该方法进一步包括:
当在所述指定时长内接收到所述对端节点返回的心跳检测响应时,向指定设备发送当前时间戳信息,以使所述指定设备根据接收的时间戳信息更新时间戳列表中所述集群节点对应的时间戳信息。
结合第一方面,在第二种可能的实现方式中,在向指定设备发送当前时间戳信息之后的第二指定时间内接收到所述指定设备返回的所述时间戳列表时,该方法进一步包括:
若依据所述时间戳列表中记录的对端节点的最新时间戳确定对端节点正常,则当所述集群节点为主节点时,维持所述集群节点为主节点,当所述集群节点为备节点时,维持所述集群节点为备节点。
结合第一方面,在第三种可能的实现方式中,所述依据所述时间戳列表中记录的对端节点的最新时间戳确定对端节点异常,包括:
检查时间戳列表中记录的对端节点的最新时间戳与当前时间戳之间的时间差,若所述时间差大于或等于时间阈值,则确定对端节点异常。
结合第一方面,在第四种可能的实现方式中,所述时间阈值为N个发送所述心跳检测信号的发送周期,N≥1,N为正整数。
结合第一方面,在第五种可能的实现方式中,该方法之前进一步包括:
与所述对端节点、以及所述指定设备进行时间同步。
第二方面,本发明提供一种主备节点切换装置,该装置应用于集群中的集群节点,所述集群节点为主节点或者为备节点,所述装置包括:
时间戳发送模块,用于在向同一集群中对端节点发送心跳检测信号后的第一指定时间内未接收到对端节点针对所述心跳检测信号返回的心跳检测响应时,向指定设备发送当前时间戳信息,以使所述指定设备根据接收的时间戳信息更新时间戳列表中所述集群节点对应的时间戳信息;所述指定设备为处于业务核心链路上的设备;
切换模块,用于判断发送当前时间戳信息之后的第二指定时间内是否接收到所述指定设备返回的所述时间戳列表,如果否,在所述集群节点为主节点时,通过主备切换将所述集群节点从主节点切换为备节点,在所述集群节点为备节点时,维持所述集群节点为备节点;如果是,若依据所述时间戳列表中记录的对端节点的最新时间戳确定对端节点异常,则在所述集群节点为主节点时,维持所述集群节点为主节点,在所述集群节点为备节点时,通过主备切换将所述集群节点从备节点切换为主节点。
结合第二方面,在第一种可能的实现方式中,
所述时间戳发送模块,还用于当在所述指定时长内接收到所述对端节点返回的心跳检测响应时,向指定设备发送当前时间戳信息,以使所述指定设备根据接收的时间戳信息更新时间戳列表中所述集群节点对应的时间戳信息。
结合第二方面,在第二种可能的实现方式中,该装置进一步包括:
维持模块,用于若依据所述时间戳列表中记录的对端节点的最新时间戳确定对端节点正常,则当所述集群节点为主节点时,维持所述集群节点为主节点,当所述集群节点为备节点时,维持所述集群节点为备节点。
结合第二方面,在第三种可能的实现方式中,该装置进一步包括:
时间同步模块,用于与所述对端节点、以及所述指定设备进行时间同步。
本发明提供的主备节点切换方法,通过集群节点在向同一集群中对端节点发送心跳检测信号后的第一指定时间内未接收到对端节点针对所述心跳检测信号返回的心跳检测响应时,向指定设备发送当前时间戳信息,判断发送当前时间戳信息之后的第二指定时间内是否接收到所述指定设备返回的所述时间戳列表,如果否,在所述集群节点为主节点时,通过主备切换将所述集群节点从主节点切换为备节点,在所述集群节点为备节点时,维持所述集群节点为备节点;如果是,若依据所述时间戳列表中记录的对端节点的最新时间戳确定对端节点异常,则在所述集群节点为主节点时,维持所述集群节点为主节点,在所述集群节点为备节点时,通过主备切换将所述集群节点从备节点切换为主节点,在集群节点与对端节点的心跳交互失败时,进一步根据集群节点和对端节点分别与指定设备之间的通信状态准确判断集群节点的状态,避免了脑裂的发生,提升了用户体验。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本说明书。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本说明书的实施例,并与说明书一起用于解释本说明书的原理。
图1是相关技术中包括主节点和备节点的集群的逻辑组网示例图。
图2是本发明实施例的逻辑组网示例图。
图3是本发明实施例提供的主备节点切换方法的一个流程示例图。
图4是图2中的节点1所执行的节点切换流程示例图。
图5是图2中的节点2所执行的节点切换流程示例图。
图6是图2所示网络中各种不同链路情况的示意图。
图7是本发明实施例提供的主备节点切换装置的功能方块图。
图8是本发明实施例提供的节点设备的一种硬件结构图。
具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本发明相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本发明实施例的一些方面相一致的装置和方法的例子。
在本发明实施例使用的术语是仅仅出于描述特定本发明实施例的目的,而非旨在限制本发明实施例。在本发明实施例和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。
应当理解,尽管在本发明实施例可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本发明实施例范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。
图1是相关技术中包括主节点和备节点的集群的逻辑组网示例图。如图1所示,主节点(节点1)和备节点(节点2)通过心跳检测,感知对端节点的状态。心跳检测的过程是:节点向对端节点(如果节点为主节点,对端节点为备节点;如果节点为备节点,则对端节点为主节点)周期性(例如每隔5秒钟)地发送心跳检测信号,对端节点接收到心跳检测信号后,向节点返回心跳检测响应。如果节点在发送心跳检测信号后的一定时间(以下称为第一指定时间)内接收到对端节点针对心跳检测信号返回的心跳检测响应,则认为节点与对端节点之间的心跳网络正常,否则认为节点与对端节点之间的心跳网络异常。节点1和节点2都执行上述的心跳检测。
在心跳网络正常时,节点1和节点2呈现一主一备的状态,节点2的业务功能处于休眠状态,由节点1对外提供虚拟服务。这样用户通过虚拟服务使用到的其实是节点1提供的服务。
但如果由于心跳网络出现故障,节点1和节点2之间便失去了心跳交互,或者说心跳交互失败。相关技术中,主、备节点的约定机制是:备节点在第一指定时间内接收不到主节点发出的心跳检测信号后,会认为主节点已经发生了故障,于是主动切换为主节点;而主节点同样会认为是备节点发生了故障,从而保持主节点身份不变。于是集群中出现了两个主节点,同时争抢资源以对外提供服务,导致服务状态混乱,甚至出现不可预测的问题。
需要说明的是,尽管图1所示的集群为一个主节点和一个备节点的情形,但上述情况对于包括一个主节点和多个备节点的集群同样适用。
为了避免包括上述情形的各种脑裂的发生,本发明实施例提出了一种主备节点切换方法。
以下为描述方便,将集群中的主节点和备节点都统称为集群节点,即一个具体的集群节点或者为集群中的主节点,或者为集群中的备节点。即一个集群节点是集群中的某一个节点。
其中,主节点是指节点的状态为主状态master的节点;备节点是指节点的状态为备状态backup的节点。节点的主备切换是指节点的状态发生了转换,主备切换可以是从主状态转换为备状态,也可以是从备状态转换为主状态。
本发明实施例提出的主备节点切换方法中,在指定设备中设置时间戳列表,时间戳列表中记录各集群节点对应的时间戳信息。
集群节点周期性(该周期与上述发送心跳检测信号的周期相同)地向指定设备发送时间戳信息,指定设备接收到时间戳信息后,根据接收的时间戳信息更新时间戳列表中相应集群节点的时间戳信息。
其中,指定设备为处于业务核心链路上的设备。业务核心链路上的设备是指所有业务都经由的设备,从业务角度来说,指定设备不在集群中。当然,作为一个示例,指定设备也可以在集群中。
图2是本发明实施例的逻辑组网示例图。如图2所示,节点1(主节点)和节点2(备节点)之间仍然通过前述的心跳检测感知对端节点的状态。同时,节点1和节点2分别向指定设备发送时间戳信息,通过是否接收到指定设备返回的时间戳列表感知自身的状态,以及在接收到指定设备返回的时间戳列表时通过时间戳列表中对端节点的最新时间戳进一步确定对端节点的状态。
需要说明的是,在包括一个主节点和多个备节点的集群中,每个备节点都与主节点以及指定设备形成图2所示的组网。
下面通过实施例对本发明提出的主备节点切换方法作进一步详细说明。
图3是本发明实施例提供的主备节点切换方法的一个流程示例图。该方法应用于集群中的集群节点,所述集群节点为主节点或者为备节点,如图3所示,该方法可以包括:
S301,所述集群节点在向同一集群中对端节点发送心跳检测信号后的第一指定时间内未接收到对端节点针对所述心跳检测信号返回的心跳检测响应时,向指定设备发送当前时间戳信息,以使所述指定设备根据接收的时间戳信息更新时间戳列表中所述集群节点对应的时间戳信息;所述指定设备为处于业务核心链路上的设备。
S302,判断发送当前时间戳信息之后的第二指定时间内是否接收到所述指定设备返回的所述时间戳列表,如果否,在所述集群节点为主节点时,通过主备切换将所述集群节点从主节点切换为备节点,在所述集群节点为备节点时,维持所述集群节点为备节点;如果是,若依据所述时间戳列表中记录的对端节点的最新时间戳确定对端节点异常,则在所述集群节点为主节点时,维持所述集群节点为主节点,在所述集群节点为备节点时,通过主备切换将所述集群节点从备节点切换为主节点。
在执行步骤S301之前,所述方法可以进一步包括:
集群节点与所述对端节点、以及所述指定设备进行时间同步。
例如,可以通过网络时间协议(Network Time Protocol,NTP)服务进行时间同步,或者手动进行时间同步等方式,本实施例对此不作限制。
时间同步可以在集群初始化时进行。
本实施例中,对端节点也是集群节点,并且对端节点与集群节点位于同一集群内,如果集群节点为主节点,则集群节点的对端节点为备节点,如果集群节点为备节点,则集群节点的对端节点为主节点。
在本发明实施例中,集群节点周期性地向同一集群中的对端节点发送心跳检测信号,并且周期性地向指定设备发送时间戳信息,两者的周期相同,发送时间戳信息的时刻与发送心跳检测信号的时刻之间相差第一指定时间,即集群节点先发送心跳检测信号,然后相隔第一指定时间发送时间戳信息。
例如,假设发送心跳检测信号和发送时间戳信息的周期均为5秒,第一指定时间为10毫秒,则集群节点可以在每一分钟的第0秒、5秒、10秒、15秒……55秒时发送心跳检测信号,在每一分钟的第10毫秒、5秒10毫秒、10秒10毫秒、15秒10毫秒……55秒10毫秒时发送时间戳信息。
需要说明的是,上述中将周期设置为5秒、第一指定时间设置为10毫秒,仅仅是为了说明而列举的示例,并不用于对周期和第一指定时间进行限定,在应用中,可以根据经验或应用需求来设置发送心跳检测信号和发送时间戳信息的周期以及第一指定时间。
指定设备接收到时间戳信息时,就会更新本地时间戳列表中相应集群节点的时间戳。在更新时间戳列表后,指定设备可以根据预设策略确定是否向相应集群节点返回更新后的时间戳列表。
例如,在一个示例中,预设策略可以是:在更新时间戳列表后,指定设备向发送时间戳信息的集群节点返回更新后的时间戳列表。即指定设备收到哪个集群节点发送的时间戳信息就会向哪个集群节点返回时间戳列表。
在此场景下,如果集群节点在向同一集群中对端节点发送心跳检测信号后的第一指定时间内接收到对端节点针对所述心跳检测信号返回的心跳检测响应,当集群节点接收到指定设备返回的时间戳列表时可以直接丢弃该时间戳列表,不对该时间戳列表进行处理。
在另一个示例中,预设策略还可以是:在更新时间戳列表后,指定设备可以判断集群节点发送的时间戳信息中是否包括请求时间戳列表的标识,如果包括该标识,则向发送时间戳信息的集群节点返回更新后的时间戳列表;否则,如果不包括该标识,则不向发送时间戳信息的集群节点返回更新后的时间戳列表。
在此场景下,当集群节点在向同一集群中对端节点发送心跳检测信号后的第一指定时间内未接收到对端节点针对所述心跳检测信号返回的心跳检测响应时,向指定设备发送的时间戳信息中需包括请求时间戳列表的标识,指定设备依据该标识向集群节点返回时间戳列表。当集群节点在向同一集群中对端节点发送心跳检测信号后的第一指定时间内接收到对端节点针对所述心跳检测信号返回的心跳检测响应时,向指定设备发送的时间戳信息中不包括请求时间戳列表的标识,此时指定设备不向集群节点返回时间戳列表。这样,在集群节点与对端节点之间的心跳交互正常时,无需向集群节点返回时间戳列表,可以节约通信资源。
本实施例中,时间戳列表中可以包括节点信息,以及节点对应的时间戳。例如,时间戳列表可以如表1所示。
表1
节点 时间戳
Node-1 time-1
Node-2 time-2
…… ……
Node-m time-m
其中,集群节点发送的时间戳信息中的时间戳为集群节点发送时间戳信息时的时间戳。当前时间戳信息中的时间戳为当前时间戳,即当前时间。
指定设备在更新时间戳列表时,可以将时间戳列表中的时间戳更新为接收到的时间戳信息中的时间戳,也可以将时间戳列表中的时间戳更新为接收到时间戳信息的时刻对应的时间戳。
例如,节点Node-1在t1时刻向指定设备发送时间戳信息1,指定设备在t2时刻接收到时间戳信息1,则指定设备可以将Node-1对应的时间戳time-1更新为t1,也可以将Node-1对应的时间戳time-1更新为t2。
需要说明的是,指定设备对于时间戳列表中的所有节点,均按照接收到的时间戳信息中的时间戳更新时间戳列表中的相应时间戳,或者均按照接收到时间戳信息的时刻对应的时间戳更新时间戳列表中的相应时间戳。在指定设备按照接收到时间戳信息的时刻对应的时间戳更新时间戳列表中的相应时间戳的情况下,可以克服网络时延给时间戳更新带来的影响,使得时间戳更新更准确。
集群节点按照预设的周期分别向对端节点发送心跳检测信号以及向指定设备发送时间戳信息,如果既没有在发送心跳检测信号后的第一指定时间内接收到对端节点针对所述心跳检测信号返回的心跳检测响应,也没有在发送当前时间戳信息之后的第二指定时间内接收到指定设备返回的所述时间戳列表,说明该集群节点本身出现故障,此时该集群节点不适合作为主节点,因此如果该集群节点为主节点则通过主备切换将所述集群节点从主节点切换为备节点,如果该集群节点为备节点则维持该集群节点为备节点。这种情况下,主节点会切换为备节点,但备节点不会切换为主节点,因此不会使集群中出现两个以上主节点的情形,避免了脑裂。
集群节点按照预设的周期分别向对端节点发送心跳检测信号以及向指定设备发送时间戳信息,如果没有在发送心跳检测信号后的第一指定时间内接收到对端节点针对所述心跳检测信号返回的心跳检测响应,但在发送当前时间戳信息之后的第二指定时间内接收到指定设备返回的所述时间戳列表,则集群节点可以依据所述时间戳列表中记录的对端节点的最新时间戳确定对端节点是否异常,若确定对端节点异常,说明该集群节点本身没有出现故障,但是对端节点出现了故障,因此此时如果所述集群节点为主节点,则维持所述集群节点为主节点,如果所述集群节点为备节点,则将所述集群节点从备节点切换为主节点。在切换时,如果集群中包括一个主节点和一个备节点,集群节点可以直接从备节点切换为主节点;如果集群中包括一个主节点和多个备节点,则集群中的所有备节点通过预设的选择机制选择出一个备节点切换为主节点,其他备节点维持为备节点。这样,整个集群中仍然保持只有一个主节点的状态,避免了脑裂的发生。
在一个示例性的实现过程中,在向指定设备发送当前时间戳信息之后的第二指定时间内接收到所述指定设备返回的所述时间戳列表时,该方法可以进一步包括:
若依据所述时间戳列表中记录的对端节点的最新时间戳确定对端节点正常,则当所述集群节点为主节点时,维持所述集群节点为主节点,当所述集群节点为备节点时,维持所述集群节点为备节点。
集群节点在向对端节点发送心跳检测信号后的第一指定时间内未接收到对端节点针对所述心跳检测信号返回的心跳检测响应,可能是集群节点出现了故障,也可能是对端节点出现了故障,还可能是集群节点与对端节点之间的心跳线路出现了故障。相关技术中,只要集群节点在向对端节点发送心跳检测信号后的第一指定时间内未接收到对端节点针对所述心跳检测信号返回的心跳检测响应,就将备节点切换为主节点,如果未接收到心跳检测响应的实际原因是集群节点与对端节点之间的心跳线路出现了故障,这样就会导致集群中原来的主节点还是主节点,但备节点也切换成了主节点,造成集群中出现两个以上主节点,即发生了脑裂。
而根据本实施例,集群节点在向对端节点发送心跳检测信号后的第一指定时间内未接收到对端节点针对所述心跳检测信号返回的心跳检测响应时,如果在发送当前时间戳信息之后的第二指定时间内接收到指定设备返回的时间戳列表,并且依据时间戳列表中记录的对端节点的最新时间戳确定对端节点正常,集群节点维持自身原来的状态,不进行主备切换。这样,虽然集群节点依据与对端节点之间的心跳检测判断出对端节点可能出现故障,但进一步通过时间戳列表中记录的对端节点的最新时间戳确定了对端节点正常,从而消除了对对端节点的误判,阻止了错误的主备切换,避免了导致脑裂发生。
在一个示例性的实现过程中,所述依据所述时间戳列表中记录的对端节点的最新时间戳确定对端节点异常,可以包括:
检查时间戳列表中记录的对端节点的最新时间戳与当前时间戳之间的时间差,若所述时间差大于或等于时间阈值,则确定对端节点异常。
若所述时间差小于时间阈值,则确定对端节点正常。
如果将发送所述心跳检测信号的周期称为发送周期,作为一个示例,时间阈值可以为两个发送周期,即时间阈值为发送所述心跳检测信号的两个发送周期。
在一个示例性的实现过程中,该方法可以进一步包括:
当在所述指定时长内接收到所述对端节点返回的心跳检测响应时,向指定设备发送当前时间戳信息,以使所述指定设备根据接收的时间戳信息更新时间戳列表中所述集群节点对应的时间戳信息。
本实施例中,在集群节点与对端节点之间的心跳交互正常(即集群节点与对端节点互相能够接收到对方返回的心跳检测响应)时,仍然向指定设备发送当前时间戳信息,以使指定设备能够及时更新时间戳列表。
下面通过示例对本发明实施例的主备节点切换方法作进一步说明。
以下示例基于图2所示的组网场景,即集群中包括一个主节点(节点1)和一个备节点(节点2)。
图4是图2中的节点1所执行的节点切换流程示例图。如图4所示,该方法可以包括:
S401,节点1向节点2发送心跳检测信号1。
S402,节点1判断在向节点2发送心跳检测信号1后的第一指定时间内是否接收到节点2针对心跳检测信号1返回的心跳检测响应1,如果没有接收到心跳检测响应1则执行步骤S403,如果接收到心跳检测响应1则执行步骤S408。
S403,节点1向指定设备发送当前时间戳信息1。
S404,节点1判断发送当前时间戳信息1之后的第二指定时间内是否接收到指定设备返回的时间戳列表1,如果接收到时间戳列表1则执行步骤S405,如果没有接收到时间戳列表1则执行步骤S407。
S405,节点1依据时间戳列表1中记录的节点2的最新时间戳1确定节点2正常还是异常,如果异常则执行步骤S406,如果正常也执行步骤S406。
S406,维持节点1为主节点,结束。
S407,节点1切换为备节点,结束。
S408,节点1向指定设备发送当前时间戳信息1,并维持节点1为主节点,结束。
图5是图2中的节点2所执行的节点切换流程示例图。如图5所示,该方法可以包括:
S501,节点2向节点1发送心跳检测信号2。
S502,节点2判断在向节点1发送心跳检测信号2后的第一指定时间内是否接收到节点1针对心跳检测信号2返回的心跳检测响应2,如果没有接收到心跳检测响应2则执行步骤S503,如果接收到心跳检测响应2则执行步骤S508。
S503,节点2向指定设备发送当前时间戳信息2。
S504,节点2判断发送当前时间戳信息2之后的第二指定时间内是否接收到指定设备返回的时间戳列表2,如果接收到时间戳列表2则执行步骤S505,如果没有接收到时间戳列表2则执行步骤S507。
S505,节点2依据时间戳列表2中记录的节点1的最新时间戳2确定节点1正常还是异常,如果异常则执行步骤S506,如果正常执行步骤S507。
S506,节点2切换为主节点,结束。
S507,维持节点2为备节点,结束。
S508,节点2向指定设备发送当前时间戳信息2,并维持节点2为备节点,结束。
如果集群中除了节点2,还包括其他的备节点时,在执行步骤S506时,集群中的所有备节点根据预设的选择策略选择出一个备节点,此时如果节点2是选择出的备节点,则节点2切换为主节点,其他备节点维持为备节点;如果节点2不是选择出的备节点,则节点2和其他未被选择的备节点维持为备节点,由选择出的备节点切换为主节点。
图6是图2所示网络中各种不同链路情况的示意图。图6中,符号“×”表示该符号所在链路中断。根据本发明实施例提供的主备节点切换方法,图6中各种链路情况下,节点1和节点2的切换结果如下:
(a)节点1维持为主节点,节点2维持为备节点;
(b)节点1维持为主节点,节点2维持为备节点;
(c)节点1维持为主节点,节点2维持为备节点;
(d)节点1维持为主节点,节点2维持为备节点;
(e)节点1维持为主节点,节点2维持为备节点;
(f)节点1切换为备节点,节点2切换为主节点;
(g)节点1维持为主节点,节点2维持为备节点;
(h)节点1切换为备节点,节点2维持为备节点。
可见,在以上各种链路情况下,集群中都不会出现2个以上主节点,有效地避免了脑裂的发生。
本发明实施例提供的主备节点切换方法,通过集群节点在向同一集群中对端节点发送心跳检测信号后的第一指定时间内未接收到对端节点针对所述心跳检测信号返回的心跳检测响应时,向指定设备发送当前时间戳信息,判断发送当前时间戳信息之后的第二指定时间内是否接收到所述指定设备返回的所述时间戳列表,如果否,在所述集群节点为主节点时,通过主备切换将所述集群节点从主节点切换为备节点,在所述集群节点为备节点时,维持所述集群节点为备节点;如果是,若依据所述时间戳列表中记录的对端节点的最新时间戳确定对端节点异常,则在所述集群节点为主节点时,维持所述集群节点为主节点,在所述集群节点为备节点时,通过主备切换将所述集群节点从备节点切换为主节点,在集群节点与对端节点的心跳交互失败时,进一步根据集群节点和对端节点分别与指定设备之间的通信状态准确判断集群节点的状态,避免了脑裂的发生,提升了用户体验。
与前述方法的实施例相对应,本说明书还提供了装置及其所应用的设备的实施例。
图7是本发明实施例提供的主备节点切换装置的功能方块图。该主备节点切换装置应用于集群节点,所述集群节点为主节点或者为备节点,如图7所示,该装置包括:
时间戳发送模块710,用于在向同一集群中对端节点发送心跳检测信号后的第一指定时间内未接收到对端节点针对所述心跳检测信号返回的心跳检测响应时,向指定设备发送当前时间戳信息,以使所述指定设备根据接收的时间戳信息更新时间戳列表中所述集群节点对应的时间戳信息;所述指定设备为处于业务核心链路上的设备;
切换模块720,用于判断发送当前时间戳信息之后的第二指定时间内是否接收到所述指定设备返回的所述时间戳列表,如果否,在所述集群节点为主节点时,通过主备切换将所述集群节点从主节点切换为备节点,在所述集群节点为备节点时,维持所述集群节点为备节点;如果是,若依据所述时间戳列表中记录的对端节点的最新时间戳确定对端节点异常,则在所述集群节点为主节点时,维持所述集群节点为主节点,在所述集群节点为备节点时,通过主备切换将所述集群节点从备节点切换为主节点。
在一个示例性的实现过程中,所述时间戳发送模块,还用于当在所述指定时长内接收到所述对端节点返回的心跳检测响应时,向指定设备发送当前时间戳信息,以使所述指定设备根据接收的时间戳信息更新时间戳列表中所述集群节点对应的时间戳信息。
在一个示例性的实现过程中,该装置进一步包括:
维持模块,用于若依据所述时间戳列表中记录的对端节点的最新时间戳确定对端节点正常,则当所述集群节点为主节点时,维持所述集群节点为主节点,当所述集群节点为备节点时,维持所述集群节点为备节点。
在一个示例性的实现过程中,切换模块720在用于依据所述时间戳列表中记录的对端节点的最新时间戳确定对端节点异常时,可以具体用于:
检查时间戳列表中记录的对端节点的最新时间戳与当前时间戳之间的时间差,若所述时间差大于或等于时间阈值,则确定对端节点异常。
在一个示例性的实现过程中,所述时间阈值为N个发送所述心跳检测信号的发送周期,N≥1,N为正整数。
在一个示例性的实现过程中,该装置进一步包括:
时间同步模块,用于与所述对端节点、以及所述指定设备进行时间同步。
本发明实施例还提供一种节点设备,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述节点设备作为集群节点,其中,所述处理器执行所述程序时实现如下操作:
集群节点在向同一集群中对端节点发送心跳检测信号后的第一指定时间内未接收到对端节点针对所述心跳检测信号返回的心跳检测响应时,向指定设备发送当前时间戳信息,以使所述指定设备根据接收的时间戳信息更新时间戳列表中所述集群节点对应的时间戳信息;所述指定设备为处于业务核心链路上的设备;
判断发送当前时间戳信息之后的第二指定时间内是否接收到所述指定设备返回的所述时间戳列表,如果否,在所述集群节点为主节点时,通过主备切换将所述集群节点从主节点切换为备节点,在所述集群节点为备节点时,维持所述集群节点为备节点;如果是,若依据所述时间戳列表中记录的对端节点的最新时间戳确定对端节点异常,则在所述集群节点为主节点时,维持所述集群节点为主节点,在所述集群节点为备节点时,通过主备切换将所述集群节点从备节点切换为主节点。
在一个示例性的实现过程中,进一步包括:
当在所述指定时长内接收到所述对端节点返回的心跳检测响应时,向指定设备发送当前时间戳信息,以使所述指定设备根据接收的时间戳信息更新时间戳列表中所述集群节点对应的时间戳信息。
在一个示例性的实现过程中,在向指定设备发送当前时间戳信息之后的第二指定时间内接收到所述指定设备返回的所述时间戳列表时,进一步包括:
若依据所述时间戳列表中记录的对端节点的最新时间戳确定对端节点正常,则当所述集群节点为主节点时,维持所述集群节点为主节点,当所述集群节点为备节点时,维持所述集群节点为备节点。
在一个示例性的实现过程中,所述依据所述时间戳列表中记录的对端节点的最新时间戳确定对端节点异常,包括:
检查时间戳列表中记录的对端节点的最新时间戳与当前时间戳之间的时间差,若所述时间差大于或等于时间阈值,则确定对端节点异常。
在一个示例性的实现过程中,所述时间阈值为N个发送所述心跳检测信号的发送周期,N≥1,N为正整数。
在一个示例性的实现过程中,之前进一步包括:
与所述对端节点、以及所述指定设备进行时间同步。
本发明实施例的节点设备可以采用如图8所示的硬件结构。图8是本发明实施例提供的节点设备的一种硬件结构图,图8中,存储器包括内存和非易失性存储器,实现主备节点切换方法的计算机程序存储在内存中。
需要说明的是,除了图8所示的处理器、网络接口、内存以及非易失性存储器之外,在其他实施例中节点设备通常还可以包括其他硬件,对此图8中不再详细示出。
本发明实施例还提供一种计算机可读存储介质,其上存储有计算机程序,其中,所述程序被处理器执行时实现如下操作:
集群节点在向同一集群中对端节点发送心跳检测信号后的第一指定时间内未接收到对端节点针对所述心跳检测信号返回的心跳检测响应时,向指定设备发送当前时间戳信息,以使所述指定设备根据接收的时间戳信息更新时间戳列表中所述集群节点对应的时间戳信息;所述指定设备为处于业务核心链路上的设备;
判断发送当前时间戳信息之后的第二指定时间内是否接收到所述指定设备返回的所述时间戳列表,如果否,在所述集群节点为主节点时,通过主备切换将所述集群节点从主节点切换为备节点,在所述集群节点为备节点时,维持所述集群节点为备节点;如果是,若依据所述时间戳列表中记录的对端节点的最新时间戳确定对端节点异常,则在所述集群节点为主节点时,维持所述集群节点为主节点,在所述集群节点为备节点时,通过主备切换将所述集群节点从备节点切换为主节点。
在一个示例性的实现过程中,进一步包括:
当在所述指定时长内接收到所述对端节点返回的心跳检测响应时,向指定设备发送当前时间戳信息,以使所述指定设备根据接收的时间戳信息更新时间戳列表中所述集群节点对应的时间戳信息。
在一个示例性的实现过程中,在向指定设备发送当前时间戳信息之后的第二指定时间内接收到所述指定设备返回的所述时间戳列表时,进一步包括:
若依据所述时间戳列表中记录的对端节点的最新时间戳确定对端节点正常,则当所述集群节点为主节点时,维持所述集群节点为主节点,当所述集群节点为备节点时,维持所述集群节点为备节点。
在一个示例性的实现过程中,所述依据所述时间戳列表中记录的对端节点的最新时间戳确定对端节点异常,包括:
检查时间戳列表中记录的对端节点的最新时间戳与当前时间戳之间的时间差,若所述时间差大于或等于时间阈值,则确定对端节点异常。
在一个示例性的实现过程中,所述时间阈值为N个发送所述心跳检测信号的发送周期,N≥1,N为正整数。
在一个示例性的实现过程中,之前进一步包括:
与所述对端节点、以及所述指定设备进行时间同步。
对于装置实施例而言,由于其基本对应于方法实施例,所以相关之处参见方法实施例的部分说明即可。以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的模块可以是或者也可以不是物理上分开的,作为模块显示的部件可以是或者也可以不是物理模块,即可以位于一个地方,或者也可以分布到多个网络模块上。可以根据实际的需要选择其中的部分或者全部模块来实现本说明书方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
上述对本说明书特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
本领域技术人员在考虑说明书及实践这里申请的发明后,将容易想到本说明书的其它实施方案。本说明书旨在涵盖本说明书的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本说明书的一般性原理并包括本说明书未申请的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本说明书的真正范围和精神由下面的权利要求指出。
应当理解的是,本说明书并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本说明书的范围仅由所附的权利要求来限制。
以上所述仅为本说明书的较佳实施例而已,并不用以限制本说明书,凡在本说明书的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本说明书保护的范围之内。

Claims (10)

1.一种主备节点切换方法,其特征在于,该方法应用于集群中的集群节点,所述集群节点为主节点或者为备节点,所述方法包括:
所述集群节点在向同一集群中对端节点发送心跳检测信号后的第一指定时间内未接收到对端节点针对所述心跳检测信号返回的心跳检测响应时,向指定设备发送当前时间戳信息,以使所述指定设备根据接收的时间戳信息更新时间戳列表中所述集群节点对应的时间戳信息;所述指定设备为处于业务核心链路上的设备;
判断发送当前时间戳信息之后的第二指定时间内是否接收到所述指定设备返回的所述时间戳列表,如果否,在所述集群节点为主节点时,通过主备切换将所述集群节点从主节点切换为备节点,在所述集群节点为备节点时,维持所述集群节点为备节点;如果是,若依据所述时间戳列表中记录的对端节点的最新时间戳确定对端节点异常,则在所述集群节点为主节点时,维持所述集群节点为主节点,在所述集群节点为备节点时,通过主备切换将所述集群节点从备节点切换为主节点。
2.根据权利要求1所述的方法,其特征在于,该方法进一步包括:
当在指定时长内接收到所述对端节点返回的心跳检测响应时,向指定设备发送当前时间戳信息,以使所述指定设备根据接收的时间戳信息更新时间戳列表中所述集群节点对应的时间戳信息。
3.根据权利要求1所述的方法,其特征在于,在向指定设备发送当前时间戳信息之后的第二指定时间内接收到所述指定设备返回的所述时间戳列表时,该方法进一步包括:
若依据所述时间戳列表中记录的对端节点的最新时间戳确定对端节点正常,则当所述集群节点为主节点时,维持所述集群节点为主节点,当所述集群节点为备节点时,维持所述集群节点为备节点。
4.根据权利要求1或3所述的方法,其特征在于,所述依据所述时间戳列表中记录的对端节点的最新时间戳确定对端节点异常,包括:
检查时间戳列表中记录的对端节点的最新时间戳与当前时间戳之间的时间差,若所述时间差大于或等于时间阈值,则确定对端节点异常。
5.根据权利要求4所述的方法,其特征在于,所述时间阈值为N个发送所述心跳检测信号的发送周期,N≥1,N为正整数。
6.根据权利要求1所述的方法,其特征在于,该方法之前进一步包括:
与所述对端节点、以及所述指定设备进行时间同步。
7.一种主备节点切换装置,其特征在于,该装置应用于集群中的集群节点,所述集群节点为主节点或者为备节点,所述装置包括:
时间戳发送模块,用于在向同一集群中对端节点发送心跳检测信号后的第一指定时间内未接收到对端节点针对所述心跳检测信号返回的心跳检测响应时,向指定设备发送当前时间戳信息,以使所述指定设备根据接收的时间戳信息更新时间戳列表中所述集群节点对应的时间戳信息;所述指定设备为处于业务核心链路上的设备;
切换模块,用于判断发送当前时间戳信息之后的第二指定时间内是否接收到所述指定设备返回的所述时间戳列表,如果否,在所述集群节点为主节点时,通过主备切换将所述集群节点从主节点切换为备节点,在所述集群节点为备节点时,维持所述集群节点为备节点;如果是,若依据所述时间戳列表中记录的对端节点的最新时间戳确定对端节点异常,则在所述集群节点为主节点时,维持所述集群节点为主节点,在所述集群节点为备节点时,通过主备切换将所述集群节点从备节点切换为主节点。
8.根据权利要求7所述的装置,其特征在于,
所述时间戳发送模块,还用于当在指定时长内接收到所述对端节点返回的心跳检测响应时,向指定设备发送当前时间戳信息,以使所述指定设备根据接收的时间戳信息更新时间戳列表中所述集群节点对应的时间戳信息。
9.根据权利要求7所述的装置,其特征在于,该装置进一步包括:
维持模块,用于若依据所述时间戳列表中记录的对端节点的最新时间戳确定对端节点正常,则当所述集群节点为主节点时,维持所述集群节点为主节点,当所述集群节点为备节点时,维持所述集群节点为备节点。
10.根据权利要求8所述的装置,其特征在于,该装置进一步包括:
时间同步模块,用于与所述对端节点、以及所述指定设备进行时间同步。
CN202011192921.4A 2020-10-30 2020-10-30 主备节点切换方法及装置 Active CN112367198B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202011192921.4A CN112367198B (zh) 2020-10-30 2020-10-30 主备节点切换方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202011192921.4A CN112367198B (zh) 2020-10-30 2020-10-30 主备节点切换方法及装置

Publications (2)

Publication Number Publication Date
CN112367198A CN112367198A (zh) 2021-02-12
CN112367198B true CN112367198B (zh) 2022-07-01

Family

ID=74513319

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202011192921.4A Active CN112367198B (zh) 2020-10-30 2020-10-30 主备节点切换方法及装置

Country Status (1)

Country Link
CN (1) CN112367198B (zh)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113377702B (zh) * 2021-07-06 2024-03-22 安超云软件有限公司 两节点集群启动的方法及装置、电子设备和存储介质
CN113904909B (zh) * 2021-12-02 2022-03-11 广州英码信息科技有限公司 分布式坐席管理系统的网络环境变化自适应方法及系统
CN115344327B (zh) * 2022-08-19 2023-07-28 中电金信软件有限公司 应用模块的切换方法、装置、电子设备及可读存储介质

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7739677B1 (en) * 2005-05-27 2010-06-15 Symantec Operating Corporation System and method to prevent data corruption due to split brain in shared data clusters
EP2536068A1 (en) * 2011-06-18 2012-12-19 Deutsche Telekom AG Virtual subscriber management
CN104503709A (zh) * 2015-01-14 2015-04-08 浪潮(北京)电子信息产业有限公司 一种双控存储阵列的共享磁盘争用仲裁方法及系统
CN105430052A (zh) * 2015-10-30 2016-03-23 浪潮(北京)电子信息产业有限公司 一种用于集群系统的仲裁方法和装置
CN105681074A (zh) * 2015-12-29 2016-06-15 北京同有飞骥科技股份有限公司 一种增强双机集群可靠、可用性的方法及装置
CN111651291A (zh) * 2020-04-23 2020-09-11 国网河南省电力公司电力科学研究院 一种共享存储集群防脑裂的方法、系统、计算机存储介质

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7739677B1 (en) * 2005-05-27 2010-06-15 Symantec Operating Corporation System and method to prevent data corruption due to split brain in shared data clusters
EP2536068A1 (en) * 2011-06-18 2012-12-19 Deutsche Telekom AG Virtual subscriber management
CN104503709A (zh) * 2015-01-14 2015-04-08 浪潮(北京)电子信息产业有限公司 一种双控存储阵列的共享磁盘争用仲裁方法及系统
CN105430052A (zh) * 2015-10-30 2016-03-23 浪潮(北京)电子信息产业有限公司 一种用于集群系统的仲裁方法和装置
CN105681074A (zh) * 2015-12-29 2016-06-15 北京同有飞骥科技股份有限公司 一种增强双机集群可靠、可用性的方法及装置
CN111651291A (zh) * 2020-04-23 2020-09-11 国网河南省电力公司电力科学研究院 一种共享存储集群防脑裂的方法、系统、计算机存储介质

Also Published As

Publication number Publication date
CN112367198A (zh) 2021-02-12

Similar Documents

Publication Publication Date Title
CN112367198B (zh) 主备节点切换方法及装置
JP4571668B2 (ja) 時間制御される通信システム内にグローバルなタイムベースを確立する方法および通信システム
CN1633785B (zh) 监视和管理通信系统内数据业务的方法和电路装置
CN112214441B (zh) 基于串行总线轮询协议的通信切换方法、设备和系统
CN110492967B (zh) 一种时间同步方法、中继设备及装置
CN109600784B (zh) 上报信号质量的方法及装置
CN109150659B (zh) 一种处理器及bfd报文传输方法
US20140293771A1 (en) Network Relay Device
CN110266422B (zh) 中间时钟设备报文驻留时间处理方法、装置、设备及介质
US20230232347A1 (en) Data processing method and apparatus therefor
EP3806391A1 (en) Synchronization information transmission method, sending end device, receiving end device and storage medium
US9762510B2 (en) Relay system and switching device
CN111679925A (zh) 数据库故障处理方法、装置、计算设备和存储介质
CN110601786B (zh) 一种时间同步方法、中继设备及装置
CN114362874B (zh) 主时钟设备确定方法、装置、电子设备及存储介质
US20220417136A1 (en) Pce controlled network reliability
US20230126682A1 (en) Fault tolerance method and apparatus of network device system, computer device, and storage medium
CN112367373B (zh) 分布式系统的节点确定方法和装置及存储介质
CN110120889B (zh) 数据处理方法、设备及计算机存储介质
CN116560456A (zh) 数据对齐方法、差动保护器以及差动保护系统
CN111181678B (zh) 一种应用于时间触发fc网络的时间同步方法
KR101498561B1 (ko) 글로벌 동기화를 위한 tdma 기반의 can 통신시스템 및 방법
US10491544B2 (en) Consistency control of a logical path passing through a relay device
CN112256484A (zh) 一种数据备份的方法、装置和系统
CN113055227A (zh) 一种面向环型拓扑组网通信的故障处理方法、装置及存储介质

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant