ドキュメントとRabbitMQ in Actionを読んだら、RabbitMQクラスターの作成は簡単に思えますが、既存のRabbitMQクラスターをアップグレードまたはパッチを適用するには、クラスター全体を再起動する必要があるようです。
クラスタリング、シャベル、フェデレーション、ロードバランシングを組み合わせて、キューやメッセージを失うことなくローリングアップグレードを可能にする方法はありますか?
あなたのrabbitmqクライアントが切断された接続を許容できると仮定すると、あなたは説明されていることを考えることができます ここ 。
私たちのクラスターはVIPの背後にあります。クラスターをアップグレードする場合は、代替クラスターを起動し、VIPを代替クラスターに切り替えます。一方、クラスター間でメッセージを移動するツールがあります。「マスター」クラスターの場合更新が完了したら、プロセスを逆にします。
RabbitMQのメジャーバージョンまたはマイナーバージョンから別のバージョン(3.0.xから3.1.x、または2.xxから3.xx)にアップグレードする場合、またはErlangをアップグレードする場合は、アップグレードのためにクラスター全体を停止する必要があります(クラスターはこのような混合バージョンを実行できないため)。これは、あるパッチバージョンから別のパッチバージョンにアップグレードする場合(つまり、3.0.xから3.0.yに)には当てはまりません。これらのバージョンはクラスター内で混在させることができます(ただし、3.0.0は3.0.xシリーズのそれ以降のバージョンと混在させることはできません)。