rabbitmq重装之后无法加入原有cluster的bug解析

背景:

一台controller node,一台compute1节点

两台机器的host文件均已经进行hostname解析

两节点本已经加入了同一rabbitmq cluster

但controller node因为服务原因,还原至裸机状态,在yum安装rabbitmq-server.service之后,存在compute1节点无法加入到controller rabbitmq cluster的异常

相关异常如下

[[email protected] ~]# rabbitmqctl join_cluster [email protected]
Clustering node [email protected] with [email protected] ...
Error: {cannot_start_mnesia,
           {{shutdown,{failed_to_start_child,mnesia_kernel_sup,killed}},
            {mnesia_sup,start,[normal,[]]}}}
[[email protected] ~]# rabbitmqctl start_app
Starting node [email protected] ...
BOOT FAILED
===========
Error description:
   {error,{inconsistent_cluster,"Node [email protected] thinks it‘s clustered with node [email protected], but [email protected] disagrees"}}
Log files (may contain more information):
   /var/log/rabbitmq/[email protected]
   /var/log/rabbitmq/[email protected]
Stack trace:
   [{rabbit_mnesia,check_cluster_consistency,0,
                   [{file,"src/rabbit_mnesia.erl"},{line,598}]},
    {rabbit,‘-start/0-fun-0-‘,0,[{file,"src/rabbit.erl"},{line,260}]},
    {rabbit,start_it,1,[{file,"src/rabbit.erl"},{line,296}]},
    {rpc,‘-handle_call_call/6-fun-0-‘,5,[{file,"rpc.erl"},{line,206}]}]
Error: {error,{inconsistent_cluster,"Node [email protected] thinks it‘s clustered with node [email protected], but [email protected] disagrees"}}

其中报错说明是compute1 node认为controller node节点是其cluster,但是controller并不是

同时还有如下的error报错

[[email protected] ~]# rabbitmqctl join_cluster [email protected]
Clustering node [email protected] with [email protected] ...
Error: {cannot_start_mnesia,
           {{shutdown,{failed_to_start_child,mnesia_kernel_sup,killed}},
            {mnesia_sup,start,[normal,[]]}}}

因为controller node是新安装,其icook信息也复制过去。compute1 node也执行stop_app,故应该推测应该是compute1 node之前残留的cluster信息,导致认证失败

在网上查询到因为mnesia的信息残留,故会认证失败。

其目录为/var/lib/rabbitmq/mnesia

mv /var/lib/rabbitmq/mnesia /tmp

然后再将controller节点的icook节点scp至compute1节点

重新使用 rabbitmqctl join_cluster [email protected]

完成cluster的加入

日常很难遇到,但在实验环境中很容易遇到,特此记录,以备后需

时间: 2024-11-05 08:04:04

rabbitmq重装之后无法加入原有cluster的bug解析的相关文章

孙其功陪你学之——重装系统后配置原有的虚拟机

由于系统出现了问题,就一键还原到了刚刚购机时的系统状态,但是其他盘还保留了之前安装的虚拟机Vmware和虚拟机系统.安装好了之后,打开VMware后发现,提示让填写注册码,填写完了,怎么都不成功.准备重新安装,提示:failed to create the requested registry key key installer error 1021.这就是注册表有问题了,新装的系统里对于原来的软件的注册表不一样.那么就,在开始--运行--输入regedit,打开注册表 , 在注册表中找到HKE

RabbitMQ 高可用集群搭建及电商平台使用经验总结

面向EDA(事件驱动架构)的方式来设计你的消息 AMQP routing key的设计 RabbitMQ cluster搭建 Mirror queue policy设置 两个不错的RabbitMQ plugin 大型应用插件(Sharding.Rederation) Queue镜像失败手动同步 各集群配置同步方式(RabbitMQ export\import) 客户端连接方式(尽量采用AMQP组来动态链接) RabbitMQ 产线二次产品化封装(消息补偿.发送消息持久化.异常处理.监控页面.重复

Rabbitmq集群部署手册

一.Rabbitmq集群部署手册 1.环境介绍 系统环境:Red HatEnterprise Linux Server release 6.2 (Santiago) 内核版本:Linux zxt-02.com2.6.32-220.el6.x86_64 #1 SMP Wed Nov 9 08:03:13 EST 2011 x86_64 x86_64 x86_64GNU/Linux 软件版本:otp_src_17.3:rabbitmq-server-3.2.4:Python 2.6.6:simple

RabbitMQ 高可用集群搭建

面向EDA(事件驱动架构)的方式来设计你的消息 AMQP routing key的设计 RabbitMQ cluster搭建 Mirror queue policy设置 两个不错的RabbitMQ plugin 大型应用插件(Sharding.Rederation) Queue镜像失败手动同步 各集群配置同步方式(RabbitMQ export\import) 客户端连接方式(尽量采用AMQP组来动态链接) RabbitMQ 产线二次产品化封装(消息补偿.发送消息持久化.异常处理.监控页面.重复

(转)RabbitMQ消息队列(三):任务分发机制

在上篇文章中,我们解决了从发送端(Producer)向接收端(Consumer)发送“Hello World”的问题.在实际的应用场景中,这是远远不够的.从本篇文章开始,我们将结合更加实际的应用场景来讲解更多的高级用法. 当有Consumer需要大量的运算时,RabbitMQ Server需要一定的分发机制来balance每个Consumer的load.试想一下,对于web application来说,在一个很多的HTTP request里是没有时间来处理复杂的运算的,只能通过后台的一些工作线程

RabbitMQ消息队列(三):任务分发机制

在上篇文章中,我们解决了从发送端(Producer)向接收端(Consumer)发送“Hello World”的问题.在实际的应用场景中,这是远远不够的.从本篇文章开始,我们将结合更加实际的应用场景来讲解更多的高级用法. 当有Consumer需要大量的运算时,RabbitMQ Server需要一定的分发机制来balance每个Consumer的load.试想一下,对于web application来说,在一个很多的HTTP request里是没有时间来处理复杂的运算的,只能通过后台的一些工作线程

RabbitMQ(三):任务分发机制

 在上篇文章中,我们解决了从发送端(Producer)向接收端(Consumer)发送"Hello World"的问题.在实际的应用场景中,这是远远不够的.从本篇文章开始,我们将结合更加实际的应用场景来讲解更多的高级用法. 当有Consumer需要大量的运算时,RabbitMQ Server需要一定的分发机制来balance每个Consumer的load.试想一下,对于web application来说,在一个很多的HTTP request里是没有时间来处理复杂的运算的,只能通过后

RabbitMQ消息队列(三):任务分发机制[转]

在上篇文章中,我们解决了从发送端(Producer)向接收端(Consumer)发送“Hello World”的问题.在实际的应用场景中,这是远远不够的.从本篇文章开始,我们将结合更加实际的应用场景来讲解更多的高级用法. 当有Consumer需要大量的运算时,RabbitMQ Server需要一定的分发机制来balance每个Consumer的load.接下来我们分布讲解. 应用场景就是RabbitMQ Server会将queue的Message分发给不同的Consumer以处理计算密集型的任务

【RabbitMQ】5、RabbitMQ任务分发机制

当有Consumer需要大量的运算时,RabbitMQ Server需要一定的分发机制来balance每个Consumer的load.接下来我们分布讲解. 应用场景就是RabbitMQ Server会将queue的Message分发给不同的Consumer以处理计算密集型的任务: 1. Message acknowledgment 消息确认 每个Consumer可能需要一段时间才能处理完收到的数据.如果在这个过程中,Consumer出错了,异常退出了,而数据还没有处理完成,那么 非常不幸,这段数