26.2. JGroups の設定 (ライブラリーモード)

Red Hat JBoss Data Grid がクラスターモードで動作するには、適切な JGroups 設定が必要になります。

例26.5 JGroups プログラム可能設定

GlobalConfiguration gc = new GlobalConfigurationBuilder()
  .transport()
  .defaultTransport()
  .addProperty("configurationFile","jgroups.xml")
  .build();

例26.6 JGroups XML 設定

<infinispan>
  <global>
    <transport>
      <properties>
        <property name="configurationFile" value="jgroups.xml" />
      </properties>
    </transport>
  </global>
  <!-- Additional configuration elements here -->
</infinispan>
プログラムによる設定か、または XML 設定のいずれの場合でも、JBoss Data Grid はクラスパスに見つからない場合は絶対パス名を検索する前にクラスパスの jgroups.xml を検索します。

26.2.1. JGroups トランスポートプロトコル

トランスポートプロトコルは、プロトコルスタックの底辺にあるプロトコルです。トランスポートプロトコルは、ネットワークとのメッセージの送受信を行います。
Red Hat JBoss Data Grid には、UDP と TCP トランスポートプロトコルの両方が同梱されています。

26.2.1.1. UDP トランスポートプロトコル

UDP は、以下を使用するトランスポートプロトコルです。
  • クラスターのすべてのメンバーにメッセージを送信する IP マルチキャスト。
  • 単一メンバーに送信されるユニキャストメッセージの UDP データグラム。
UDP トランスポートが開始されると、ユニキャストソケットとマルチキャストソケットが開きます。ユニキャストソケットは、ユニキャストメッセージの送受信に使用され、マルチキャストソケットは、マルチキャストソケットの送受信を行います。チャネルの物理アドレスは、ユニキャストソケットのアドレスおよびポート番号と同じです。

26.2.1.2. TCP トランスポートプロトコル

TCP/IP は、IP マルチキャストが使用できなくなる状況で使用できる UDP の代替トランスポートです。このような状況には、ルーターが IP マルチキャストパケットを破棄する可能性のある WAN 上の操作が実行される場合などが含まれます。
TCP は、ユニキャストおよびマルチキャストメッセージを送信するために使用されるトランスポートプロトコルです。
  • マルチキャストメッセージを送信する場合に、TCP は複数のユニキャストメッセージを送信します。
  • TCP を使用する場合に、すべてのクラスターメンバーに対するそれぞれのメッセージが複数のユニキャストメッセージとして送信されるか、または各メンバーに対して 1 つのメッセージが送信されます。
IP マルチキャストは初期メンバーを検出するために使用することができないため、初期メンバーを見つけるには別のメカニズムを使用する必要があります。
Red Hat JBoss Data Grid の Hot Rod はカスタム TCP クライアント/サーバープロトコルです。

26.2.1.3. TCPPing プロトコルの使用

一部のネットワークでは、TCP のみを使用できます。事前に設定された default-configs/default-jgroups-tcp.xml には MPING プロトコルが含まれ、検出に UDP マルチキャストが使用されます。UDP マルチキャストが利用できない場合は、MPING プロトコルを別のメカニズムで置き換える必要があります。推奨される別の方法は、TCPPING プロトコルを使用することです。TCPPING 設定には、ノード検出のために接続される IP アドレスの静的なリストが含まれます。

例26.7 JGroups サブシステムが TCPPING を使用するよう設定する

<TCP bind_port="7800" />
<TCPPING initial_hosts="${jgroups.tcpping.initial_hosts:HostA[7800],HostB[7801]}"
         port_range="1" />

26.2.2. 事前設定された JGroups ファイル

Red Hat JBoss Data Grid では、事前設定された複数の JGroups ファイルが infinispan-embedded.jar にパッケージ化され、デフォルトでクラスパス上にて使用可能です。これらのファイルの 1 つを使用するには、jgroups.xml を使用する代わりにこれらのいずれかのファイルの名前を指定します。
JBoss Data Grid に含まれる JGroups 設定ファイルは、プロジェクトの基礎として使用することを目的としています。通常 JGroups では、ネットワークのパフォーマンスを最適化するのに細かな調整が必要となります。
利用可能な設定は以下のとおりです。
  • default-configs/default-jgroups-udp.xml
  • default-configs/default-jgroups-tcp.xml
  • default-configs/default-jgroups-ec2.xml

26.2.2.1. default-jgroups-udp.xml

