16.2.3. JGroups ベースの動的検出を使用したブローカークラスターの作成
すでに JGroups をお使いの環境で使用している場合は、これを使用して、ブローカーが相互に動的に検出するブローカークラスターを作成できます。
前提条件
JGroups がインストールされ、設定されている必要があります。
JGroups 設定ファイルの例は、
clustered-jgroups
AMQ Broker example program を参照してください。
手順
-
<broker_instance_dir>/etc/broker.xml
設定ファイルを開きます。 <core>
要素内にコネクターを追加します。このコネクターは、他のブローカーがこの接続に使用できる接続情報を定義します。この情報は、検出中にクラスター内の他のブローカーに送信されます。
<configuration> <core> ... <connectors> <connector name="netty-connector">tcp://localhost:61617</connector> </connectors> ... </core> </configuration>
<core>
要素内に JGroups ブロードキャストグループを追加します。ブロードキャストグループにより、ブローカーはクラスター接続に関する情報をクラスター内の他のブローカーにプッシュできます。このブロードキャストグループは JGroups を使用して接続設定をブロードキャストします。
<configuration> <core> ... <broadcast-groups> <broadcast-group name="my-broadcast-group"> <jgroups-file>test-jgroups-file_ping.xml</jgroups-file> <jgroups-channel>activemq_broadcast_channel</jgroups-channel> <broadcast-period>2000</broadcast-period> <connector-ref>netty-connector</connector-ref> </broadcast-group> </broadcast-groups> ... </core> </configuration>
特に指示がない限り、以下のパラメーターが必要です。
broadcast-group
-
name
属性を使用してブロードキャストグループの一意の名前を指定します。 jgroups-file
- JGroups チャネルを初期化する JGroups 設定ファイルの名前。ブローカーが読み込めるように、このファイルは Java リソースパスにある必要があります。
jgroups-channel
- ブロードキャストするために接続する JGroups チャネルの名前。
broadcast-period
( オプション )- 連続するブロードキャストの間隔 ( ミリ秒単位 )。デフォルト値は 2000 ミリ秒です。
connector-ref
- ブロードキャストされる必要がある以前に設定されたクラスターコネクター。
JGroups 検出グループを追加します。
検出グループは、コネクター情報を受け取る方法を定義します。ブローカーはコネクターのリストを維持します (各ブローカーに 1 エントリー)。ブローカーからブロードキャストを受信すると、そのエントリーが更新されます。期間のブローカーからブロードキャストを受信しない場合は、エントリーを削除します。
この検出グループは JGroups を使用してクラスター内のブローカーを検出します。
<configuration> <core> ... <discovery-groups> <discovery-group name="my-discovery-group"> <jgroups-file>test-jgroups-file_ping.xml</jgroups-file> <jgroups-channel>activemq_broadcast_channel</jgroups-channel> <refresh-timeout>10000</refresh-timeout> </discovery-group> <discovery-groups> ... </core> </configuration>
特に指示がない限り、以下のパラメーターが必要です。
discovery-group
-
name
属性を使用して検出グループの一意の名前を指定します。 jgroups-file
- JGroups チャネルを初期化する JGroups 設定ファイルの名前。ブローカーが読み込めるように、このファイルは Java リソースパスにある必要があります。
jgroups-channel
- ブロードキャストを受信するために接続する JGroups チャネルの名前。
refresh-timeout
( オプション )特定のブローカーから最後のブロードキャストを受信した後、そのブローカーのコネクターペアエントリーをリストから削除するまで、ディスカバリーグループが待機する時間 (ミリ秒単位)。デフォルトは 10000 ミリ秒 (10 秒) です。
この値は、ブロードキャストグループの
broadcast-period
よりも大きな値に設定します。そうしないと、(タイミングで若干の違いを及ぼすため) ブロードキャスト中であってもブローカーが一覧から定期的に消える可能性があります。
クラスター接続を作成し、動的検出を使用するように設定します。
デフォルトでは、クラスター接続は対称トポロジーのすべてのアドレスに対してメッセージの負荷分散を行います。
<configuration> <core> ... <cluster-connections> <cluster-connection name="my-cluster"> <connector-ref>netty-connector</connector-ref> <discovery-group-ref discovery-group-name="my-discovery-group"/> </cluster-connection> </cluster-connections> ... </core> </configuration>
cluster-connection
-
name
属性を使用してクラスター接続の名前を指定します。 connector-ref
- 他のブローカーがこのブローカーに接続する方法を定義するコネクター。
discovery-group-ref
- このブローカーがクラスターの他のメンバーを見つけるために使用する検出グループ。クラスターが動的検出を使用する場合のみ、このプロパティーを設定する必要があります。
クラスター接続の追加プロパティーを設定します。
これらの追加のクラスター接続プロパティーには、最も一般的なユースケースに適したデフォルト値があります。そのため、デフォルト動作が必要ない場合のみこのプロパティーを設定する必要があります。詳細は、付録C クラスター接続設定要素 を参照してください。
クラスターユーザーおよびパスワードを作成します。
AMQ Broker にはデフォルトのクラスター認証情報が同梱されていますが、承認されていないリモートクライアントがこれらのデフォルト認証情報を使用してブローカーに接続するのを防ぐため、これらの変更を行う必要があります。
重要クラスターのパスワードは、クラスター内のすべてのブローカーで同じである必要があります。
<configuration> <core> ... <cluster-user>cluster_user</cluster-user> <cluster-password>cluster_user_password</cluster-password> ... </core> </configuration>
追加のブローカーごとにこの手順を繰り返します。
クラスター設定を各追加ブローカーにコピーできます。ただし、他の AMQ Broker データファイルはコピーしないでください (バインディング、ジャーナル、大きなメッセージディレクトリーなど)。これらのファイルは、クラスター内のノード間で一意である必要があり、クラスターが適切に形成されません。
関連情報
-
JGroups で動的検出を使用するブローカークラスターの例は、
clustered-jgroups
AMQ Broker example program を参照してください。