RabbitMQ集群出现过机器故障,网络异常等故障后,重启无法重新建立集群的终极解决方案

由于机器掉电,网络故障等原因,RabbitMQ整个集群出现问题。重启RabbitMQ时,发现某些机器始终无法重新加入到集群中,而且还可能出现网络分区。

针对不同情况,可能选择 rabbitmqctl forget_cluster_node {nodename}等等解决方案。

如果错误还是始终无法解决,我们可以选择极端方案,重新搭建集群。

重新搭建集群,最关键的一步是清除历史数据。

举例如下:

现在局域网有三台机器

192.168.1.111 rabbit@www111

192.168.1.112 rabbit@www112

192.168.1.113 rabbit@www113

由于各种原因,现在这三台机器安装组建集群的方案搭建集群,发现始终无法成功,至多只能有两台机器可以组建集群。

这时,可以查看各个节点的mnesia目录下的cluster_nodes.config文件内容。

以rabbit@www112举例,我们发现集群节点信息不正确

[root@www112 rabbit@www112]# cat cluster_nodes.config 
{[rabbit@www112,rabbit@www111,rabbit@www113],[rabbit@www111,rabbit@www112]}.

正确的集群信息如下:

[root@www111 rabbit@www111]# cat cluster_nodes.config 
{[rabbit@www111,rabbit@www112,rabbit@www113],[rabbit@www111,rabbit@www112,rabbit@www113]}.

解决方案:关闭集群中所有节点,在mnesia目录下执行 rm -rf *  清空所有数据,重新建立集群。

举例如下:

[root@www112 rabbit@www112]# ls
cluster_nodes.config  msg_store_persistent       rabbit_durable_exchange.DCD  rabbit_durable_route.DCD       rabbit_user.DCD             recovery.dets
DECISION_TAB.LOG      msg_store_transient        rabbit_durable_queue.DCD     rabbit_runtime_parameters.DCD  rabbit_user_permission.DCD  schema.DAT
LATEST.LOG            nodes_running_at_shutdown  rabbit_durable_queue.DCL     rabbit_serial                  rabbit_vhost.DCD            schema_version
[root@www112 rabbit@www112]# cat cluster_nodes.config 
{[rabbit@www112,rabbit@www111,rabbit@www113],[rabbit@www111,rabbit@www112]}.
[root@www112 rabbit@www112]# cd ..
[root@www112 mnesia]# rm -rf *
[root@www112 mnesia]# ls
[root@www112 mnesia]# 

猜你喜欢

转载自www.cnblogs.com/dairongsheng/p/9326559.html
今日推荐