default-configs/default-jgroups-udp.xml ファイルは、Red Hat JBoss Data Grid の事前設定済み JGroups 設定です。default-jgroups-udp.xml 設定には、以下のことが該当します。
  • UDP をトランスポートとして使用し、UDP マルチキャストをディスカバリーに使用します。
  • 大型のクラスター (9 以上のノード) に適しています。
  • インバリデーションまたはレプリケーションモードを使用する場合に適しています。
起動時に特定のシステムプロパティーを JVM に追加すると、一部の設定の挙動を変更することが可能です。変更可能な設定は以下の表のとおりです。

表26.1 default-jgroups-udp.xml システムプロパティー

システムプロパティー 説明 デフォルト 必要性
jgroups.udp.mcast_addr マルチキャスト (通信とディスカバリーの両方) に使用する IP アドレス。IP マルチキャストに適した有効なクラス D IPアドレスでなければなりません。 228.6.7.8 いいえ
jgroups.udp.mcast_port マルチキャストに使用するポート。 46655 いいえ
jgroups.udp.ip_ttl IP マルチキャストパケットの TTL (有効期間) を指定します。この値は、パケットがドロップされる前に許可されるネットワークホップの数になります。 2 いいえ

26.2.2.2. default-jgroups-tcp.xml

default-configs/default-jgroups-tcp.xml ファイルは、Red Hat JBoss Data Grid の事前設定済み JGroups 設定です。default-jgroups-tcp.xml 設定には、以下のことが該当します。
  • TCP をトランスポートとして使用し、UDP マルチキャストをディスカバリーに使用します。
  • 通常は、マルチキャスト UDP がオプションではない場合にのみ使用されます。
  • 8 つ以上のノードから構成されるクラスターの場合、TCP は UDP ほどパフォーマンスがよくありません。4 つ以下のノードで構成されるクラスターの場合、UDP と TCP のパフォーマンスはほとんど同じレベルになります。
他の事前設定された JGroups ファイルと同様に、起動時に特定のシステムプロパティーを JVM に追加すると一部の設定の挙動を変更することが可能です。変更可能な設定は以下の表のとおりです。

表26.2 default-jgroups-tcp.xml システムプロパティー

システムプロパティー 説明 デフォルト 必要性
jgroups.tcp.address TCP トランスポートに使用する IP アドレス。 127.0.0.1 いいえ
jgroups.tcp.port TCP ソケットに使用するポート。 7800 いいえ
jgroups.udp.mcast_addr マルチキャスト (ディスカバリー) に使用する IP アドレス。IP マルチキャストに適した有効なクラス D IP アドレスでなければなりません。 228.6.7.8 いいえ
jgroups.udp.mcast_port マルチキャストに使用するポート。 46655 いいえ
jgroups.udp.ip_ttl IP マルチキャストパケットの TTL (有効期間) を指定します。この値は、パケットがドロップされる前に許可されるネットワークホップの数になります。 2 いいえ

26.2.2.3. default-jgroups-ec2.xml

default-configs/default-jgroups-ec2.xml ファイルは、Red Hat JBoss Data Grid の事前設定済み JGroups 設定です。default-jgroups-ec2.xml 設定には、以下のことが該当します。
  • TCP をトランスポートとして使用し、ディスカバリーに S3_PING を使用します。
  • UDP マルチキャストが使用できない Amazon EC2 ノードに適しています。
他の事前設定された JGroups ファイルと同様に、起動時に特定のシステムプロパティーを JVM に追加すると一部の設定の挙動を変更することが可能です。変更可能な設定は以下の表のとおりです。

表26.3 default-jgroups-ec2.xml システムプロパティー

システムプロパティー 説明 デフォルト 必要性
jgroups.tcp.address TCP トランスポートに使用する IP アドレス。 127.0.0.1 いいえ
jgroups.tcp.port TCP ソケットに使用するポート。 7800 いいえ
jgroups.s3.access_key S3 バケットのアクセスに使用される Amazon S3 アクセスキー。 はい
jgroups.s3.secret_access_key S3 バケットのアクセスに使用される Amazon S3 の秘密キー。 はい
jgroups.s3.bucket 使用する Amazon S3 バケットの名前。一意の名前で、すでに存在している必要があります。 はい
jgroups.s3.pre_signed_delete_url DELETE 操作に使用する事前署名付き URL。 はい
jgroups.s3.pre_signed_put_url PUT 操作に使用する事前署名付き URL。 はい
jgroups.s3.prefix 設定された場合、S3_PING はそのプレフィックス値で始まる名前のバケットを検索します。 いいえ