CN113438111A - 基于Raft分布式恢复RabbitMQ网络分区的方法及应用 - Google Patents
基于Raft分布式恢复RabbitMQ网络分区的方法及应用 Download PDFInfo
- Publication number
- CN113438111A CN113438111A CN202110700204.6A CN202110700204A CN113438111A CN 113438111 A CN113438111 A CN 113438111A CN 202110700204 A CN202110700204 A CN 202110700204A CN 113438111 A CN113438111 A CN 113438111A
- Authority
- CN
- China
- Prior art keywords
- rabbitmq
- node
- cluster
- raft
- maintenance
- 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
- 238000005192 partition Methods 0.000 title claims abstract description 70
- 238000000034 method Methods 0.000 title claims abstract description 33
- 238000009826 distribution Methods 0.000 title claims abstract description 13
- 238000011084 recovery Methods 0.000 claims abstract description 40
- 238000012423 maintenance Methods 0.000 claims description 72
- 230000006870 function Effects 0.000 claims description 38
- 238000003860 storage Methods 0.000 claims description 11
- 238000004590 computer program Methods 0.000 claims description 9
- 230000000977 initiatory effect Effects 0.000 claims description 2
- 238000004422 calculation algorithm Methods 0.000 abstract description 8
- 210000004556 brain Anatomy 0.000 abstract description 5
- 230000001360 synchronised effect Effects 0.000 abstract description 5
- 238000010586 diagram Methods 0.000 description 16
- 230000001276 controlling effect Effects 0.000 description 9
- 230000000875 corresponding effect Effects 0.000 description 5
- 238000012545 processing Methods 0.000 description 5
- 238000004891 communication Methods 0.000 description 4
- 230000008859 change Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000008569 process Effects 0.000 description 2
- 230000002159 abnormal effect Effects 0.000 description 1
- 230000005856 abnormality Effects 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 230000007717 exclusion Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000010076 replication Effects 0.000 description 1
Images
Classifications
-
- 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
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1095—Replication or mirroring of data, e.g. scheduling or transport for data synchronisation between network nodes
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Hardware Redundancy (AREA)
Abstract
本发明公开了一种基于Raft分布式恢复RabbitMQ网络分区的方法及应用,所述方法包括以下步骤:RabbitMQ集群中的各RabbitMQ节点查询各自的Raft数据库,并分别确定该节点的当前角色状态;所述RabbitMQ集群根据各RabbitMQ节点的当前角色状态,执行分区故障恢复。根据本发明的基于Raft分布式恢复RabbitMQ网络分区的方法及应用,能够利用Raft算法的选举主节点功能实现分布式恢复集群网络分区故障的功能,避免单点故障的产生,并且根据Raft算法中RabbitMQ集群内超过半数节点的数据达到同步就认为RabbitMQ集群的数据一致,得到一致性Raft数据库,避免脑裂的产生。
Description
技术领域
本发明是关于计算机领域,特别是关于一种基于Raft分布式恢复RabbitMQ网络分区的方法,以及应用该方法的系统、电子设备及存储介质。
背景技术
目前企业在部署大规模数据中心Openstack云计算环境时,考虑到突发情况,通常会把关键性服务部署成集群模式,例如RabbitMQ消息队列集群服务,通过把RabbitMQ启动成集群模式,可以同时在多台机器上对外服务,提升对外服务量,避免环境出现网络故障或者机器故障导致单台或多台节点故障从而引起整体服务不可用,比传统的非集群服务模式提升了服务的健壮性和可用性。
现有数据中心的RabbitMQ集群模式下网络分区后故障恢复大多存在以下缺点:存在固定的中心节点,中心节点上运行监控脚本,当故障发生后,执行相应的动作,中心节点一旦出现问题,RabbitMQ集群也会无法正常工作;存在脑裂的可能,当偶数个RabbitMQ节点组成集群时,如果恰好网络分区成一半,那么双方会出现双主问题,RabbitMQ集群会出现两个,造成环境异常;以上这些情况,在数据中心出现问题时,故障恢复状态查询困难,需要执行专业命令进行查询以及配置才能找到问题所在,增加运维困难。
公开于该背景技术部分的信息仅仅旨在增加对本发明的总体背景的理解,而不应当被视为承认或以任何形式暗示该信息构成已为本领域一般技术人员所公知的现有技术。
发明内容
本发明的目的在于提供一种基于Raft分布式恢复RabbitMQ网络分区的方法及应用,以解决中心节点发生故障RabbitMQ集群无法正常工作,且可能出现双主问题导致环境异常的问题。
为了实现上述目的,本发明的实施例提供了一种基于Raft分布式恢复RabbitMQ网络分区的方法,包括以下步骤:RabbitMQ集群中的各RabbitMQ节点查询各自的Raft数据库,并分别确定该节点当前角色状态;所述RabbitMQ集群根据各RabbitMQ节点的当前角色状态,执行分区故障恢复。
在本发明的一个或多个实施方式中,所述RabbitMQ集群根据各RabbitMQ节点的当前角色状态,执行分区故障恢复,具体包括:若故障RabbitMQ节点的角色状态为主节点,则所述RabbitMQ集群发起Raft选举,以从非故障RabbitMQ节点中选举出新的主节点;所述新的主节点对所述RabbitMQ集群执行分区故障恢复。
在本发明的一个或多个实施方式中,还包括:在所述RabbitMQ集群发起Raft选举时,若当前RabbitMQ节点的角色状态为候选节点,则停止当前RabbitMQ节点的RabbitMQ服务。
在本发明的一个或多个实施方式中,若当前RabbitMQ节点的角色状态为跟随节点,则启动当前RabbitMQ节点的RabbitMQ服务,并将当前RabbitMQ节点加入其它节点的RabbitMQ集群。
在本发明的一个或多个实施方式中,所述RabbitMQ集群根据各RabbitMQ节点的当前角色状态,执行分区故障恢复,具体包括:若故障RabbitMQ节点的角色状态不为主节点,则所述RabbitMQ集群的主节点对所述RabbitMQ集群执行分区故障恢复。
在本发明的一个或多个实施方式中,还包括:所述RabbitMQ集群中的控制节点将第一切换指令发送至RabbitMQ节点,以使所述RabbitMQ节点的角色状态切换为维护节点;所述RabbitMQ集群中的控制节点将维护指令发送至所述维护节点,以使所述维护节点停止RabbitMQ服务;待所述维护节点升级完成后,所述RabbitMQ集群中的控制节点将重启指令发送至所述维护节点,以使所述维护节点重启RabbitMQ服务;所述RabbitMQ集群中的控制节点将第二切换指令发送至所述维护节点,以使所述维护节点的角色状态切换为候选节点,并重新加入RabbitMQ集群。
为了实现上述目的,本发明的实施例提供了一种基于Raft分布式恢复RabbitMQ网络分区的系统,包括配置于RabbitMQ集群中各RabbitMQ节点上的管理模块和功能模块,所述管理模块用于调用所述功能模块控制RabbitMQ集群中的各RabbitMQ节点查询各自的Raft数据库,并分别确定当前角色状态;以及调用所述功能模块,控制所述RabbitMQ集群根据各RabbitMQ节点的当前角色状态,执行分区故障恢复。
在本发明的一个或多个实施方式中,所述管理模块具体用于在故障RabbitMQ节点的角色状态为主节点时,调用所述功能模块,控制所述RabbitMQ集群发起Raft选举,以从非故障RabbitMQ节点中选举出新的主节点;以及调用所述功能模块,控制所述新的主节点对所述RabbitMQ集群执行分区故障恢复。
在本发明的一个或多个实施方式中,所述管理模块还用于在所述RabbitMQ集群发起Raft选举、且当前RabbitMQ节点的角色状态为候选节点时,调用所述功能模块,停止当前RabbitMQ节点的RabbitMQ服务。
在本发明的一个或多个实施方式中,所述管理模块还用于在当前RabbitMQ节点的角色状态为跟随节点时,调用所述功能模块,启动当前RabbitMQ节点的RabbitMQ服务,并将当前RabbitMQ节点加入其它节点的RabbitMQ集群。
在本发明的一个或多个实施方式中,所述管理模块具体用于在故障RabbitMQ节点的角色状态不为主节点时,调用所述功能模块,控制所述RabbitMQ集群的主节点对所述RabbitMQ集群执行分区故障恢复。
在本发明的一个或多个实施方式中,还包括控制模块,用于:控制所述RabbitMQ集群中的控制节点将第一切换指令发送至RabbitMQ节点,以使所述RabbitMQ节点的角色状态切换为维护节点;控制所述RabbitMQ集群中的控制节点将维护指令发送至所述维护节点,以使所述维护节点停止RabbitMQ服务;待所述维护节点升级完成后,控制所述RabbitMQ集群中的控制节点将重启指令发送至所述维护节点,以使所述维护节点重启RabbitMQ服务;控制所述RabbitMQ集群中的控制节点将第二切换指令发送至所述维护节点,以使所述维护节点的角色状态切换为候选节点,并重新加入RabbitMQ集群。
为了实现上述目的,本发明还提供了一种电子设备,包括:至少一个处理器;以及存储器,所述存储器存储指令,当所述指令被所述至少一个处理器执行时,使得所述至少一个处理器执行如上所述的基于Raft分布式恢复RabbitMQ网络分区的方法。
为了实现上述目的,本发明还提供了一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如所述的基于Raft分布式恢复RabbitMQ网络分区的方法的步骤。
与现有技术相比,根据本发明的基于Raft分布式恢复RabbitMQ网络分区的方法及应用,通过在RabbitMQ集群中配置Raft数据库,在发生分区故障时,各RabbitMQ节点可以通过查询各自的Raft数据库明确当前角色状态,从而执行相应的分区故障恢复方法,避免了在设置中心节点的方式中,中心节点故障导致集群无法工作的问题,,并且由于Raft算法中RabbitMQ集群内超过半数节点的数据达到同步就认为RabbitMQ集群的数据一致,可以得到一致性Raft数据库,避免了脑裂的产生,不存在双主问题。
附图说明
图1是根据本发明一实施方式的RabbitMQ集群整体架构图;
图2是根据本发明一实施方式的RabbitMQ agent程序流程图;
图3是根据本发明一实施方式的RabbitMQ集群管理程序流程图;
图4是根据本发明一实施方式的RabbitMQ集群故障恢复的流程图;
图5是根据本发明一实施方式的RabbitMQ集群主节点故障的架构图;
图6是根据本发明一实施方式的RabbitMQ集群主节点切换的架构图;
图7是根据本发明一实施方式的RabbitMQ集群主节点故障恢复后的架构图;
图8是根据本发明一实施方式的基于Raft分布式恢复RabbitMQ网络分区的系统的结构图;
图9是根据本发明一实施方式的用于基于Raft分布式恢复RabbitMQ网络分区的计算设备的硬件结构图。
具体实施方式
下面结合附图,对本发明的具体实施方式进行详细描述,但应当理解本发明的保护范围并不受具体实施方式的限制。
除非另有其它明确表示,否则在整个说明书和权利要求书中,术语“包括”或其变换如“包含”或“包括有”等等将被理解为包括所陈述的元件或组成部分,而并未排除其它元件或其它组成部分。
下面对本发明实施例中涉及的部分概念进行介绍。
RabbitMQ集群:RabbitMQ的工作原理是消息发布者向RabbitMQ代理服务器发送消息,代理服务器内部的交换器接收信息,把消息传递到与交换器绑定的消息队列中并保存,消费者通过与消息代理服务器建立连接,然后从对应的消息队列中取出消息进行处理的过程。
Raft算法:主要用在分布式系统的一致性同步中,一个采用Raft算法的分布式系统中的所记录的数据,只需要超过半数的节点记录下来就可以代表数据已经安全记录,不需要所有节点参与到其中来,当环境中新的节点加入时,数据会自动同步到新加入的节点上。
下面结合图1-图7,介绍本发明基于Raft分布式恢复RabbitMQ网络分区的方法的具体实施方式。
本发明中提及的网络分区故障为RabbitMQ集群中主节点与其它两个跟随节点之间发生通信故障。本实施例以含有3个节点的分布式RabbitMQ集群为例进行说明,其中,RabbitMQ节点1为主节点,RabbitMQ节点2和RabbitMQ节点3为跟随节点。需要说明的是,该RabbitMQ集群仅仅是示例的目的,本发明并不以此为限,任何能够实现本发明的RabbitMQ集群均在本发明的保护范围之内。
在步骤S101中,在控制节点上设置RabbitMQ集群管理程序,在所有RabbitMQ节点上设置RabbitMQ agent程序,并组成Raft集群。RabbitMQ集群管理程序能够和各个RabbitMQ agent程序进行通信,并根据Raft集群查询当前各RabbitMQ节点的状态,管理员可以通过RabbitMQ节点的当前状态判断RabbitMQ集群是否发生网络分区,并由RabbitMQ集群管理程序接收管理员发出的恢复RabbitMQ网络分区故障指令。
在步骤S102中,RabbitMQ集群管理程序发送恢复RabbitMQ网络分区故障的指令至RabbitMQ节点上的RabbitMQ agent程序。
在步骤S103中,RabbitMQ集群中的各RabbitMQ节点查询各自的Raft数据库,并分别确定该节点的当前角色状态。
Raft数据库是一个设置在RabbitMQ agent程序中的分布式一致性数据库,该数据库负责记录当前所述RabbitMQ集群的角色状态,其中,角色状态包括:主节点、跟随节点、候选节点和维护节点,主节点负责接收客户端的请求,将数据复制到其他节点并告知其他节点何时应用这些数据是安全的,跟随节点是系统启动时默认的角色,负责响应来自主节点或者候选节点的请求,在主节点故障后切换为候选节点,候选节点是用于选举主节点的一种角色,维护节点是管理员使用的维护模式,当需要对节点进行维护的时候可以暂时通过命令将节点设置成该角色。
在步骤S104中,所述RabbitMQ集群根据各RabbitMQ节点的当前角色状态,执行分区故障恢复。
本实施例中,主要根据发生故障的RabbitMQ节点为主节点还是跟随节点,RabbitMQ集群会对应执行不同的方法进行分区故障恢复。一种情况中,若故障RabbitMQ节点的角色状态为主节点,则RabbitMQ集群会发起Raft选举,以从非故障RabbitMQ节点中选举出新的主节点。
主节点为了保证与其他节点保持通讯,以及监控其他节点的可用性,会发送请求通信给跟随节点,跟随节点也能够通过请求通信知道主节点有没有故障,是否处于可用状态,跟随节点会随时监控主节点的状态,一旦发现一定时间内没有接收到主节点的请求,就认为主节点发生故障,跟随节点会立刻切换为候选节点,并进行选举操作。
对应到本实施例中,由于原先作为主节点的RabbitMQ节点1发生故障,因此其状态也被切换为候选节点,因为一直没有超过半数的节点可以通信,所以会停止RabbitMQ节点1的RabbittMQ服务,等待主节点角色的选出。
在一个示意性的Raft选举过程中,候选节点在发出了选举请求后,会收到了其它节点的投票反馈,如果超过一半的节点都赞成该节点成为新的主节点角色,那么该候选节点则选举成功,转为主节点状态,选举结束。该节点转为主节点后立刻向集群中其他节点发送选举结果,并且进行作为主节点的其他工作,如日志复制等。对应到本实施例中,例如可以从非故障节点RabbitMQ节点2和RabbitMQ节点3中选举出RabbitMQ节点2为新的主节点,RabbitMQ节点2上的RabbitMQ agent收到角色变化通知,进行RabbitMQ集群网络分区故障恢复功能,保证RabbitMQ集群的队列的master在该节点上。
网络分区恢复之后,RabbitMQ节点1重新在Raft集群中变成跟随节点角色,并启动该节点上的RabbitMQ服务,将该节点上的RabbitMQ服务加入到现有的RabbitMQ集群,完成RabbitMQ集群恢复。
另一种情况中,若故障RabbitMQ节点的角色状态不为主节点,则RabbitMQ集群的主节点会直接对RabbitMQ集群执行分区故障恢复,而不需要进行Raft选举的操作,在此不再赘述。
本发明的基于Raft分布式恢复RabbitMQ网络分区的方法,通过在控制节点上设置RabbitMQ集群管理程序,可以为系统运维和管理人员提供查看RabbitMQ集群状态以及维护集群状态的接口;并且,在RabbitMQ节点上设置的RabbitMQ agent程序可以通过Raft算法的选举主节点功能实现分布式恢复集群网络分区故障的功能,避免了单点故障的产生;通过Raft算法中RabbitMQ集群内超过半数节点的数据达到同步就认为RabbitMQ集群的数据一致,得到一致性Raft数据库,避免脑裂的产生,不存在双主问题。
以下以运维人员需要升级RabbitMQ软件版本为例对本申请的基于Raft分布式恢复RabbitMQ网络分区的方法进行进一步说明。
在步骤201中,RabbitMQ集群中的控制节点将第一切换指令发送至RabbitMQ节点,以使所述RabbitMQ节点的角色状态切换为维护节点。
这里的第一切换指令可以是切换RabbitMQ节点角色为维护模式的指令,并可以通过控制节点中的集群管理程序发送。RabbitMQ节点上的RabbitMQ agent程序的管理单元收到指令后可以调用功能模块把该节点角色转变成维护节点,进入维护模式,从而从Raft集群自带的集群管理中脱离,避免此时RabbitMQ网络分区,Raft集群发生角色变换造成的影响。
在步骤202中,RabbitMQ集群中的控制节点将维护指令发送至所述维护节点,以使所述维护节点停止RabbitMQ服务。
具体地,RabbitMQ集群控制节点的管理程序发送调用RabbitMQ节点上的功能模块并停止该节点RabbitMQ服务的指令,维护节点上的RabbitMQ agent程序的管理单元收到指令后,调用功能模块停止相应维护节点上的RabbitMQ服务。
在步骤203中,待维护节点升级完成后,RabbitMQ集群中的控制节点将重启指令发送至所述维护节点,以使所述维护节点重启RabbitMQ服务。
具体地,RabbitMQ集群控制节点的管理程序发送调用RabbitMQ节点上的功能模块并启动该结点RabbitMQ服务的指令,维护节点上的RabbitMQ agent程序的管理单元收到指令后,调用功能模块重启维护节点上的RabbitMQ服务。
在步骤204中,RabbitMQ集群中的控制节点将第二切换指令发送至所述维护节点,以使维护节点的角色状态切换为候选节点,并重新加入RabbitMQ集群。
这里的第二切换指令可以是将维护节点角色切换为候选节点角色的指令。维护节点上的RabbitMQ agent程序的管理单元收到指令后,调用功能模块把该节点角色转变成候选节点,重新加入Raft集群(RabbitMQ集群)中,完成运维升级。
在以上实施方式中,通过在控制节点上设置RabbitMQ集群管理程序为系统运维提供了查看RabbitMQ集群状态以及维护集群状态的接口,在RabbitMQ节点上设置的RabbitMQagent程序,便于运维人员对系统进行升级操作。
如图8所示,介绍本发明基于Raft分布式恢复RabbitMQ网络分区的系统的具体实施方式。
在系统的实施方式中,包括配置于RabbitMQ集群中各RabbitMQ节点上的管理模块801和功能模块802。管理模块801用于调用功能模块802控制RabbitMQ集群中的各RabbitMQ节点查询各自的Raft数据库,并分别确定当前角色状态;以及调用功能模块802,控制RabbitMQ集群根据各RabbitMQ节点的当前角色状态,执行分区故障恢复。
其中的Raft数据库用于实现RabbitMQ集群内各节点的数据一致,RabbitMQ集群内超过半数的节点的数据达到同步就认为数据一致。
管理模块801具体用于在故障RabbitMQ节点的角色状态为主节点时,调用所述功能模块802,控制所述RabbitMQ集群发起Raft选举,以从非故障RabbitMQ节点中选举出新的主节点;以及调用所述功能模块802,控制所述新的主节点对所述RabbitMQ集群执行分区故障恢复。
管理模块801还用于在所述RabbitMQ集群发起Raft选举、且当前RabbitMQ节点的角色状态为候选节点时,调用所述功能模块802,停止当前RabbitMQ节点的RabbitMQ服务。
管理模块801还用于在当前RabbitMQ节点的角色状态为跟随节点时,调用所述功能模块802,启动当前RabbitMQ节点的RabbitMQ服务,并将当前RabbitMQ节点加入其它节点的RabbitMQ集群。
管理模块801具体用于在故障RabbitMQ节点的角色状态不为主节点时,调用所述功能模块802,控制所述RabbitMQ集群的主节点对所述RabbitMQ集群执行分区故障恢复。
本发明实施例提供的基于Raft分布式恢复RabbitMQ网络分区的系统还包括控制模块803,用于:控制RabbitMQ集群中的控制节点将第一切换指令发送至RabbitMQ节点,以使所述RabbitMQ节点的角色状态切换为维护节点;控制所述RabbitMQ集群中的控制节点将维护指令发送至所述维护节点,以使所述维护节点停止RabbitMQ服务;待所述维护节点升级完成后,控制所述RabbitMQ集群中的控制节点将重启指令发送至所述维护节点,以使所述维护节点重启RabbitMQ服务;控制所述RabbitMQ集群中的控制节点将第二切换指令发送至所述维护节点,以使所述维护节点的角色状态切换为候选节点,并重新加入RabbitMQ集群。
图9示出了根据本说明书的实施例的基于Raft分布式恢复RabbitMQ网络分区的计算设备90的硬件结构图。如图9所示,计算设备90可以包括至少一个处理器901、存储器902(例如非易失性存储器)、内存903和通信接口904,并且至少一个处理器901、存储器902、内存903和通信接口904经由总线905连接在一起。至少一个处理器901执行在存储器902中存储或编码的至少一个计算机可读指令。
应该理解,在存储器902中存储的计算机可执行指令当执行时使得至少一个处理器901进行本说明书的各个实施例中以上结合图1-8描述的各种操作和功能。
在本说明书的实施例中,计算设备90可以包括但不限于:个人计算机、服务器计算机、工作站、桌面型计算机、膝上型计算机、笔记本计算机、移动计算设备、智能电话、平板计算机、蜂窝电话、个人数字助理(PDA)、手持装置、消息收发设备、可佩戴计算设备、消费电子设备等等。
根据一个实施例,提供了一种比如机器可读介质的程序产品。机器可读介质可以具有指令(即,上述以软件形式实现的元素),该指令当被机器执行时,使得机器执行本说明书的各个实施例中以上结合图1-8描述的各种操作和功能。具体地,可以提供配有可读存储介质的系统或者装置,在该可读存储介质上存储着实现上述实施例中任一实施例的功能的软件程序代码,且使该系统或者装置的计算机或处理器读出并执行存储在该可读存储介质中的指令。
本发明的基于Raft分布式恢复RabbitMQ网络分区的方法及应用,通过在RabbitMQ集群中配置Raft数据库,在发生分区故障时,各RabbitMQ节点可以通过查询各自的Raft数据库明确当前角色状态,从而执行相应的分区故障恢复方法,避免了在设置中心节点的方式中,中心节点故障导致集群无法工作的问题,,并且由于Raft算法中RabbitMQ集群内超过半数节点的数据达到同步就认为RabbitMQ集群的数据一致,可以得到一致性Raft数据库,避免了脑裂的产生,不存在双主问题。
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
前述对本发明的具体示例性实施方案的描述是为了说明和例证的目的。这些描述并非想将本发明限定为所公开的精确形式,并且很显然,根据上述教导,可以进行很多改变和变化。对示例性实施例进行选择和描述的目的在于解释本发明的特定原理及其实际应用,从而使得本领域的技术人员能够实现并利用本发明的各种不同的示例性实施方案以及各种不同的选择和改变。本发明的范围意在由权利要求书及其等同形式所限定。
Claims (14)
1.一种基于Raft分布式恢复RabbitMQ网络分区的方法,其特征在于,包括以下步骤:
RabbitMQ集群中的各RabbitMQ节点查询各自的Raft数据库,并分别确定该节点的当前角色状态;
所述RabbitMQ集群根据各RabbitMQ节点的当前角色状态,执行分区故障恢复。
2.如权利要求1所述的基于Raft分布式恢复RabbitMQ网络分区的方法,其特征在于,所述RabbitMQ集群根据各RabbitMQ节点的当前角色状态,执行分区故障恢复,包括:
若故障RabbitMQ节点的角色状态为主节点,则所述RabbitMQ集群发起Raft选举,以从非故障RabbitMQ节点中选举出新的主节点;
所述新的主节点对所述RabbitMQ集群执行分区故障恢复。
3.如权利要求2所述的基于Raft分布式恢复RabbitMQ网络分区的方法,其特征在于,还包括:
在所述RabbitMQ集群发起Raft选举时,若当前RabbitMQ节点的角色状态为候选节点,则停止当前RabbitMQ节点RabbitMQ服务。
4.如权利要求1所述的基于Raft分布式恢复RabbitMQ网络分区的方法,其特征在于,若当前RabbitMQ节点的角色状态为跟随节点,则启动当前RabbitMQ节点的RabbitMQ服务,并将当前RabbitMQ节点加入其它节点的RabbitMQ集群。
5.如权利要求1所述的基于Raft分布式恢复RabbitMQ网络分区的方法,其特征在于,所述RabbitMQ集群根据各RabbitMQ节点的当前角色状态,执行分区故障恢复,具体包括:
若故障RabbitMQ节点的角色状态不为主节点,则所述RabbitMQ集群的主节点对所述RabbitMQ集群执行分区故障恢复。
6.如权利要求1至5任一项所述的方法,其特征在于,还包括:
所述RabbitMQ集群中的控制节点将第一切换指令发送至RabbitMQ节点,以使所述RabbitMQ节点的角色状态切换为维护节点;
所述RabbitMQ集群中的控制节点将维护指令发送至所述维护节点,以使所述维护节点停止RabbitMQ服务;
待所述维护节点升级完成后,所述RabbitMQ集群中的控制节点将重启指令发送至所述维护节点,以使所述维护节点重启RabbitMQ服务;以及
所述RabbitMQ集群中的控制节点将第二切换指令发送至所述维护节点,以使所述维护节点的角色状态切换为候选节点,并重新加入RabbitMQ集群。
7.一种基于Raft分布式恢复RabbitMQ网络分区的系统,其特征在于,包括配置于RabbitMQ集群中各RabbitMQ节点上的管理模块和功能模块,
所述管理模块用于调用所述功能模块控制RabbitMQ集群中的各RabbitMQ节点查询各自的Raft数据库,并分别确定当前角色状态;以及
所述管理模块用于调用所述功能模块,控制所述RabbitMQ集群根据各RabbitMQ节点的当前角色状态,执行分区故障恢复。
8.如权利要求7所述的基于Raft分布式恢复RabbitMQ网络分区的系统,其特征在于,所述管理模块具体用于在故障RabbitMQ节点的角色状态为主节点时,调用所述功能模块控制所述RabbitMQ集群发起Raft选举,以从非故障RabbitMQ节点中选举出新的主节点;以及
所述管理模块用于调用所述功能模块控制所述新的主节点对所述RabbitMQ集群执行分区故障恢复。
9.如权利要求8所述的基于Raft分布式恢复RabbitMQ网络分区的系统,其特征在于,所述管理模块还用于在所述RabbitMQ集群发起Raft选举、且当前RabbitMQ节点的角色状态为候选节点时,调用所述功能模块停止当前RabbitMQ节点的RabbitMQ服务。
10.如权利要求7所述的基于Raft分布式恢复RabbitMQ网络分区的系统,其特征在于,所述管理模块还用于在当前RabbitMQ节点的角色状态为跟随节点时,调用所述功能模块启动当前RabbitMQ节点的RabbitMQ服务,并将当前RabbitMQ节点加入其它节点的RabbitMQ集群。
11.如权利要求7所述的基于Raft分布式恢复RabbitMQ网络分区的系统,其特征在于,所述管理模块具体用于在故障RabbitMQ节点的角色状态不为主节点时,调用所述功能模块控制所述RabbitMQ集群的主节点对所述RabbitMQ集群执行分区故障恢复。
12.如权利要求7至11任一项所述的基于Raft分布式恢复RabbitMQ网络分区的系统,其特征在于,还包括控制模块,用于:
控制所述RabbitMQ集群中的控制节点将第一切换指令发送至RabbitMQ节点,以使所述RabbitMQ节点的角色状态切换为维护节点;
控制所述RabbitMQ集群中的控制节点将维护指令发送至所述维护节点,以使所述维护节点停止RabbitMQ服务;
待所述维护节点升级完成后,控制所述RabbitMQ集群中的控制节点将重启指令发送至所述维护节点,以使所述维护节点重启RabbitMQ服务;以及
控制所述RabbitMQ集群中的控制节点将第二切换指令发送至所述维护节点,以使所述维护节点的角色状态切换为候选节点,并重新加入RabbitMQ集群。
13.一种电子设备,其特征在于,包括:
至少一个处理器;以及
存储器,所述存储器存储指令,当所述指令被所述至少一个处理器执行时,使得所述至少一个处理器执行如权利要求1至6中任一项所述的基于Raft分布式恢复RabbitMQ网络分区的方法。
14.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如权利要求1至6任一项所述的基于Raft分布式恢复RabbitMQ网络分区的方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110700204.6A CN113438111A (zh) | 2021-06-23 | 2021-06-23 | 基于Raft分布式恢复RabbitMQ网络分区的方法及应用 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110700204.6A CN113438111A (zh) | 2021-06-23 | 2021-06-23 | 基于Raft分布式恢复RabbitMQ网络分区的方法及应用 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113438111A true CN113438111A (zh) | 2021-09-24 |
Family
ID=77755165
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110700204.6A Pending CN113438111A (zh) | 2021-06-23 | 2021-06-23 | 基于Raft分布式恢复RabbitMQ网络分区的方法及应用 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113438111A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115037595A (zh) * | 2022-04-29 | 2022-09-09 | 北京华耀科技有限公司 | 网络恢复方法、装置、设备及存储介质 |
CN115421971A (zh) * | 2022-08-16 | 2022-12-02 | 江苏安超云软件有限公司 | Etcd灾备故障恢复的方法及应用 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108984320A (zh) * | 2018-06-27 | 2018-12-11 | 郑州云海信息技术有限公司 | 一种消息队列集群防脑裂方法及装置 |
CN109286529A (zh) * | 2018-10-31 | 2019-01-29 | 武汉烽火信息集成技术有限公司 | 一种恢复RabbitMQ网络分区的方法及系统 |
CN109495540A (zh) * | 2018-10-15 | 2019-03-19 | 深圳市金证科技股份有限公司 | 一种数据处理的方法、装置、终端设备及存储介质 |
CN110290012A (zh) * | 2019-07-03 | 2019-09-27 | 浪潮云信息技术有限公司 | RabbitMQ集群故障的检测恢复系统及方法 |
CN111368002A (zh) * | 2020-03-05 | 2020-07-03 | 广东小天才科技有限公司 | 一种数据处理方法、系统、计算机设备和存储介质 |
-
2021
- 2021-06-23 CN CN202110700204.6A patent/CN113438111A/zh active Pending
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108984320A (zh) * | 2018-06-27 | 2018-12-11 | 郑州云海信息技术有限公司 | 一种消息队列集群防脑裂方法及装置 |
CN109495540A (zh) * | 2018-10-15 | 2019-03-19 | 深圳市金证科技股份有限公司 | 一种数据处理的方法、装置、终端设备及存储介质 |
CN109286529A (zh) * | 2018-10-31 | 2019-01-29 | 武汉烽火信息集成技术有限公司 | 一种恢复RabbitMQ网络分区的方法及系统 |
CN110290012A (zh) * | 2019-07-03 | 2019-09-27 | 浪潮云信息技术有限公司 | RabbitMQ集群故障的检测恢复系统及方法 |
CN111368002A (zh) * | 2020-03-05 | 2020-07-03 | 广东小天才科技有限公司 | 一种数据处理方法、系统、计算机设备和存储介质 |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115037595A (zh) * | 2022-04-29 | 2022-09-09 | 北京华耀科技有限公司 | 网络恢复方法、装置、设备及存储介质 |
CN115037595B (zh) * | 2022-04-29 | 2024-04-23 | 北京华耀科技有限公司 | 网络恢复方法、装置、设备及存储介质 |
CN115421971A (zh) * | 2022-08-16 | 2022-12-02 | 江苏安超云软件有限公司 | Etcd灾备故障恢复的方法及应用 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106331098B (zh) | 一种服务器集群系统 | |
CN113014634B (zh) | 集群选举处理方法、装置、设备及存储介质 | |
WO2019085875A1 (zh) | 存储集群的配置修改方法、存储集群及计算机系统 | |
CN105933407B (zh) | 一种实现Redis集群高可用的方法及系统 | |
CN104408071A (zh) | 一种基于集群管理器的分布式数据库高可用方法及系统 | |
CN102521083A (zh) | 一种云计算系统中虚拟机备份方法和系统 | |
CN113438111A (zh) | 基于Raft分布式恢复RabbitMQ网络分区的方法及应用 | |
CN112181660A (zh) | 一种基于服务器集群的高可用方法 | |
CN110109772B (zh) | 一种cpu的重启方法、通信设备及可读存储介质 | |
WO2024120227A1 (zh) | 容器数据保护系统、方法、装置、设备及可读存储介质 | |
CN110673981A (zh) | 故障恢复方法、装置和系统 | |
CN105589756A (zh) | 批处理集群系统以及方法 | |
CN112527567A (zh) | 系统容灾方法、装置、设备以及存储介质 | |
CN115396296A (zh) | 业务处理方法、装置、电子设备及计算机可读存储介质 | |
CN113377702B (zh) | 两节点集群启动的方法及装置、电子设备和存储介质 | |
CN114328033A (zh) | 保持高可用设备组业务配置一致性的方法及装置 | |
CN113794765A (zh) | 基于文件传输的网闸负载均衡方法及装置 | |
CN107181608B (zh) | 一种恢复服务及性能提升的方法及运维管理系统 | |
CN116185697B (zh) | 容器集群管理方法、装置、系统、电子设备及存储介质 | |
JP2012014674A (ja) | 仮想環境における故障復旧方法及びサーバ及びプログラム | |
CN113986450A (zh) | 一种虚拟机备份方法及装置 | |
JP6856574B2 (ja) | サービス継続システムおよびサービス継続方法 | |
CN115248746A (zh) | 数据备份方法、系统及相关设备 | |
CN110855505B (zh) | 一种高可用规则堆叠实现系统及方法 | |
CN110597609A (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 | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20210924 |
|
RJ01 | Rejection of invention patent application after publication |