由於機器掉電,網絡故障等原因,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]#