16.2.2. UDP ベースの動的検出を使用したブローカークラスターの作成

ブローカーが UDP マルチキャストを使用して動的に相互を検出するブローカークラスターを作成できます。

手順

  1. <broker_instance_dir>/etc/broker.xml 設定ファイルを開きます。
  2. <core> 要素内にコネクターを追加します。

    このコネクターは、他のブローカーがこの接続に使用できる接続情報を定義します。この情報は、検出中にクラスター内の他のブローカーに送信されます。

    <configuration>
        <core>
            ...
            <connectors>
                <connector name="netty-connector">tcp://localhost:61617</connector>
            </connectors>
            ...
        </core>
    </configuration>
  3. 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
    ブロードキャストされる必要がある以前に設定されたクラスターコネクター。
  4. 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 よりも大きな値に設定します。そうしないと、(タイミングで若干の違いを及ぼすため) ブロードキャスト中であってもブローカーが一覧から定期的に消える可能性があります。

  5. クラスター接続を作成し、動的検出を使用するように設定します。

    デフォルトでは、クラスター接続は対称トポロジーのすべてのアドレスに対してメッセージの負荷分散を行います。

    <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
    このブローカーがクラスターの他のメンバーを見つけるために使用する検出グループ。クラスターが動的検出を使用する場合のみ、このプロパティーを設定する必要があります。
  6. クラスター接続の追加プロパティーを設定します。

    これらの追加のクラスター接続プロパティーには、最も一般的なユースケースに適したデフォルト値があります。そのため、デフォルト動作が必要ない場合のみこのプロパティーを設定する必要があります。詳細は、付録C クラスター接続設定要素 を参照してください。

  7. クラスターユーザーおよびパスワードを作成します。

    AMQ Broker にはデフォルトのクラスター認証情報が同梱されていますが、承認されていないリモートクライアントがこれらのデフォルト認証情報を使用してブローカーに接続するのを防ぐため、これらの変更を行う必要があります。

    重要

    クラスターのパスワードは、クラスター内のすべてのブローカーで同じである必要があります。

    <configuration>
        <core>
            ...
            <cluster-user>cluster_user</cluster-user>
            <cluster-password>cluster_user_password</cluster-password>
            ...
        </core>
    </configuration>
  8. 追加のブローカーごとにこの手順を繰り返します。

    クラスター設定を各追加ブローカーにコピーできます。ただし、他の AMQ Broker データファイルはコピーしないでください (バインディング、ジャーナル、大きなメッセージディレクトリーなど)。これらのファイルは、クラスター内のノード間で一意である必要があり、クラスターが適切に形成されません。

関連情報