20.13. HornetQ クラスタリング

HornetQ クラスターは、HornetQ サーバーのグループを作成し、メッセージ処理の負荷を分配するために使用されます。クラスターのアクティブなノードは、独立した HornetQ サーバーとして動作し、独自のメッセージと接続を管理します。
クラスターを形成するため、各ノード (独立した HornetQ サーバー) はサーバー設定ファイル (standalone.xml および domain.xml) で設定パラメーターを使用して他のノードへのクラスター設定を宣言します。
クラスタリングでは、クラスター間でメッセージをブリッジング/ルーティングするためにコアブリッジが使用されます。コアブリッジはソースキューからメッセージを消費し、同じまたは別のクラスターにあるターゲット HornetQ サーバー (ノード) へそれらのメッセージを転送します。
ノードが別のノードとクラスター接続を形成すると、内部にコアブリッジを作成します。各ノードは明示的なコアブリッジを作成するため宣言する必要はありません。これらのクラスター接続によって、異なるクラスターにあるノード間でメッセージが送信されるときにメッセージ処理の負荷が分散されます。
クラスターノードはサーバー設定ファイル (standalone.xml および domain.xml) で設定できます。

重要

サーバー設定ファイル (standalone.xml および domain.xml) でノードを設定し、この設定を別のノードにコピーして対称のクラスターを作成できます。しかし、サーバー設定ファイルをコピーするときに注意する必要があります。HornetQ データ (バインディング、ジャーナル、大きなメッセージのディレクトリーなど) をあるノードから別のノードへコピーしてはなりません。ノードが初めて開始されると、クラスターを適切に形成するために必要となる一意な識別子をジャーナルディレクトリーへ永続化します。

20.13.1. サーバーディスカバリー

サーバーはー「サーバーディスカバリー」と呼ばれるメカニズムを使用して以下を行います。
  • サーバーの接続詳細をメッセージングクライアントへ転送します。メッセージングクライアントは、指定の時点で稼働しているサーバーの特定の詳細を持たずにクラスターのサーバーへ接続しようとします。
  • 他のサーバーへ接続します。クラスターのサーバーは、クラスターにある他のすべてのサーバーに関する特定の詳細を持たずに他のサーバーとクラスター接続を確立しようとします。
サーバーの情報は、通常の HornetQ 接続を介してメッセージングクライアントへ送信され、さらにクラスター接続を介して他のサーバーへ送信されます。
初回の接続を確立する必要があります。UDP (ユーザーデータグラムプロトコル) や JGroups などの動的サーバーディスカバリー技術を使用するか、コネクターのリストを提供して接続を確立します。