2016-04-12 200 views
1

我有3個rabbitmq節點的羣集分佈在3臺不同的服務器上。第二個和第三個節點加入第一個節點並形成羣集。在測試故障轉移的過程中,我發現一旦主節點被終止,我無法使其重新加入羣集。該文檔沒有說明我必須在啓動後使用join_cluster或任何其他命令。我嘗試了join_cluster,但由於具有名稱的集羣與節點主機相同,因此它被拒絕。有沒有辦法做到這一點?Rabbitmq主節點重新加入羣集

cluster_status顯示以下(不從主節點):

Cluster status of node '[email protected]<secondary>' ... 
[{nodes,[{disc,['[email protected]<primary>','[email protected]<secondary>', 
       '[email protected]<tertiary>']}]}, 
{running_nodes,['[email protected]<secondary>','[email protected]<tertiary>']}, 
{cluster_name,<<"[email protected]<primary>">>}, 
{partitions,[]}] 

回答

0

甲引自here

已接合到羣集中的節點可以在任何時候停止。 他們也可以崩潰。在這兩種情況下,羣集 的其餘部分繼續不受影響地運行,並且節點在其他羣集節點再次啓動時自動「趕上」 。

所以你只需要啓動你殺死/停止的節點。如果它是「主要的」或不是有效的 - 如果它是主要的,然後被殺死,則其他一些節點成爲主要節點。

我剛剛測試過這個(當然還有docker),並按預期工作。

+0

不適合我。如上面的消息所示。它不顯示主節點正在運行。 – sharman

0

在其上的集羣中的節點中的一個,使用命令

rabbitmqctl forget_cluster_node [email protected] 

爲了使當前簇忘記舊的主。 現在,你應該能夠歸隊的老主(rabbitmq1)集羣

rabbitmqctl stop_app 
rabbitmqctl join_cluster [email protected] 
rabbitmqctl start_app 

reference cluster guide