17.9. メッセージレプリケーション

17.9.1. HornetQ のメッセージレプリケーション

HornetQ は 1 つ以上のサーバーに障害が発生した後も引き続き機能する能力をサポートします。この一部は、ライブサーバーの障害時にクライアント接続がライブサーバーからバックアップサーバーに移行するフェイルオーバーサポートを介して実現されます。バックアップサーバーを最新状態にするため、共有ストアとレプリケーションの 2 つのストラテジーによって、メッセージはライブサーバーからバックアップサーバーへ継続的にレプリケートされます。本項ではレプリケーションストラテジーについて取り上げます。

警告

永続メッセージのみがレプリケートされます。非永続メッセージはフェイルオーバー後に維持されません。
ライブサーバーとバックアップサーバーは同じデータストアを共有しないため、ライブサーバーとバックサーバー間のメッセージレプリケーションはネットワークトラフィックを介して実現されます。2 つのサーバーが同じクラスター内にあり、クラスターユーザー名およびパスワードが同じである場合、2 つのサーバー間ですべてのジャーナルがレプリケートされます。ライブサーバーによって受信されるすべての (永続) データトラフィックはバックアップサーバーへレプリケートされます。
バックアップサーバーがオンラインになると、同期するためにライブサーバーを見つけ、接続します。同期中はバックアップサーバーとして使用できません。同期するデータの量やネットワークの速度によっては、同期化に時間がかかることがあります。
データをレプリケートするライブサーバーをバックアップサーバーが検索する方法は、backup-group-name パラメーターが hornetq-configuration.xml ファイルに定義されているかどうかによって異なります。バックアップサーバーは、同じグループ名を共有するライブサーバーへのみ接続します。このパラメーターが定義されていない場合、バックアップサーバーは任意のライブサーバーに接続しようとします。
ライブサーバーに障害が発生すると、適切に設定され同期されたバックアップサーバーが引き継ぎます。障害が発生したライブサーバーに接続できなくても、クラスター内にある他のサーバーの半分以上に接続できれば、バックアップサーバーは確立されます。クラスター内の他のサーバーが半分以上が応答しない場合は一般的なネットワーク障害と判断され、バックアップサーバーはライブサーバーへの接続を再試行するため待機します。