由于机器掉电,网络故障等原因,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]#