36.2. サーバー検出

サーバー検出はサーバーが接続詳細を以下のものに伝播できるメカニズムです。
  • メッセージングクライアント。メッセージングクライアントは、ある時点で稼動しているクラスター内のサーバーを認識せずにクラスターのサーバーに接続できます。
  • 他のサーバー。クラスター内のサーバーは、クラスター内の他のすべてのサーバーについて事前に認識せずにお互いのクラスター接続を作成できます。
サーバー検出は User Datagram Protocol (UDP) マルチキャストを使用してサーバー接続設定をブロードキャストします。UDP がネットワークで無効な場合は、これを使用することはできず、クラスターの設定時やメッセージングクライアントの使用時にサーバーを明示的に指定する必要があります。

36.2.1. ブロードキャストグループ

ブロードキャストグループは、サーバーがネットワーク上に接続をブロードキャストする手段です。コネクターはクライアント (または他のサーバー) がサーバーとの接続を確立する方法を定義します。コネクターの詳細については、14章トランスポートの設定 を参照してください。
ブロードキャストグループは一連のコネクターペアを取得し、各コネクターペアにはライブの (オプション) のバックアップサーバーの接続設定が含まれ、ネットワークに接続設定がブロードキャストされます。また、UDP アドレスとポートの設定も定義されます。
ブロードキャストグループは、JBOSS_DIST/jboss-as/server/PROFILE/deploy/hornetq/hornetq-configuration.xml で定義されます。1 つの HornetQ サーバーに対して多くのブロードキャストグループが存在することがあります。すべてのブロードキャストグループは、broadcast-groups 要素で定義する必要があります。
JBOSS_DIST/jboss-as/server/PROFILE/deploy/hornetq/hornetq-configuration.xml のブロードキャストグループの例を見てみましょう。
<broadcast-groups>
   <broadcast-group name="my-broadcast-group">
      <local-bind-address>172.16.9.3</local-bind-address>
      <local-bind-port>5432</local-bind-port>
      <group-address>231.7.7.7</group-address>
      <group-port>9876</group-port>
      <broadcast-period>2000</broadcast-period>
      <connector-ref connector-name="netty" 
        backup-connector-name="backup-connector"/>
   </broadcast-group>
</broadcast-groups>
ブロードキャストグループパラメータの一部はオプションであり、通常デフォルト値が使用されますが、わかりやすくするために上記の例ではすべてが指定されています。それぞれについては以下で説明します。

ブロードキャストグループパラメータ

name
サーバー内の各ブロードキャストグループは、サーバーで一意の名前を持つ必要があります。
local-bind-address
これは、データグラムソケットがバインドされるローカルバインドアドレスです。サーバーに複数のネットワークインターフェースがある場合は、このプロパティを設定してブロードキャストに使用するものを指定します。このプロパティが指定されない場合は、ソケットがワイルドカードアドレスとカーネルにより選択された IP アドレスにバインドされます。
local-bind-port
データグラムソケットがバインドされるローカルポートを指定する場合は、ここで指定できます。通常は、匿名ポートを使用することを示すデフォルト値 -1 を使用します。このパラメータは、常に local-bind-address とともに指定されます。
group-address
これは、データをブロードキャストするマルチキャストアドレスであり、範囲が 224.0.0.0239.255.255.255 のクラス D IP アドレスです。アドレス 224.0.0.0 は予約されており、使用できません。このパラメータは必須です。
group-port
これはブロードキャストに使用される UDP ポート番号です。このパラメータは必須です。
broadcast-period
これは、連続するブロードキャスト間の時間 (ミリ秒単位) です。このパラメータはオプションであり、デフォルト値は 2000 ミリ秒です。
connector-ref
これは、ブロードキャストするコネクターとオプションのバックアップコネクターを指定します (コネクターの詳細については、14章トランスポートの設定 を参照してください)。ブロードキャストするコネクターは connector-name 属性により指定され、ブロードキャストするバックアップコネクターは backup-connector 属性によって指定されます。backup-connector 属性はオプションです。