1. 一次rabbitmq故障问题解决记录
测试环境的rabbitmq集群,因为虚拟化平台故障,导致三台rabbitmq集群节点全部关机。修复虚拟化平台的故障,启动3台rabbitmq集群节点。故障如下:
1. rabbitmq磁盘节点正常;
2. rabbitmq两个内存节点无法启动;报错大体如下:
[[email protected] [email protected]]# service rabbitmq-server start
Starting rabbitmq-server: SUCCESS
rabbitmq-server.
[[email protected] [email protected]]# 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
[[email protected] mnesia]# ll
total 8
drwxr-xr-x 5 root root 4096 Jun 25 16:54 [email protected]
drwxr-xr-x 9 root root 4096 Jun 25 16:53 [email protected]
[[email protected] mnesia]#
# 将两个目录删除掉,这两个目录是元数据信息
# 然后重新启动rabbitmq的服务 service rabbitmq-server start 发现服务已经启动成功
# 服务启动成功之后马上重新加入到rabbitmq的主节点(磁盘节点),会出现以下的报错:
Clustering node [email protected] with [email protected] ...
Error: {inconsistent_cluster,"Node [email protected] thinks it‘s clustered with node [email protected], but [email protected] disagrees"}
# 解决的办法就是在主节点(磁盘节点)上面强制删除两个内存节点的信息
2.2 磁盘节点操作
# 因为我们的master节点属于管理节点,内存节点都需要加入到以磁盘节点为主的集群,首先从磁盘节点删除掉两个内存节点的信息
rabbitmqctl forget_cluster_node [email protected]
rabbitmqctl forget_cluster_node [email protected]
# 在两个内存节点操作
rabbitmqctl stop_app
rabbitmqctl join_cluster --ram [email protected]
abbitmqctl start_app
rabbitmqctl cluster_status
[[email protected] ~]# rabbitmqctl cluster_status
Cluster status of node [email protected] ...
[{nodes,[{disc,[[email protected]]},
{ram,[[email protected],[email protected]]}]},
{running_nodes,[[email protected],[email protected],
[email protected]]},
{cluster_name,<<"[email protected]">>},
{partitions,[]},
{alarms,[{[email protected],[]},
{[email protected],[]},
{[email protected],[]}]}]
[[email protected] ~]#
#删除mnesia这个的目的就是清除集群的元数据信息,然后节点就会独立了,必须重新加入集群才可以。重新加入集群的时候报错的原因是因为master节点上面已经有两个内存节点的信息,需要先删除掉,然后再重新加入到集群,是吧。
还有我发现删除掉mnesia之后,重启rabbitmq服务,这个节点就会有集群信息,但是集群信息里面只有自己一个节点的信息;
博文的更详细内容请关注我的个人微信公众号 “云时代IT运维”,本公众号旨在共享互联网运维新技术,新趋势; 包括IT运维行业的咨询,运维技术文档分享。重点关注devops、jenkins、zabbix监控、kubernetes、ELK、各种中间件的使用,比如redis、MQ等;shell和python等运维编程语言;本人从事IT运维相关的工作有十多年。2008年开始专职从事Linux/Unix系统运维工作;对运维相关技术有一定程度的理解。本公众号所有博文均是我的实际工作经验总结,基本都是原创博文。我很乐意将我积累的经验、心得、技术与大家分享交流!希望和大家在IT运维职业道路上一起成长和进步;
原文地址:https://blog.51cto.com/zgui2000/2413916
时间: 2024-08-21 19:23:43