一次rabbitmq故障问题解决记录

1. 一次rabbitmq故障问题解决记录

  测试环境的rabbitmq集群,因为虚拟化平台故障,导致三台rabbitmq集群节点全部关机。修复虚拟化平台的故障,启动3台rabbitmq集群节点。故障如下:

  1. rabbitmq磁盘节点正常;

  2. rabbitmq两个内存节点无法启动;报错大体如下:

[root@SZ6FTST0MQ00104 rabbit@SZ6FTST0MQ00104]# service rabbitmq-server start
Starting rabbitmq-server: SUCCESS
rabbitmq-server.
[root@SZ6FTST0MQ00104 rabbit@SZ6FTST0MQ00104]# tail -f /usr/local/rabbitmq_server/var/log/rabbitmq/rabbit\@SZ6FTST0MQ00104.log

=INFO REPORT==== 25-Jun-2019::16:17:22 ===
Error description:
   {could_not_start,rabbit,
       {cannot_create_standalone_ram_node,{rabbit,start,[normal,[]]}}}

Log files (may contain more information):
   /usr/local/rabbitmq_server/var/log/rabbitmq/[email protected]
   /usr/local/rabbitmq_server/var/log/rabbitmq/[email protected]

  解决方案主要如下:

#1.  出现故障的内存节点操作:

cd /usr/local/rabbitmq_server/var/lib/rabbitmq/mnesia

[root@SZ6FTST0MQ00104 mnesia]# ll
total 8
drwxr-xr-x 5 root root 4096 Jun 25 16:54 rabbit@SZ6FTST0MQ00104
drwxr-xr-x 9 root root 4096 Jun 25 16:53 rabbit@SZ6FTST0MQ00104-plugins-expand
[root@SZ6FTST0MQ00104 mnesia]#

# 将两个目录删除掉,这两个目录是元数据信息

# 然后重新启动rabbitmq的服务 service rabbitmq-server start  发现服务已经启动成功

# 服务启动成功之后马上重新加入到rabbitmq的主节点(磁盘节点),会出现以下的报错:

Clustering node rabbit@SZ6FTST0MQ00104 with rabbit@SZ6FTST0MQ00101 ...
Error: {inconsistent_cluster,"Node rabbit@SZ6FTST0MQ00101 thinks it's clustered with node rabbit@SZ6FTST0MQ00104, but rabbit@SZ6FTST0MQ00104 disagrees"}

# 解决的办法就是在主节点(磁盘节点)上面强制删除两个内存节点的信息

2.2   磁盘节点操作

# 因为我们的master节点属于管理节点,内存节点都需要加入到以磁盘节点为主的集群,首先从磁盘节点删除掉两个内存节点的信息

rabbitmqctl forget_cluster_node rabbit@SZ6FTST0MQ00104
rabbitmqctl forget_cluster_node rabbit@SZ6FTST0MQ00100

# 在两个内存节点操作
rabbitmqctl stop_app
rabbitmqctl join_cluster --ram rabbit@SZ6FTST0MQ00101
abbitmqctl start_app
rabbitmqctl cluster_status

[root@SZ6FTST0MQ00100 ~]# rabbitmqctl cluster_status
Cluster status of node rabbit@SZ6FTST0MQ00100 ...
[{nodes,[{disc,[rabbit@SZ6FTST0MQ00101]},
         {ram,[rabbit@SZ6FTST0MQ00104,rabbit@SZ6FTST0MQ00100]}]},
 {running_nodes,[rabbit@SZ6FTST0MQ00104,rabbit@SZ6FTST0MQ00101,
                 rabbit@SZ6FTST0MQ00100]},
 {cluster_name,<<"[email protected]">>},
 {partitions,[]},
 {alarms,[{rabbit@SZ6FTST0MQ00104,[]},
          {rabbit@SZ6FTST0MQ00101,[]},
          {rabbit@SZ6FTST0MQ00100,[]}]}]
[root@SZ6FTST0MQ00100 ~]#

#删除mnesia这个的目的就是清除集群的元数据信息,然后节点就会独立了,必须重新加入集群才可以。重新加入集群的时候报错的原因是因为master节点上面已经有两个内存节点的信息,需要先删除掉,然后再重新加入到集群,是吧。
还有我发现删除掉mnesia之后,重启rabbitmq服务,这个节点就会有集群信息,但是集群信息里面只有自己一个节点的信息;

博文的更详细内容请关注我的个人微信公众号 “云时代IT运维”,本公众号旨在共享互联网运维新技术,新趋势; 包括IT运维行业的咨询,运维技术文档分享。重点关注devops、jenkins、zabbix监控、kubernetes、ELK、各种中间件的使用,比如redis、MQ等;shell和python等运维编程语言;本人从事IT运维相关的工作有十多年。2008年开始专职从事Linux/Unix系统运维工作;对运维相关技术有一定程度的理解。本公众号所有博文均是我的实际工作经验总结,基本都是原创博文。我很乐意将我积累的经验、心得、技术与大家分享交流!希望和大家在IT运维职业道路上一起成长和进步;

一次rabbitmq故障问题解决记录

猜你喜欢

转载自blog.51cto.com/zgui2000/2413916