CN114764380A - 一种基于etcd的分布式集群控制方法和装置 - Google Patents
一种基于etcd的分布式集群控制方法和装置 Download PDFInfo
- Publication number
- CN114764380A CN114764380A CN202110055020.9A CN202110055020A CN114764380A CN 114764380 A CN114764380 A CN 114764380A CN 202110055020 A CN202110055020 A CN 202110055020A CN 114764380 A CN114764380 A CN 114764380A
- Authority
- CN
- China
- Prior art keywords
- service
- state
- cmserver
- main
- etcd
- 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
Links
- 238000000034 method Methods 0.000 title claims abstract description 168
- 230000008569 process Effects 0.000 claims abstract description 146
- 230000002159 abnormal effect Effects 0.000 claims abstract description 45
- 230000007246 mechanism Effects 0.000 claims description 8
- 238000012544 monitoring process Methods 0.000 claims description 6
- 238000004891 communication Methods 0.000 claims description 3
- 238000007726 management method Methods 0.000 description 28
- 238000012545 processing Methods 0.000 description 5
- 238000010586 diagram Methods 0.000 description 3
- 230000006870 function Effects 0.000 description 3
- 230000005856 abnormality Effects 0.000 description 2
- 238000011084 recovery Methods 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 238000009434 installation Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000000737 periodic effect Effects 0.000 description 1
- 230000002085 persistent effect Effects 0.000 description 1
- 230000001960 triggered effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/16—Error detection or correction of the data by redundancy in hardware
- G06F11/20—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
- G06F11/202—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where processing functionality is redundant
- G06F11/2023—Failover techniques
- G06F11/2033—Failover techniques switching over of hardware resources
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/16—Error detection or correction of the data by redundancy in hardware
- G06F11/20—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
- G06F11/202—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where processing functionality is redundant
- G06F11/2041—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where processing functionality is redundant with more than one idle spare processing component
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Hardware Redundancy (AREA)
Abstract
本发明公开一种基于ETCD的分布式集群控制方法和装置,集群内不同节点部署的CMServer服务启动后,向ETCD服务进行抢占式事务写操作,若成功,则成为CMServer主服务;Agent进程与CMServer主服务进行连接,定期监控Agent所在节点上启动的所有服务进程状态,发送节点服务进程的状态消息和心跳消息给CMServer主服务;将服务进程的状态消息更新存储在ETCD服务中的服务状态记录中,并刷新服务状态租约时间;若CMServer主服务检测到有服务状态租约过期,则判定和更新该服务为异常状态,并根据该服务的最新状态信息判断是否进行选主操作。本发明能自动发现异常和处理异常,效率高。
Description
技术领域
本发明属于计算机技术领域,具体涉及一种基于ETCD的分布式集群控制方法和装置。
背景技术
随着大数据时代的到来,传统集中式单机服务***已经不能满足大数据场景下的存储和处理要求,分布式的服务设计和集群化部署越来越多被研究和应用于大数据处理场景中。在分布式集群环境中,为了充分利用多个物理服务器的计算和存储资源,通常会在集群内部署多组应用服务,服务进程分别部署在集群内的不同节点上。为了满足集群在单点故障场景下服务的高可用性,服务通常设计和部署为一主机一备机,或一主机和多个备机的模式。
如何高效自动地完成对集群内各应用服务的管理,实现集群服务的启动、停止,服务状态的查询和切换,以及集群内发生软硬件故障时的服务异常发现和自动恢复处理等,都是分布式集群控制要解决的重要问题。
ETCD服务是一个开源分布式的Key-Value键值对存储服务,由Go语言实现,使用Raft一致性算法来管理日志,达到高可用和强一致性的存储。
发明内容
本发明提供一种基于ETCD的分布式集群控制方法和装置,充分利用ETCD的高可用和强一致性的Key-Value存储服务,解决了集群内各应用服务的管理效率低以及集群内发生软硬件故障时的服务异常发现和自动恢复处理效率低的问题。
为实现上述目的,本发明提供了如下的技术方案:一种基于ETCD的分布式集群控制方法,包括:
在集群内不同物理节点上部署运行多个集群管理服务,即CMServer服务,该服务进程启动后,会向集群内的ETCD服务进行抢占式事务写操作,若成功将本节点的CMServer服务信息写入,则表示该节点的CMServer成功注册为主服务;
集群内各节点部署的代理Agent进程与CMServer主服务进行连接,周期性监控各节点上部署运行的各类服务进程状态,发送本节点各服务进程的状态消息和心跳消息给CMServer主服务;
CMServer主服务接收到各个服务进程的状态消息和心跳消息,将各服务进程的状态写入到ETCD服务存储的键值中,同时刷新存储服务状态键值的租约时间;
若CMServer主服务检测到有服务状态租约过期,则判定并更新该服务为异常状态,并根据当前状态判断是否进行该服务的选主操作;
ETCD服务在集群中用来存储集群的初始化配置信息和各类服务的状态信息。
进一步的,所述向集群内部署的ETCD服务进行抢占式事务写操作,包括:
通过向集群内部署的ETCD服务里固定键值的抢占式事务写操作,将CMServer服务的本节点IP地址写入该键值内,并将CMServer服务的状态超时时间设置为存储键值的租约过期时间;
集群内各节点部署的Agent进程只能连接到CMServer的主服务,过程包括:
各Agent进程先从ETCD服务获得CMServer主服务的IP地址,然后根据该IP与CMServer主服务进行连接。
进一步的,在集群内部署奇数个ETCD服务进程实例,且分布运行在不同的物理节点上。
进一步的,所述集群内每个节点均部署Agent进程,该进程作为本节点所有部署的其他服务进程的父进程优先启动运行,Agent进程启动后,通过查询ETCD服务上各节点的集群服务配置信息,顺序启动所运行节点的其他各类服务进程实例。
进一步的,所述Agent进程周期性监控本节点上运行服务的状态,将服务进程的状态信息通过消息或心跳消息发送给CMServer主服务,包括:
若某一个服务的进程状态发生改变,Agent会立即发送新的状态消息通知CMServer主服务,该服务进程的状态变化;
若各服务进程的状态没有发生变化,Agent会在状态租约超时前周期性发送心跳消息给CMServer主服务,保证各服务状态租约正常刷新。
进一步的,所述通过ETCD存储键值的lease租约机制设置服务状态的超时过期时间;CMServer主服务每次收到服务进程的状态消息或心跳消息,都会刷新该服务状态的租约时间,避免状态超时。
进一步的,所述当集群中某服务状态出现异常或租约到期时,CMServer主服务会根据服务之前的主备状态判断是否进行选主操作,包括:
若异常的服务进程之前为主服务,则CMServer主服务根据各节点负载状态选择一个备服务作为新的主服务;
若异常的服务进程之前为备服务,且其主服务状态正常,则CMServer主服务只需更新该服务为异常状态,不需要进行选主操作。
一种基于ETCD的分布式集群控制装置,包括:
CMServer主服务选举模块,集群内不同节点部署的集群管理服务CMServer服务启动后,向集群内部署的ETCD服务进行抢占式事务写操作,若成功将本节点的CMServer服务信息写入,则表示该节点的CMServer成功注册为主服务;
状态消息监控模块,集群内各节点部署的Agent进程与CMServer主服务进行连接和消息通信,Agent进程周期性监控所在节点部署运行的所有服务进程状态,发送节点服务进程的状态消息和心跳消息给CMServer主服务,由状态消息监控模块写入和更新ETCD服务中存储的服务状态和租约;
异常发现和处理模块,CMServer主服务检测到有服务状态租约过期,则判定该服务进程状态异常并在ETCD服务中更新该服务为异常状态,并根据该服务主备状态,决定是否进行选主操作;如果服务异常状态前是主服务,则进行选主操作。ETCD服务用于存储集群的初始化部署配置信息和服务的运行状态信息。
进一步的,所述向集群内部署的ETCD服务进行抢占式事务写操作,实现CMServer服务自身的选主过程,包括:
通过向集群内部署的ETCD服务里固定键值的抢占式事务写操作,将CMServer服务的本节点IP地址写入该键值内,并将CMServer服务的状态超时时间设置为存储键值的租约过期时间;
集群内各节点部署的Agent进程只能连接到CMServer的主服务,过程包括:
各Agent进程先从ETCD服务获得CMServer主服务的IP地址,然后根据该IP与CMServer主服务进行连接。
进一步的,所述集群内每个节点均部署Agent进程,该进程作为本节点所有部署的其他服务进程的父进程优先启动运行,Agent进程启动后,通过查询ETCD服务上各节点的集群服务配置信息,顺序启动所运行节点的其他各类服务进程实例;
若某一服务进程状态发生改变,Agent发送状态消息通知CMServer主服务;
若节点各服务进程状态没有变化,则定时发送心跳消息给CMServer主服务,使其刷新租约时间防止状态超时;
通过ETCD服务的lease租约机制设置服务状态的租约过期时间;CMServer主服务每次收到服务进程的状态消息或心跳消息,均刷新该服务状态租约时间。
当集群中某服务状态出现异常或租约到期时,CMServer主服务会根据服务之前的主备状态判断是否进行选主操作,包括:
若异常的服务进程之前为主服务,则CMServer主服务根据各节点负载状态选择一个备服务作为新的主服务;
若异常的服务进程之前为备服务,且其主服务状态正常,则CMServer主服务只需更新该服务为异常状态,不需要进行选主操作。
本发明的有益效果:本发明通过在集群的节点中部署ETCD服务、CMServer服务以及代理Agent进程,通过CMServer自行选主,代理Agent将节点中的各个服务的状态周期性地发送给主CMServer,主CMServer将集群内各服务进程状态存储到高可用且强一致的ETCD服务中,并刷新服务状态租约时间,主CMServer检测到有服务的状态租约过期,则会判定和更新该服务为Timeout异常状态,并根据该服务最后的主备机状态信息判断是否对服务进行选主操作;本发明充分利用ETCD服务高可用的分布式一致性存储能力,实现对分布式集群环境下各种服务的部署和管理功能,可以有效提高集群服务的管理能力,以及发生单点故障场景下保持服务的高可用性,为整个集群服务的可用性提供有力支撑。
本发明方法集群内各应用服务的管理效率高,且集群内发生软硬件故障时的服务异常能够自动发现和自动恢复,效率高。
附图说明
图1为本发明一种基于ETCD的分布式集群管理方法流程示意图;
图2为本发明一种基于ETCD的分布式集群管理服务故障处理流程图;
图3为本发明一种基于ETCD的分布式集群管理***架构图。
具体实施方式
下面将结合本发明中的附图,对本发明的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动条件下所获得的所有其它实施例,都属于本发明保护的范围。
实施例1:
如图1所示,本实施例提供了一种基于ETCD的分布式集群控制方法,包括以下步骤:
(1)集群内部署ETCD服务,在ETCD服务中存储集群的初始化配置信息和服务状态信息;
为了保证ETCD服务的高可用性,需要确保在集群内部署奇数个(如3个以上)的ETCD实例,且分布运行在不同的物理节点上。ETCD服务作为集群管理服务的持久化存储服务使用,集群初始化配置信息在安装部署时写入ETCD服务,ETCD服务是集群的配置管理中心。
(2)集群内每个节点上都部署代理Agent进程,Agent启动后根据本节点的配置信息启动所有服务进程;
集群内每个节点上部署的Agent进程作为集群管理服务的代理,并且作为每个节点所有部署的其他服务进程的父进程优先启动运行,Agent进程启动后,通过查询ETCD服务上各节点的集群服务配置信息,顺序启动所运行节点的其他各类服务进程实例。
Agent也作为其他服务进程的守护进程,会循环检测各进程状态并在服务进程异常退出后,自动拉起异常退出的服务进程。在具体实施中,CMServer和ETCD服务实例进程也都可以由Agent进行启动和监控。
(3)不同节点部署的集群管理服务CMServer启动后,通过抢占式写操作,将本节点IP地址写入ETCD存储主CMServer的键值内(如
/CMMasterNode),并设置租约过期时间(如30秒),成功写入则成为集群管理主服务,即:CMServer主服务;
具体地,集群管理主CMServer服务用于建立与代理Agent之间的连接,接收代理Agent发送的服务进程状态信息和心跳消息,将各服务进程状态写入和更新到ETCD存储服务中;
集群管理CMServer是主备机服务模式,启动后需要先借助ETCD存储服务完成选主过程,由于ETCD的强一致存储特点,同一时刻只有一个CMServer能成功将自己的IP信息写入ETCD存储中固定的键值对中,所以CMServer在故障场景下也不会出现双主等异常状态,导致集群管理功能失效。
集群管理服务CMServer的选主过程为:CMServer启动后,默认初始为备机服务状态;连接ETCD服务并查询当前CMServer主服务的注册信息,本实施例中即查询该[/CMMasterNode]键值的存储信息,如果值为空则通过抢占式事务写操作,将本节点的IP写入该键值存储中,并设置租约过期时间,本实施例中设置为30秒。成功经过该过程向ETCD中写入本节点IP的CMServer服务成为集群管理的主CMServer服务,其他节点的CMServer服务能查询到该键值信息,获取当前主CMServer的节点IP地址,就以备机状态继续运行,通过Watch机制等待租约过期后重新抢占式选主。
由于集群内服务进程的状态信息都存储在ETCD服务上,所以集群管理服务不需要将服务状态持久化存储在本地磁盘存储中,主CMServer服务会周期性刷新[/CMMasterNode]键值的租约,防止租约超时过期。
(4)各节点Agent会从ETCD服务获取主CMServer服务的IP并进行连接,周期性监控本节点上部署运行的所有服务进程状态,周期性发送各节点服务进程的状态消息或心跳消息,上报给主CMServer服务;
具体地,CMServer服务选主成功后,各节点Agent会从ETCD上获取主CMServer服务的IP地址,连接主CMServer并开始周期性发送服务状态消息和心跳消息。如果某一服务进程的状态发生改变,Agent会立即发送新状态消息给主CMServer服务;若服务状态保持不变,为了减少重复的状态消息发送,可以周期性只发送心跳消息,以保持ETCD中存储的服务状态租约得到及时刷新。
具体实施时:Agent发送状态消息和心跳消息的周期间隔可以设置为5秒,租约超时时间设置为30秒。
在具体实施中,每组服务的进程状态可以分为:Running运行状态,Stopped停止状态,Failure故障状态,Timeout超时异常状态等;服务的主备关系状态可以分为:Master主机,Slave备机和Initial初始态等。
(5)集群管理主服务CMServer接收到各个服务进程的状态消息,会更新ETCD服务上存储的服务状态记录,并重置刷新服务状态的租约时间;
集群管理主CMServer服务会接收到每一组服务进程的状态消息,并将服务当前状态信息存储在ETCD服务上,同时通过lease租约机制设置该服务状态的租约过期时间;主CMServer每次收到服务的状态消息或心跳消息,都要刷新重置该服务状态的租约时间,防止租约过期导致服务状态异常。
通过ETCD服务的租约机制,可以高效的发现服务状态由网络或其他软硬件故障导致的异常情况,即如果出现服务状态的租约过期,则说明该服务状态消息和心跳消息在租约超时这段时间内无法成功发送给主CMServer,租约超时的服务进程或节点出现了故障场景。
(6)发生节点故障或网络异常时,Agent无法成功发送各服务状态消息给主CMServer,导致ETCD服务上的服务状态租约无法周期性刷新重置,
发生租约过期超时;
如果出现服务状态租约过期,则判定该服务出现异常导致心跳消息超时。
(7)主CMServer检测到有服务的状态租约过期,则会判定和更新该服务为Timeout异常状态,并根据该服务最后的主备机状态信息,判断是否进行选主操作。
具体地,集群管理主CMServer服务通过收到的消息周期性地刷新服务状态和租约,并检测服务状态租约过期来发现是否有服务异常,主CMServer更新租约过期服务的状态为Timeout,然后根据该服务的主备机关系进行判断是否要进行选主操作;如果异常状态的服务为Master主机状态,则主CMServer服务会对该组服务进行选主。
具体实施中,选主由主CMServer根据各节点负载状态选择一个合适的备机服务使其成为该服务新的Master主机。
如图2所示,为集群管理服务故障检测和处理流程:集群管理主CMServer通过检查ETCD服务上服务状态租约过期,来发现状态异常的服务进程,将Timeout异常状态更新在ETCD服务中;如果异常状态的服务是该组服务的Master主机,则会触发对该组服务的选主过程;如果是Slave备机,则只需要更新该服务进程为异常状态,不需要选主操作。
具体实施中,集群管理组件还会提供客户端工具,提供人工操作集群的接口,通过客户端工具可以完成对集群的启动、停止,服务状态查询和切换等操作。
如图3所示,为本发明实施例中的一种基于ETCD的分布式集群控制***3个物理节点的架构图。图中***内部署有两组服务:服务A和服务B。两组服务每个节点都部署运行一个实例进程,服务A的Master运行在节点1上,服务B的Master运行在节点2上,其他实例都为Slave服务。
综上所述:
本发明充分利用ETCD服务高可用的分布式一致性存储能力,实现对分布式集群环境下各种服务的部署和管理功能,可以有效提高集群服务的管理能力,以及发生单点故障场景下保持服务的高可用性,为整个集群服务的可用性提供有力支撑。
实施例2:
一种基于ETCD的分布式集群控制装置,包括:
CMServer主服务选举模块,集群内不同节点部署的集群管理服务CMServer服务启动后,向集群内部署的ETCD服务进行抢占式事务写操作,若成功将本节点的CMServer服务信息写入,则表示该节点的CMServer成功注册为主服务;
状态消息监控模块,集群内各节点部署的Agent进程与CMServer主服务进行连接和消息通信,Agent进程周期性监控所在节点部署运行的所有服务进程状态,发送节点服务进程的状态消息和心跳消息给CMServer主服务,由状态消息监控模块写入和更新ETCD服务中存储的服务状态和租约;
异常发现和处理模块,CMServer主服务检测到有服务状态租约过期,则判定该服务进程状态异常并在ETCD服务中更新该服务为异常状态,并根据该服务主备状态,决定是否进行选主操作;如果服务异常状态前是主服务,则进行选主操作。ETCD服务用于存储集群的初始化部署配置信息和服务的运行状态信息。
进一步的,所述向集群内部署的ETCD服务进行抢占式事务写操作,实现CMServer服务自身的选主过程,包括:
通过向集群内部署的ETCD服务里固定键值的抢占式事务写操作,将CMServer服务的本节点IP地址写入该键值内,并将CMServer服务的状态超时时间设置为存储键值的租约过期时间;
集群内各节点部署的Agent进程只能连接到CMServer的主服务,过程包括:
各Agent进程先从ETCD服务获得CMServer主服务的IP地址,然后根据该IP与CMServer主服务进行连接。
进一步的,所述集群内每个节点均部署Agent进程,该进程作为本节点所有部署的其他服务进程的父进程优先启动运行,Agent进程启动后,通过查询ETCD服务上各节点的集群服务配置信息,顺序启动所运行节点的其他各类服务进程实例;
若某一服务进程状态发生改变,Agent发送状态消息通知CMServer主服务;
若节点各服务进程状态没有变化,则定时发送心跳消息给CMServer主服务,使其刷新租约时间防止状态超时;
通过ETCD服务的lease租约机制设置服务状态的租约过期时间;CMServer主服务每次收到服务进程的状态消息或心跳消息,均刷新该服务状态租约时间。
进一步地,当集群中某服务状态出现异常或租约到期时,CMServer主服务会根据服务之前的主备状态判断是否进行选主操作,包括:
若异常的服务进程之前为主服务,则CMServer主服务根据各节点负载状态选择一个备服务作为新的主服务;
若异常的服务进程之前为备服务,且其主服务状态正常,则CMServer主服务只需更新该服务为异常状态,不需要进行选主操作。
以上显示和描述了本发明的基本原理和主要特征和本发明的优点。本行业的技术人员应该了解,本发明不受上述实施例的限制,上述实施例和说明书中描述的只是说明本发明的原理,在不脱离本发明精神和范围的前提下,本发明还会有各种变化和改进,这些变化和改进都落入要求保护的本发明范围内。本发明要求保护范围由所附的权利要求书及其等效物界定。
Claims (10)
1.一种基于ETCD的分布式集群控制方法,其特征在于,包括:
在集群内不同物理节点上部署运行多个集群管理服务,即CMServer服务,该服务进程启动后,会向集群内的ETCD服务进行抢占式事务写操作,若成功将本节点的CMServer服务信息写入,则表示该节点的CMServer成功注册为主服务;
集群内各节点部署的代理Agent进程与CMServer主服务进行连接,周期性监控各节点上部署运行的各类服务进程状态,发送本节点各服务进程的状态消息和心跳消息给CMServer主服务;
CMServer主服务接收到各个服务进程的状态消息和心跳消息,将各服务进程的状态写入到ETCD服务存储的键值中,同时刷新存储服务状态键值的租约时间;
若CMServer主服务检测到有服务状态租约过期,则判定并更新该服务为异常状态,并根据当前状态判断是否进行该服务的选主操作;
ETCD服务在集群中用来存储集群的初始化配置信息和各类服务的状态信息。
2.根据权利要求1所述的一种基于ETCD的分布式集群控制方法,其特征在于,向集群内部署的ETCD服务进行抢占式事务写操作,实现CMServer服务自身的选主过程,包括:
通过向集群内部署的ETCD服务里固定键值的抢占式事务写操作,将CMServer服务的本节点IP地址写入该键值内,并将CMServer服务的状态超时时间设置为存储键值的租约过期时间;
集群内各节点部署的Agent进程只能连接到CMServer的主服务,过程包括:
各Agent进程先从ETCD服务获得CMServer主服务的IP地址,然后根据该IP与CMServer主服务进行连接。
3.根据权利要求1所述的一种基于ETCD的分布式集群控制方法,其特征在于,集群内需要部署奇数个ETCD服务进程实例,且需运行在不同的物理节点上。
4.根据权利要求1所述的一种基于ETCD的分布式集群控制方法,其特征在于,所述集群内每个节点均部署Agent进程,该进程作为本节点所有部署的其他服务进程的父进程优先启动运行,Agent进程启动后,通过查询ETCD服务上各节点的集群服务配置信息,顺序启动所运行节点的其他各类服务进程实例。
5.根据权利要求1所述的一种基于ETCD的分布式集群控制方法,其特征在于,所述Agent进程周期性监控本节点上运行服务的状态,将服务进程的状态信息通过消息或心跳消息发送给CMServer主服务,包括:
若某一个服务的进程状态发生改变,Agent会立即发送新的状态消息通知CMServer主服务,该服务进程的状态变化;
若各服务进程的状态没有发生变化,Agent会在状态租约超时前周期性发送心跳消息给CMServer主服务,保证各服务状态租约正常刷新。
6.根据权利要求1所述的一种基于ETCD的分布式集群控制方法,其特征在于,通过ETCD存储键值的lease租约机制设置服务状态的超时过期时间;CMServer主服务每次收到服务进程的状态消息或心跳消息,都会刷新该服务状态的租约时间,避免状态超时。
7.根据权利要求1所述的一种基于ETCD的分布式集群控制方法,其特征在于,当集群中某服务状态出现异常或租约到期时,CMServer主服务会根据服务之前的主备状态判断是否进行选主操作,包括:
若异常的服务进程之前为主服务,则CMServer主服务根据各节点负载状态选择一个备服务作为新的主服务;
若异常的服务进程之前为备服务,且其主服务状态正常,则CMServer主服务只需更新该服务为异常状态,不需要进行选主操作。
8.一种基于ETCD的分布式集群控制装置,其特征在于,包括:
CMServer主服务选举模块,集群内不同节点部署的集群管理服务CMServer服务启动后,向集群内部署的ETCD服务进行抢占式事务写操作,若成功将本节点的CMServer服务信息写入,则表示该节点的CMServer成功注册为主服务;
状态消息监控模块,集群内各节点部署的Agent进程与CMServer主服务进行连接和消息通信,Agent进程周期性监控所在节点部署运行的所有服务进程状态,发送节点服务进程的状态消息和心跳消息给CMServer主服务,由状态消息监控模块写入和更新ETCD服务中存储的服务状态和租约;
异常发现和处理模块,CMServer主服务检测到有服务状态租约过期,则判定该服务进程状态异常并在ETCD服务中更新该服务为异常状态,并根据该服务主备状态,决定是否进行选主操作;如果服务异常状态前是主服务,则进行选主操作;
ETCD服务用于存储集群的初始化部署配置信息和服务的运行状态信息。
9.根据权利要求8所述的一种基于ETCD的分布式集群控制装置,其特征在于,向集群内部署的ETCD服务进行抢占式事务写操作,实现CMServer服务自身的选主过程,包括:
通过向集群内部署的ETCD服务里固定键值的抢占式事务写操作,将CMServer服务的本节点IP地址写入该键值内,并将CMServer服务的状态超时时间设置为存储键值的租约过期时间;
集群内各节点部署的Agent进程只能连接到CMServer的主服务,过程包括:
各Agent进程先从ETCD服务获得CMServer主服务的IP地址,然后根据该IP与CMServer主服务进行连接。
10.根据权利要求8所述的一种基于ETCD的分布式集群控制装置,其特征在于,所述集群内每个节点均部署Agent进程,该进程作为本节点所有部署的其他服务进程的父进程优先启动运行,Agent进程启动后,通过查询ETCD服务上各节点的集群服务配置信息,顺序启动所运行节点的其他各类服务进程实例;
若某一服务进程状态发生改变,Agent发送状态消息通知CMServer主服务;
若节点各服务进程状态没有变化,则定时发送心跳消息给CMServer主服务,使其刷新租约时间防止状态超时;
通过ETCD服务的lease租约机制设置服务状态的租约过期时间;CMServer主服务每次收到服务进程的状态消息或心跳消息,均刷新该服务状态租约时间;
当集群中某服务状态出现异常或租约到期时,CMServer主服务会根据服务之前的主备状态判断是否进行选主操作,包括:
若异常的服务进程之前为主服务,则CMServer主服务根据各节点负载状态选择一个备服务作为新的主服务;
若异常的服务进程之前为备服务,且其主服务状态正常,则CMServer主服务只需更新该服务为异常状态,不需要进行选主操作。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110055020.9A CN114764380A (zh) | 2021-01-15 | 2021-01-15 | 一种基于etcd的分布式集群控制方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110055020.9A CN114764380A (zh) | 2021-01-15 | 2021-01-15 | 一种基于etcd的分布式集群控制方法和装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114764380A true CN114764380A (zh) | 2022-07-19 |
Family
ID=82363876
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110055020.9A Pending CN114764380A (zh) | 2021-01-15 | 2021-01-15 | 一种基于etcd的分布式集群控制方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114764380A (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115174660A (zh) * | 2022-08-03 | 2022-10-11 | 以萨技术股份有限公司 | 服务注册和发现的方法、装置、电子设备和存储介质 |
CN115421971A (zh) * | 2022-08-16 | 2022-12-02 | 江苏安超云软件有限公司 | Etcd灾备故障恢复的方法及应用 |
CN116938881A (zh) * | 2023-09-18 | 2023-10-24 | 深圳创新科技术有限公司 | 一种实现动态ip池的方法、***、设备及可读存储介质 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20030051930A (ko) * | 2001-12-20 | 2003-06-26 | 한국전자통신연구원 | 클러스터 시스템의 고 가용성 구현장치 및 방법 |
JP2007199962A (ja) * | 2006-01-25 | 2007-08-09 | Internatl Business Mach Corp <Ibm> | クラスタ化された記憶装置ネットワークにおけるサービス・フェイルオーバの制御 |
CN102231681A (zh) * | 2011-06-27 | 2011-11-02 | 中国建设银行股份有限公司 | 一种高可用集群计算机***及其故障处理方法 |
CN106161090A (zh) * | 2016-07-12 | 2016-11-23 | 许继集团有限公司 | 一种分区集群***的监测方法及装置 |
CN111371599A (zh) * | 2020-02-26 | 2020-07-03 | 山东汇贸电子口岸有限公司 | 一种基于etcd的集群容灾管理*** |
-
2021
- 2021-01-15 CN CN202110055020.9A patent/CN114764380A/zh active Pending
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20030051930A (ko) * | 2001-12-20 | 2003-06-26 | 한국전자통신연구원 | 클러스터 시스템의 고 가용성 구현장치 및 방법 |
JP2007199962A (ja) * | 2006-01-25 | 2007-08-09 | Internatl Business Mach Corp <Ibm> | クラスタ化された記憶装置ネットワークにおけるサービス・フェイルオーバの制御 |
CN102231681A (zh) * | 2011-06-27 | 2011-11-02 | 中国建设银行股份有限公司 | 一种高可用集群计算机***及其故障处理方法 |
CN106161090A (zh) * | 2016-07-12 | 2016-11-23 | 许继集团有限公司 | 一种分区集群***的监测方法及装置 |
CN111371599A (zh) * | 2020-02-26 | 2020-07-03 | 山东汇贸电子口岸有限公司 | 一种基于etcd的集群容灾管理*** |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115174660A (zh) * | 2022-08-03 | 2022-10-11 | 以萨技术股份有限公司 | 服务注册和发现的方法、装置、电子设备和存储介质 |
CN115421971A (zh) * | 2022-08-16 | 2022-12-02 | 江苏安超云软件有限公司 | Etcd灾备故障恢复的方法及应用 |
CN116938881A (zh) * | 2023-09-18 | 2023-10-24 | 深圳创新科技术有限公司 | 一种实现动态ip池的方法、***、设备及可读存储介质 |
CN116938881B (zh) * | 2023-09-18 | 2024-02-09 | 深圳创新科技术有限公司 | 一种实现动态ip池的方法、***、设备及可读存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN114764380A (zh) | 一种基于etcd的分布式集群控制方法和装置 | |
US6622261B1 (en) | Process pair protection for complex applications | |
JP4204769B2 (ja) | フェールオーバを処理するシステムおよび方法 | |
CN101582787B (zh) | 一种双机备份***及备份方法 | |
CN108847982B (zh) | 一种分布式存储集群及其节点故障切换方法和装置 | |
US7802128B2 (en) | Method to avoid continuous application failovers in a cluster | |
US9240937B2 (en) | Fault detection and recovery as a service | |
US9201919B2 (en) | Bandwidth optimized two-phase commit protocol for distributed transactions | |
US7444335B1 (en) | System and method for providing cooperative resource groups for high availability applications | |
US9164864B1 (en) | Minimizing false negative and duplicate health monitoring alerts in a dual master shared nothing database appliance | |
CN102394914A (zh) | 集群脑裂处理方法和装置 | |
CN102360324B (zh) | 故障恢复方法和用于故障恢复的设备 | |
US8943191B2 (en) | Detection of an unresponsive application in a high availability system | |
CN109144748B (zh) | 一种服务器、分布式服务器集群及其状态驱动方法 | |
WO2020134199A1 (zh) | 实现数据一致性的方法和装置、服务器和终端 | |
CN115562911B (zh) | 虚拟机数据备份方法及装置、***、电子设备、存储介质 | |
US7499987B2 (en) | Deterministically electing an active node | |
CN110109772B (zh) | 一种cpu的重启方法、通信设备及可读存储介质 | |
CN107071189B (zh) | 一种通讯设备物理接口的连接方法 | |
CN108243031B (zh) | 一种双机热备的实现方法及装置 | |
CN112600690B (zh) | 一种配置数据同步方法、装置、设备及存储介质 | |
JP2005301436A (ja) | クラスタシステムおよびクラスタシステムにおける障害回復方法 | |
CN116185697B (zh) | 容器集群管理方法、装置、***、电子设备及存储介质 | |
JP2012014674A (ja) | 仮想環境における故障復旧方法及びサーバ及びプログラム | |
JP2016066303A (ja) | サーバ装置、冗長構成サーバシステム、情報引継プログラム及び情報引継方法 |
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 |