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 はそのプレフィックス値で始まる名前のバケットを検索します。 | いいえ |