CN112367214B - 基于etcd的主节点快速检测和切换方法 - Google Patents
基于etcd的主节点快速检测和切换方法 Download PDFInfo
- Publication number
- CN112367214B CN112367214B CN202011082729.XA CN202011082729A CN112367214B CN 112367214 B CN112367214 B CN 112367214B CN 202011082729 A CN202011082729 A CN 202011082729A CN 112367214 B CN112367214 B CN 112367214B
- Authority
- CN
- China
- Prior art keywords
- etcd
- node
- master node
- specified number
- slave nodes
- 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
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L43/00—Arrangements for monitoring or testing data switching networks
- H04L43/50—Testing arrangements
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L41/00—Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
- H04L41/06—Management of faults, events, alarms or notifications
- H04L41/0654—Management of faults, events, alarms or notifications using network fault recovery
- H04L41/0663—Performing the actions predefined by failover planning, e.g. switching to standby network elements
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L43/00—Arrangements for monitoring or testing data switching networks
- H04L43/10—Active monitoring, e.g. heartbeat, ping or trace-route
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Health & Medical Sciences (AREA)
- Cardiology (AREA)
- General Health & Medical Sciences (AREA)
- Small-Scale Networks (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明公开了一种基于etcd的主节点快速检测和切换方法,属于主节点快速检测和切换领域,包括:每个节点在服务启动时向etcd集群获取一个超时为超时时间的租约并定时维护,每个节点携带该租约向etcd中特定目录和以本节点的识别信息组合作为唯一标识键写入一条记录;查询该特定目录下所有记录,其中键改动的数据版本最小的记录对应的主机被选择为主节点,其余为从节点;选择规定数量一的从节点对主节点进行健康检测,当选择出的规定数量一的从节点中监控检测到主节点心跳超时的数量达到规定数量二时,则删除主节点在etcd中对应的键以及记录,并通知从节点;从节点接收到主节点记录被删除的通知时,重新选择主节点。
Description
技术领域
本发明涉及主节点快速检测和切换领域,尤其涉及一种基于etcd的主节点快速检测和切换方法。
背景技术
在分布式领域,会使用etcd作为基础组件并利用etcd的租约机制进行分布式节点状态维护和检测,即每个节点均从etcd获取一个租约并定时续约,再使用该租约向etcd中特定位置存储一条记录,一旦节点异常,则会导致无法准时续约,该记录会被删除,其他节点会收到记录删除通知,则认为该节点状态异常,遂进行主从切换。使用该方案有一个缺点,etcd中续约机制最小续约时间为1s,从节点异常至记录被删除而被发现需要1~2秒,无法做到毫秒级切换,无法满足极高可用性要求。
发明内容
本发明的目的是提供一种基于etcd的主节点快速检测和切换方法,能够支持在百毫秒级检测和响应切换主节点。
本发明解决其技术问题,采用的技术方案是:基于etcd的主节点快速检测和切换方法,包括如下步骤:
步骤1、设置配置,所述配置包括etcd租约超时时间、心跳检测间隔时间和心跳检测超时时间;
步骤2、每个节点在服务启动时向etcd集群获取一个超时为超时时间的租约并定时维护,每个节点携带该租约向etcd中特定目录和以本节点的识别信息组合作为唯一标识键写入一条记录;
步骤3、查询该特定目录下所有记录,其中键改动的数据版本最小的记录对应的主机被选择为主节点,其余为从节点;
步骤4、判断etcd中所述特定目录下与当前主节点对应键下的从节点数量是否达到规定数量一,若是,则选择规定数量一的从节点对主节点进行健康检测,并进入步骤5,否则终止;
步骤5、在选择出的规定数量一的从节点上启动健康检查客户端端程序用于发送心跳数据,并在主节点上启动健康检查服务端程序用于按照所述配置定时响应心跳数据;
步骤6、当选择出的规定数量一的从节点中监控检测到主节点心跳超时的数量达到规定数量二时,则删除主节点在etcd中对应的键以及记录,并通知选择出的规定数量一的从节点;
步骤7、选择出的规定数量一的从节点接收到主节点记录被删除的通知时,回到步骤3。
进一步的是,步骤1中,所述etcd租约超时时间为1ttl,心跳检测间隔时间为100ms,心跳检测超时时间为150ms。
进一步的是,步骤2中,所述特定目录为/nodes/status/,所述识别信息为IP地址或者不重复的主机名称。
进一步的是,步骤3中,选择主节点和从节点时,将etcd中该目录下的键按照改动的数据版本进行升序排序后将首尾相连形成一个环。
进一步的是,步骤4中,在所述环上选择当前主节点对应键的下规定数量个从节点,对主节点进行健康检测,所述规定数量一为3个。
进一步的是,步骤6中,当从节点检测到主节点心跳超时时,该从节点向etcd发送请求,对etcd中/nodes/inactive进行更新,为当前主节点不可用进行表态记录次数,当在3个从节点中有规定数量二个从节点认为当前主节点不可用,则删除主节点在etcd中所对应的键,替代etcd租约机制将该键删除,所述规定数量二为2。
本发明的有益效果是,通过上述基于etcd的主节点快速检测和切换方法,按照一定准则从被作为从节点的节点中选择出部分节点对当前活跃的主节点进行健康检查,在主节点出现问题时被选出的从节点能够快速检测发现并切换新的主节点。稳定环境下能够实现百毫秒内检测和发现主节点异常并快速主从切换。
另外,本发明结合生产实际使用场景,在使用etcd租约作为主从分布式节点状态监控的基础上,对主节点状态检测及时性进行增强,使用额外的健康检测程序替代etcd租约过期机制,不仅能够极大的降低主节点从异常到发送切换时的耗时,还同时降低了健康检测误判造成主节点被切换的问题,提高了服务可用性。
附图说明
图1为本发明实施例中系统总体结构示意图;
图2为本发明实施例中使用的心跳检测流程图。
具体实施方式
下面结合附图及实施例,详细描述本发明的技术方案。
实施例
本发明实施例使用etcd作为分布式协调组件来协调由多个虚拟机或者物理机组成的主从分布式集群,etcd维护了该集群的主从选举和所有节点状态信息维护,该发明是整个使用链上的一部分,使用多个从节点来监控主节点状态,以实现该功能,系统总体结构示意图如图1所示。
其中,本实施例的实现承载为一个应用程序,该应用程序至少包含了节点主从选择和健康检查功能。本实施例中提到的“数据版本”为etcd中reversion概念。
本实施例提出了一种基于etcd的主节点快速检测和切换方法,其具体包括如下步骤:
步骤1:设置好正确的配置,配置包含etcd维护租约时间1ttl,心跳检测间隔100ms,心跳检测超时150ms。
步骤2:每个节点应用程序启动时以该租约向etcd中以/nodes/status/和以本节点的主机名组合的值/nodes/status/[主机名]作为唯一标志键,将该节点的其他相关信息json序列化后作为值存入etcd。
步骤3.1:每个节点应用程序查询/nodes/status/下所有记录后存入内存缓存,并使用wather实时监控该路径下的数据变更并实时更新该缓存。
步骤3.2:当检测到数据变动时,待缓存更新后;将计算缓存中数据版本值最小的键对应的主机设置为主节点身份,其余节点设置为从节点身份。
步骤3.4:在被选择为主节点身份主机上启动健康检查服务端程序用于按照收到的配置定时响应心跳数据。该程序会启动一个tcp服务器,在有新tcp连接建立时读取心跳间隔参数,并按照该参数间隔向该连接传输心跳数据。
步骤4.1:从节点身份的节点中按照数据版本进行升序排序后,选择三个数据版本最小的节点对主节点进行健康检测。如果从节点个数不满足三个,则均不能开启该健康检测功能。对主节点进行监控的从节点称之为监视者节点。
步骤4.2:在被选择作为监视者节点上,启动特别的健康检查客户端程序用于触发主节点心跳报告,监视者连接主节点tcp服务器,发送心跳间隔参数,设置为100ms,并持续接受主节点心跳信息;当接受到第一个心跳消息时设置计时器,计时器以心跳检测超时150ms为时间,每当收到心跳信息时重置该计时器,这里,使用的心跳检测流程图如图2所示。
步骤4.3:当步骤4.2中的计时器超时时,即可认为主节点未能准时汇报心跳,可视为其状态为异常。检测到主节点的监视者向etcd发送请求,在etcd中目录/nodes/inactive/中创建一条以被检测主节点主机名称为键的记录,该过程称之为“提议”;其他监视者如果发现主节点异常,则查询目录/nodes/inactive/下是否有键为该主节点主机名称的记录,如果有则直接删除/nodes/status/[主节点主机名]键,该过程称之为“附议”,使用了二次确认的方式判定主节点状态异常。
步骤5:其他节点从etcd收到主节点记录被删除通知,重复步骤3.2。
因此,本实施例依赖于etcd的租约机制,经过测试能够在200ms内响应主节点异常状态并启动新的主节点进行服务,并且,本实施例中的心跳检测方式可以为其他方式,仅需要满足能够在毫秒级检测即可。
Claims (5)
1.基于etcd的主节点快速检测和切换方法,其特征在于,包括如下步骤:
步骤1、设置配置,所述配置包括etcd租约超时时间、心跳检测间隔时间和心跳检测超时时间;所述etcd租约超时时间为1ttl,心跳检测间隔时间为100ms,心跳检测超时时间为150ms;
步骤2、每个节点在服务启动时向etcd集群获取一个超时为超时时间的租约并定时维护,每个节点携带该租约向etcd中特定目录和以本节点的识别信息组合作为唯一标识键写入一条记录;
步骤3、查询该特定目录下所有记录,其中键改动的数据版本最小的记录对应的主机被选择为主节点,其余为从节点;
步骤4、判断etcd中所述特定目录下与当前主节点对应键下的从节点数量是否达到规定数量一,若是,则选择规定数量一的从节点对主节点进行健康检测,并进入步骤5,否则终止;所述规定数量一为3个;
步骤5、在选择出的规定数量一的从节点上启动健康检查客户端端程序用于发送心跳数据,并在主节点上启动健康检查服务端程序用于按照所述配置定时响应心跳数据;
步骤6、当选择出的规定数量一的从节点中监控检测到主节点心跳超时的数量达到规定数量二时,则删除主节点在etcd中对应的键以及记录,并通知选择出的规定数量一的从节点;所述规定数量二为2;
步骤7、选择出的规定数量一的从节点接收到主节点记录被删除的通知时,回到步骤3。
2.根据权利要求1所述的基于etcd的主节点快速检测和切换方法,其特征在于,步骤2中,所述特定目录为/nodes/status/,所述识别信息为IP地址或者不重复的主机名称。
3.根据权利要求1所述的基于etcd的主节点快速检测和切换方法,其特征在于,步骤3中,选择主节点和从节点时,将etcd中该目录下的键按照改动的数据版本进行升序排序后将首尾相连形成一个环。
4.根据权利要求3所述的基于etcd的主节点快速检测和切换方法,其特征在于,步骤4中,在所述环上选择当前主节点对应键的下规定数量个从节点,对主节点进行健康检测。
5.根据权利要求4所述的基于etcd的主节点快速检测和切换方法,其特征在于,步骤6中,当从节点检测到主节点心跳超时时,该从节点向etcd发送请求,对etcd中/nodes/inactive进行更新,为当前主节点不可用进行表态记录次数,当在3个从节点中有规定数量二个从节点认为当前主节点不可用,则删除主节点在etcd中所对应的键,替代etcd租约机制将该键删除。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011082729.XA CN112367214B (zh) | 2020-10-12 | 2020-10-12 | 基于etcd的主节点快速检测和切换方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011082729.XA CN112367214B (zh) | 2020-10-12 | 2020-10-12 | 基于etcd的主节点快速检测和切换方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112367214A CN112367214A (zh) | 2021-02-12 |
CN112367214B true CN112367214B (zh) | 2022-06-14 |
Family
ID=74506614
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011082729.XA Active CN112367214B (zh) | 2020-10-12 | 2020-10-12 | 基于etcd的主节点快速检测和切换方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112367214B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113949691A (zh) * | 2021-10-15 | 2022-01-18 | 湖南麒麟信安科技股份有限公司 | 基于etcd的虚拟网络地址高可用实现方法及系统 |
CN114584458B (zh) * | 2022-03-03 | 2023-06-06 | 平安科技(深圳)有限公司 | 一种基于etcd的集群容灾管理方法、系统、设备及存储介质 |
Citations (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101631011A (zh) * | 2008-07-16 | 2010-01-20 | 中国科学院声学研究所 | 适于进行ip流媒体实时处理及转发设备的热备方法及系统 |
CN102868560A (zh) * | 2012-09-28 | 2013-01-09 | 南京恩瑞特实业有限公司 | 一种服务器热备实现系统及方法 |
CN103199972A (zh) * | 2013-03-25 | 2013-07-10 | 成都瑞科电气有限公司 | 基于soa、rs485总线实现的双机热备份切换方法及热备份系统 |
CN103856392A (zh) * | 2013-06-26 | 2014-06-11 | 携程计算机技术(上海)有限公司 | 消息推送方法及其外发服务器和外发服务器系统 |
CN106027634A (zh) * | 2016-05-16 | 2016-10-12 | 白杨 | 白杨消息端口交换服务 |
CN106506703A (zh) * | 2016-12-28 | 2017-03-15 | 掌阅科技股份有限公司 | 基于共享内存的服务发现方法、装置及系统、服务器 |
CN107733957A (zh) * | 2016-08-12 | 2018-02-23 | 北京融聚世界网络科技有限公司 | 分布式服务配置系统及版本号分配方法 |
CN108123851A (zh) * | 2017-12-29 | 2018-06-05 | 北京奇虎科技有限公司 | 分布式系统中主从节点同步链路的存活检测方法及装置 |
CN109040212A (zh) * | 2018-07-24 | 2018-12-18 | 苏州科达科技股份有限公司 | 设备接入服务器集群方法、系统、设备及存储介质 |
CN109977161A (zh) * | 2019-03-28 | 2019-07-05 | 上海中通吉网络技术有限公司 | presto集群的监控系统 |
CN110086726A (zh) * | 2019-04-22 | 2019-08-02 | 航天云网科技发展有限责任公司 | 一种自动切换Kubernetes主节点的方法 |
CN111124757A (zh) * | 2019-12-16 | 2020-05-08 | 上海热璞网络科技有限公司 | 一种分布式事务数据库的数据节点心跳检测算法 |
CN111182060A (zh) * | 2019-12-30 | 2020-05-19 | 北京健康之家科技有限公司 | 报文的检测方法及装置 |
CN111371886A (zh) * | 2020-02-29 | 2020-07-03 | 苏州浪潮智能科技有限公司 | 一种iSCSI高可用的实现方法及系统 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10243780B2 (en) * | 2016-06-22 | 2019-03-26 | Vmware, Inc. | Dynamic heartbeating mechanism |
-
2020
- 2020-10-12 CN CN202011082729.XA patent/CN112367214B/zh active Active
Patent Citations (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101631011A (zh) * | 2008-07-16 | 2010-01-20 | 中国科学院声学研究所 | 适于进行ip流媒体实时处理及转发设备的热备方法及系统 |
CN102868560A (zh) * | 2012-09-28 | 2013-01-09 | 南京恩瑞特实业有限公司 | 一种服务器热备实现系统及方法 |
CN103199972A (zh) * | 2013-03-25 | 2013-07-10 | 成都瑞科电气有限公司 | 基于soa、rs485总线实现的双机热备份切换方法及热备份系统 |
CN103856392A (zh) * | 2013-06-26 | 2014-06-11 | 携程计算机技术(上海)有限公司 | 消息推送方法及其外发服务器和外发服务器系统 |
CN106027634A (zh) * | 2016-05-16 | 2016-10-12 | 白杨 | 白杨消息端口交换服务 |
CN107733957A (zh) * | 2016-08-12 | 2018-02-23 | 北京融聚世界网络科技有限公司 | 分布式服务配置系统及版本号分配方法 |
CN106506703A (zh) * | 2016-12-28 | 2017-03-15 | 掌阅科技股份有限公司 | 基于共享内存的服务发现方法、装置及系统、服务器 |
CN108123851A (zh) * | 2017-12-29 | 2018-06-05 | 北京奇虎科技有限公司 | 分布式系统中主从节点同步链路的存活检测方法及装置 |
CN109040212A (zh) * | 2018-07-24 | 2018-12-18 | 苏州科达科技股份有限公司 | 设备接入服务器集群方法、系统、设备及存储介质 |
CN109977161A (zh) * | 2019-03-28 | 2019-07-05 | 上海中通吉网络技术有限公司 | presto集群的监控系统 |
CN110086726A (zh) * | 2019-04-22 | 2019-08-02 | 航天云网科技发展有限责任公司 | 一种自动切换Kubernetes主节点的方法 |
CN111124757A (zh) * | 2019-12-16 | 2020-05-08 | 上海热璞网络科技有限公司 | 一种分布式事务数据库的数据节点心跳检测算法 |
CN111182060A (zh) * | 2019-12-30 | 2020-05-19 | 北京健康之家科技有限公司 | 报文的检测方法及装置 |
CN111371886A (zh) * | 2020-02-29 | 2020-07-03 | 苏州浪潮智能科技有限公司 | 一种iSCSI高可用的实现方法及系统 |
Non-Patent Citations (3)
Title |
---|
"A novel decentralized asynchronous scheduler for Hadoop";Xiangming Dai,et al.,;《2013 IEEE Global Communications Conference(GLOBECOM)》;20140612;全文 * |
"Docker容器性能监视系统的设计与实现";王鹏冲,;《中国优秀硕士学位论文全文数据库 (信息科技辑)》;20190515;全文 * |
"基于Raft的优化日志复制的分布式一致性算法OLR-Raft的设计";代坤鹏,;《中国优秀硕士学位论文全文数据库 (信息科技辑)》;20190315;全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN112367214A (zh) | 2021-02-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112367214B (zh) | 基于etcd的主节点快速检测和切换方法 | |
CN103117901B (zh) | 一种分布式心跳检测方法、装置及系统 | |
US7539150B2 (en) | Node discovery and communications in a network | |
CN106453657A (zh) | 智能家居设备的状态信息更新方法及装置 | |
CN110417600B (zh) | 分布式系统的节点切换方法、装置及计算机存储介质 | |
MX2011004240A (es) | Almacenamiento distribuido de datos. | |
CN103795553A (zh) | 基于监控的主、备服务器切换 | |
CN114866365B (zh) | 仲裁机选举方法、装置、智能设备及计算机可读存储介质 | |
CN106330475A (zh) | 一种通信系统中管理主备节点的方法和装置及高可用集群 | |
CN107276839B (zh) | 一种云平台的自监控方法和系统 | |
CN109428740B (zh) | 设备故障恢复的方法和装置 | |
CN110677282B (zh) | 一种分布式系统的热备份方法及分布式系统 | |
CN104506372A (zh) | 一种实现主备服务器切换的方法及系统 | |
CN110875857B (zh) | 断网状态的上报方法、装置及系统 | |
CN111581287A (zh) | 一种数据库管理的控制方法、系统和存储介质 | |
CN111131118A (zh) | 一种兼容宽带电力线载波抄控器多种通信接入模式的方法 | |
CN113382432A (zh) | 一种5g网络服务提供方法、装置及设备 | |
CN112118130A (zh) | 自适应的分布式缓存主备状态信息切换方法及装置 | |
CN111198662A (zh) | 一种数据存储方法、装置和计算机可读存储介质 | |
CN108509296B (zh) | 一种处理设备故障的方法和系统 | |
CN112492030B (zh) | 数据存储方法、装置、计算机设备和存储介质 | |
CN111865659B (zh) | 主备控制器的切换方法和装置、控制器、网络设备 | |
CN108009045B (zh) | 一种主备数据库故障处理方法及装置 | |
CN112260928A (zh) | 节点切换方法、装置、电子设备及可读存储介质 | |
EP4046414B1 (en) | Operation apparatus and method for maintaining network connectivity of a network device based on self-related connection information obtained from monitoring maintenance messages |
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 | ||
PE01 | Entry into force of the registration of the contract for pledge of patent right | ||
PE01 | Entry into force of the registration of the contract for pledge of patent right |
Denomination of invention: A fast detection and switching method for master nodes based on etcd Effective date of registration: 20230628 Granted publication date: 20220614 Pledgee: Chengdu Rural Commercial Bank Co.,Ltd. Zhonghe sub branch Pledgor: CHENGDU GHOSTCLOUD TECHNOLOGY CO.,LTD. Registration number: Y2023510000159 |