2016-04-12 9 views
1

3つの異なるサーバに3つのrabbitmqノードのクラスタが広がっています。第2および第3のノードは第1のノードに結合し、クラスタを形成する。フェールオーバーのテストでは、一度プライマリノードが停止すると、クラスタに再び参加させることができません。このドキュメントでは、起動後に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

から引用。 また、クラッシュすることもOKです。どちらの場合も、クラスタ の残りの部分は影響を受けずに動作を継続し、ノードが再び起動するときに自動的に他のクラスタノードに「追いつきます」 。

だから、あなたが殺した/停止したノードを起動する必要があります。それが「プライマリ」であるかどうかに違いはありません。プライマリであった場合には、他のいくつかのノードがプライマリになります。

私はこれを(ドッカーはもちろんのこと)テストして、期待どおりに動作しています。

クラスター内のノードの1つをオン
+0

が私のためにしませんを参照してください。上記のメッセージのように。プライマリノードは実行中ではありません。 – sharman

0

は、現在のクラスタが古いプライマリを忘れるようにするには、コマンド

rabbitmqctl forget_cluster_node [email protected] 

を使用しています。 は今、あなたは古いプライマリ(rabbitmq1)にクラスタに再結合することができるはず

rabbitmqctl stop_app 
rabbitmqctl join_cluster [email protected] 
rabbitmqctl start_app 

reference cluster guide

関連する問題