当前位置:首页 > 服务端 > RabbitMQ之集群故障恢复

RabbitMQ之集群故障恢复

2022年11月09日 08:29:20服务端6

1.环境

3台虚拟机并已搭建好了集群。查看 集群搭建
主节点yzm1(128)、从节点yzm2(129)、从节点yzm3(130)

2.主节点正常,从节点宕机

查看集群状态,3台虚拟机都是正常运行状态
RabbitMQ之集群故障恢复 _ JavaClub全栈架构师技术笔记

使yzm2宕机,关闭yzm2对应的虚拟机
RabbitMQ之集群故障恢复 _ JavaClub全栈架构师技术笔记

剔除yzm2的节点
RabbitMQ之集群故障恢复 _ JavaClub全栈架构师技术笔记

重新启动yzm2的rabbitmq服务
RabbitMQ之集群故障恢复 _ JavaClub全栈架构师技术笔记

报错信息:Node rabbit@yzm2 thinks it’s clustered with node rabbit@yzm3, but rabbit@yzm3 disagrees
意思是yzm2宕机不属于正常退出集群情况,仍然保留有集群的节点配置信息,但集群中已踢出了yzm2节点
解决方法清除保留的节点配置信息:rm -rf /var/lib/rabbitmq/mnesia/*
RabbitMQ之集群故障恢复 _ JavaClub全栈架构师技术笔记
mnesia目录里面的文件删除后,过一会就会重新生成的
RabbitMQ之集群故障恢复 _ JavaClub全栈架构师技术笔记

如果不小心把mnesia目录都给删除了,那么重新创建mnesia目录,但必须确保该目录的用户和组都是rabbitmq
命令:chown rabbitmq:rabbitmq /var/lib/rabbitmq/

yzm2重新加入集群
RabbitMQ之集群故障恢复 _ JavaClub全栈架构师技术笔记

3.主节点宕机,从节点正常

关闭yzm3、yzm2
RabbitMQ之集群故障恢复 _ JavaClub全栈架构师技术笔记

yzm1宕机,关掉虚拟机
此时yzm1是最后的节点,最后的节点也就被当成主节点了
启动yzm2,它就会一直等待yzm1启动才能启动,超时了就启动失败
RabbitMQ之集群故障恢复 _ JavaClub全栈架构师技术笔记

操作yzm3来剔除yzm1
RabbitMQ之集群故障恢复 _ JavaClub全栈架构师技术笔记
主要命令:
rabbitmqctl force_boot
rabbitmqctl start_app
rabbitmqctl forget_cluster_node rabbit@yzm1
我多次使用 --offline 参数,但没有使用成功过,不知道为什么
例如这样的用法:
rabbitmqctl forget_cluster_node --offline rabbit@yzm1
rabbitmqctl -n rabbit@yzm3 forget_cluster_node --offline rabbit@yzm1

最后重启yzm1并加入集群
这步操作跟上面yzm2重启加入集群是一样,都需要先删除节点配置信息
集群状态
RabbitMQ之集群故障恢复 _ JavaClub全栈架构师技术笔记

4.启动节点前进行节点更新

当前集群有节点yzm2和yzm3
RabbitMQ之集群故障恢复 _ JavaClub全栈架构师技术笔记

关闭节点yzm2
RabbitMQ之集群故障恢复 _ JavaClub全栈架构师技术笔记

同时启动yzm1重新加入集群(启动rabbitmq服务前需要清除节点配置信息)
RabbitMQ之集群故障恢复 _ JavaClub全栈架构师技术笔记

关闭yzm3节点,启动yzm2节点
RabbitMQ之集群故障恢复 _ JavaClub全栈架构师技术笔记
RabbitMQ之集群故障恢复 _ JavaClub全栈架构师技术笔记
yzm2会一直等待,直到超时报错

正确的是,先咨询一下在集群中正常运行的yzm1再启动
rabbitmqctl update_cluster_nodes rabbit@yzm1
RabbitMQ之集群故障恢复 _ JavaClub全栈架构师技术笔记

作者:yzm4399
来源链接:https://blog.csdn.net/qq_43654581/article/details/121516201

版权声明:
1、JavaClub(https://www.javaclub.cn)以学习交流为目的,由作者投稿、网友推荐和小编整理收藏优秀的IT技术及相关内容,包括但不限于文字、图片、音频、视频、软件、程序等,其均来自互联网,本站不享有版权,版权归原作者所有。

2、本站提供的内容仅用于个人学习、研究或欣赏,以及其他非商业性或非盈利性用途,但同时应遵守著作权法及其他相关法律的规定,不得侵犯相关权利人及本网站的合法权利。
3、本网站内容原作者如不愿意在本网站刊登内容,请及时通知本站(javaclubcn@163.com),我们将第一时间核实后及时予以删除。


本文链接:https://www.javaclub.cn/server/68752.html

标签: RabbitMQ
分享给朋友:

“RabbitMQ之集群故障恢复” 的相关文章

rabbitmq权限配置

关于rabbitmq权限的几点: rabbitmq的权限控制通过两层来实现,一是vhost的权限,二是确认有权限访问vhost后,对vhost内资源的权限控制(配置,读,写)   1.默认...

Linux系统Centos7安装RabbitMQ使用压缩包配置环境变量RabbitMQ 3.8.16.tar.xz Erlang 24

Linux系统Centos7安装RabbitMQ使用压缩包配置环境变量RabbitMQ 3.8.16.tar.xz Erlang 24

文件的下载1、创建两个安装信息的存放文件夹sudo mkdir /usr/local/rabbitmqsudo mkdir /usr/local/erlang  2、下载rabbitmq和erlangcd /usr/local/rab...

rabbitmq删除队列

作者:吴业亮 博客:http://blog.csdn.net/wylfengyujiancheng 从github下载rabbitmqadmin # wget https://raw.githubusercontent.com/rabb...

RabbitMq的一些概念,持久化、队列排他、自动删除、消息确认机制、消息ACK、消费消息的模式

一、队列持久化的概念 队列的声明默认是存放到内存中的,如果rabbitmq重启会丢失,如果想重启之后还存在就要使队列持久化,保存到Erlang自带的Mnesia数据库中,当rabbitmq重启之后会读取该数据库。 二、排他 简单理解就是在连接关闭时是否会删除队列...

RabbitMQ原理

RabbitMQ原理

RabbitMQ原理 Simplest Sample Work Queues Round-robin dispatching Messa...

RabbitMQ集群搭建和测试总结

RabbitMQ集群搭建和测试总结

RabbiMQ简介 RabbitMQ是用Erlang开发的,集群非常方便,因为Erlang天生就是一门分布式语言,但其本身并不支持负载均衡。 RabbitMQ模式 RabbitMQ模式大概分为以下三种: (1)单一模式。 (2)普通模式...

rabbitmq面试题

rabbit面试题 1.什么是rabbitmq 采用AMQP高级消息队列协议的一种消息队列技术,最大的特点就是消费并不需要确保提供方存在,实现了服务之间的高度解耦 2.为什么要使用rabbitmq 1.在分布式系统下具备异步,削峰...

初识RabbitMq

初识RabbitMq

RabbitMq详解 一:对RabbitMq的理解网上去搜下面直接干货走起: 什么叫消息队列 ​ 消息(Message)是指在应用间传送的数据。消息可以非常简单,比如只包含文本字符串,也可以更复杂,可能包含嵌入对象。 ​ 消息队列...

RabbitMQ入门3:RabbitMQ管理后台,简介;

RabbitMQ入门3:RabbitMQ管理后台,简介;

说明: (1)本篇博客的内容:简单介绍RabbitMQ的管理后台; 目录 1.使用【rabbitmq-plugins enable rabbitmq_management】,启动RabbitMQ的管理后台; 2.使用【rabbitmqc...

RabbitMQ下载安装

RabbitMQ下载安装

RabbitMQ RabbitMQ安装 1、概述 RabbitMQ是一款使用Erlang语言开发的,实现AMQP(高级消息队列协议)的开源消息中间件。首先要知道一些RabbitMQ的特点,官网可查: 可靠性。支持持久化,传...

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。