14.2. ブローカークラスターの作成
クラスターに参加する各ブローカーにクラスター接続を設定して、ブローカークラスターを作成します。クラスター接続は、ブローカーが他のブローカーに接続する方法を定義します。
静的検出または動的検出を使用するブローカークラスターを作成できます ( UDP マルチキャストまたは JGroups のいずれか )。
前提条件
ブローカークラスターのサイズを決定する必要があります。
詳細は、「クラスターのサイジングに関する考慮事項」 を参照してください。
14.2.1. 静的検出を使用したブローカークラスターの作成
ブローカーの静的リストを指定して、ブローカークラスターを作成できます。ネットワーク上で UDP マルチキャストまたは JGroups を使用できない場合は、この静的検出メソッドを使用します。
手順
-
<broker_instance_dir>/etc/broker.xml
設定ファイルを開きます。 <core>
要素内に以下のコネクターを追加します。- 他のブローカーがこのブローカーに接続する方法を定義するコネクター。
- このブローカーがクラスター内の他のブローカーに接続する方法を定義する 1 つ以上のコネクター。
<configuration> <core> ... <connectors> <connector name="netty-connector">tcp://localhost:61617</connector> 1 <connector name="broker2">tcp://localhost:61618</connector> 2 <connector name="broker3">tcp://localhost:61619</connector> </connectors> ... </core> </configuration>
コネクターの詳細は、「コネクターについて」 を参照してください。
クラスター接続を追加し、静的検出を使用するように設定します。
デフォルトでは、クラスター接続は対称トポロジーのすべてのアドレスに対してメッセージの負荷分散を行います。
<configuration> <core> ... <cluster-connections> <cluster-connection name="my-cluster"> <connector-ref>netty-connector</connector-ref> <static-connectors> <connector-ref>broker2-connector</connector-ref> <connector-ref>broker3-connector</connector-ref> </static-connectors> </cluster-connection> </cluster-connections> ... </core> </configuration>
cluster-connection
-
name
属性を使用してクラスター接続の名前を指定します。 connector-ref
- 他のブローカーがこのブローカーに接続する方法を定義するコネクター。
static-connectors
- このブローカーがクラスター内の別のブローカーへの最初の接続を確立するために使用できる 1 つ以上のコネクター。この最初の接続を行った後、ブローカーはクラスター内の他のブローカーを検出します。クラスターが静的検出を使用する場合のみ、このプロパティーを設定する必要があります。
クラスター接続の追加プロパティーを設定します。
これらの追加のクラスター接続プロパティーには、最も一般的なユースケースに適したデフォルト値があります。そのため、デフォルト動作が必要ない場合のみこのプロパティーを設定する必要があります。詳細は、付録C クラスター接続設定要素 を参照してください。
クラスターユーザーおよびパスワードを作成します。
AMQ Broker にはデフォルトのクラスター認証情報が同梱されていますが、承認されていないリモートクライアントがこれらのデフォルト認証情報を使用してブローカーに接続するのを防ぐため、これらの変更を行う必要があります。
重要クラスターのパスワードは、クラスター内のすべてのブローカーで同じである必要があります。
<configuration> <core> ... <cluster-user>cluster_user</cluster-user> <cluster-password>cluster_user_password</cluster-password> ... </core> </configuration>
追加のブローカーごとにこの手順を繰り返します。
クラスター設定を各追加ブローカーにコピーできます。ただし、他の AMQ Broker データファイルはコピーしないでください (バインディング、ジャーナル、大きなメッセージディレクトリーなど)。これらのファイルは、クラスター内のノード間で一意である必要があり、クラスターが適切に形成されません。
関連情報
-
静的検出を使用するブローカークラスターの例は、
clustered-static-discovery
の例 を参照してください。
14.2.2. UDP ベースの動的検出を使用したブローカークラスターの作成
ブローカーが UDP マルチキャストを使用して動的に相互を検出するブローカークラスターを作成できます。
手順
-
<broker_instance_dir>/etc/broker.xml
設定ファイルを開きます。 <core>
要素内にコネクターを追加します。このコネクターは、他のブローカーがこの接続に使用できる接続情報を定義します。この情報は、検出中にクラスター内の他のブローカーに送信されます。
<configuration> <core> ... <connectors> <connector name="netty-connector">tcp://localhost:61617</connector> </connectors> ... </core> </configuration>
UDP ブロードキャストグループを追加します。
ブロードキャストグループにより、ブローカーはクラスター接続に関する情報をクラスター内の他のブローカーにプッシュできます。このブロードキャストグループは UDP を使用して接続設定をブロードキャストします。
<configuration> <core> ... <broadcast-groups> <broadcast-group name="my-broadcast-group"> <local-bind-address>172.16.9.3</local-bind-address> <local-bind-port>-1</local-bind-port> <group-address>231.7.7.7</group-address> <group-port>9876</group-port> <broadcast-period>2000</broadcast-period> <connector-ref>netty-connector</connector-ref> </broadcast-group> </broadcast-groups> ... </core> </configuration>
特に指示がない限り、以下のパラメーターが必要です。
broadcast-group
-
name
属性を使用してブロードキャストグループの一意の名前を指定します。 local-bind-address
- UDP ソケットがバインドされるアドレス。ブローカーに複数のネットワークインターフェイスがある場合は、ブロードキャストに使用するインターフェイスを指定する必要があります。このプロパティーが指定されていない場合、ソケットはオペレーティングシステムによって選択される IP アドレスにバインドされます。これは UDP 固有の属性です。
local-bind-port
-
データグラムソケットがバインドされるポート。ほとんどの場合、匿名ポートを指定するデフォルト値の
-1
を使用します。このパラメーターは、local-bind-address
との接続で使用されます。これは UDP 固有の属性です。 group-address
-
データがブロードキャストされるマルチキャストアドレス。これは、
224.0.0.0
-239.255.255.255
の範囲のクラス D IP アドレスです。アドレス224.0.0.0
は予約されており、使用することはできません。これは UDP 固有の属性です。 group-port
- ブロードキャストに使用される UDP ポート番号。これは UDP 固有の属性です。
broadcast-period
( オプション )- 連続するブロードキャストの間隔 ( ミリ秒単位 )。デフォルト値は 2000 ミリ秒です。
connector-ref
- ブロードキャストされる必要がある以前に設定されたクラスターコネクター。
UDP 検出グループを追加します。
検出グループは、このブローカーが他のブローカーからコネクター情報を受け取る方法を定義します。ブローカーはコネクターのリストを維持します (各ブローカーに 1 エントリー)。ブローカーからブロードキャストを受信すると、そのエントリーが更新されます。期間のブローカーからブロードキャストを受信しない場合は、エントリーを削除します。
この検出グループは UDP を使用してクラスター内のブローカーを検出します。
<configuration> <core> ... <discovery-groups> <discovery-group name="my-discovery-group"> <local-bind-address>172.16.9.7</local-bind-address> <group-address>231.7.7.7</group-address> <group-port>9876</group-port> <refresh-timeout>10000</refresh-timeout> </discovery-group> <discovery-groups> ... </core> </configuration>
特に指示がない限り、以下のパラメーターが必要です。
discovery-group
-
name
属性を使用して検出グループの一意の名前を指定します。 local-bind-address
( オプション )- ブローカーが稼働しているマシンが複数のネットワークインターフェイスを使用する場合は、ディスカバリーグループがリッスンするネットワークインターフェイスを指定できます。これは UDP 固有の属性です。
group-address
-
リッスンするグループのマルチキャストアドレス。リッスンするブロードキャストグループの
group-address
と一致する必要があります。これは UDP 固有の属性です。 group-port
-
マルチキャストグループの UDP ポート番号。リッスンするブロードキャストグループの
group-port
と一致する必要があります。これは UDP 固有の属性です。 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 データファイルはコピーしないでください (バインディング、ジャーナル、大きなメッセージディレクトリーなど)。これらのファイルは、クラスター内のノード間で一意である必要があり、クラスターが適切に形成されません。
関連情報
-
UDP による動的検出を使用するブローカークラスター設定の例は、
clustered-queue
の例 を参照してください。
14.2.3. JGroups ベースの動的検出を使用したブローカークラスターの作成
すでに JGroups をお使いの環境で使用している場合は、これを使用して、ブローカーが相互に動的に検出するブローカークラスターを作成できます。
前提条件
JGroups がインストールされ、設定されている必要があります。
JGroups 設定ファイルの例は、
clustered-jgroups
の例 を参照してください。
手順
-
<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 の例 を参照してください。