3つのノード(rabbit1、rabbit2、rabbit3)を持つRabbitMQクラスタをセットアップしました。これらはそれぞれドッカーコンテナで実行されています。RabbitMQクラスタで新しいマスターが選択されない
すべてのキューは3つのノード間でミラーリングされ、rabbit1はマスターです。私がウサギ2またはウサギ3の容器を止めると、残っている2つのノードは正常に動作します。キューに3つのメッセージがある場合、これらはまだウサギ1に存在し、他のノードはまだ上に存在しています。
しかし、私がウサギ1を停止すると、ウサギ2とウサギ3の待ち行列は、ウサギ1が再び始まるまで空になります。 rabbit2またはrabbit3にメッセージを送信すると、メッセージは受信されますがキューには保存されません。一方、ウサギ1がアップして、ウサギ2 /ウサギ3に何かを送ると、メッセージは保存され、正しく同期されます。
マスターがシャットダウンされたときにメッセージがスレーブから空にならないようにするために必要な方法や設定がありますか?スレーブが代わりに新しいマスターを選ぶか、少なくともメッセージを保存しますか? ありがとうございます。
私は明確にすべきです:すべてのノート間でメッセージを複製し、自動的に同期させるための正しいポリシーを設定しました。だから私はなぜそれがうまくいかないのか混乱しているのです。私のポリシーは以下の通りです:rabbitmqctl set_policy ha-all "^ ha \"。 – KaffeeKaethe
したがって、このように「ミラー化されたキューのマスターを含むRabbitMQノードを停止した場合は、他のノードの一部のスレーブがマスターに昇格されます。 "それはうまくいくはずです – KaffeeKaethe
あなたのキューの名前は何ですか? –