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]# 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM