29.2. データセンター間レプリケーションの設定
29.2.1. データセンター間レプリケーションの設定 (リモートクライアントサーバーモード)
Red Hat JBoss Data Grid のリモートクライアントサーバーモードでは、データセンター間のレプリケーションは次のようにセットアップされます。
手順29.1 データセンター間のレプリケーションのセットアップ
RELAY のセットアップ
RELAY
をセットアップするには、以下の設定をstandalone.xml
ファイルに追加します。<subsystem xmlns="urn:jboss:domain:jgroups:1.2" default-stack="udp"> <stack name="udp"> <transport type="UDP" socket-binding="jgroups-udp"/> <!-- Additional configuration elements here --> <relay site="LON"> <remote-site name="NYC" stack="tcp" cluster="global"/> <remote-site name="SFO" stack="tcp" cluster="global"/> <property name="relay_multicasts">false</property> </relay> </stack> </subsystem>
RELAY
プロトコルは、リモートサイトと通信するために追加のスタック (既存のTCP
スタックと並行して実行される) を作成します。TCP
ベースのスタックがローカルクラスターに使用される場合、2 つのTCP
ベースのスタック設定が必要になります。1 つはローカル通信用で、もう 1 つはリモートサイトへの接続用になります。さらに詳しい説明は、「データセンター間レプリケーションの操作」を参照してください。サイトのセットアップ
クラスター内のそれぞれの分散キャッシュに対してサイトをセットアップするには、standalone.xml
ファイルで以下の設定を使用します。<distributed-cache> <!-- Additional configuration elements here --> <backups> <backup site="{FIRSTSITENAME}" strategy="{SYNC/ASYNC}" /> <backup site="{SECONDSITENAME}" strategy="{SYNC/ASYNC}" /> </backups> </distributed-cache>
ローカルサイトトランスポートの設定
トランスポートを設定するには、transport
要素にローカルサイトの名前を追加します。<transport executor="infinispan-transport" lock-timeout="60000" cluster="LON" stack="udp"/>
29.2.2. データセンター間レプリケーション (ライブラリーモード) の設定
29.2.2.1. データセンター間レプリケーションを宣言的に設定する
データセンター間のレプリケーションを設定する際、
relay.RELAY2
プロトコルは、リモートサイトと通信するために追加のスタック (既存の TCP
スタックと並行して実行される) を作成します。TCP
ベースのスタックがローカルクラスターに使用される場合、2 つの TCP
ベースのスタック設定が必要になります。1 つはローカル通信用で、もう 1 つはリモートサイトへの接続用です。
JBoss Data Grid のライブラリーモードでは、データセンター間のレプリケーションは次のようにセットアップされます。
手順29.2 データセンター間のレプリケーションのセットアップ
ローカルサイトを設定します。
<infinispan> <global> <site local="SFO" /> <transport clusterName="default"> <properties> <property name="configurationFile" value="jgroups-with-relay.xml"/> </properties> </transport> <!-- Additional configuration information here --> </global> <!-- Additional configuration information here --> <namedCache name="lonBackup"> <sites> <backupFor remoteSite="LON" remoteCache="lon" /> </sites> </namedCache> </infinispan>
site
要素をglobal
要素に追加してローカルサイト (この例では、ローカルサイトの名前はLON
です) を追加します。- サイト間のレプリケーションには、デフォルト以外の JGroups 設定が必要です。
transport
要素を追加し、設定ファイルへのパスをconfigurationFile
プロパティーとしてセットアップします。この例では、JGroups 設定ファイルの名前はjgroups-with-relay.xml
です。 NYC
およびSFO
サイトにバックアップするには、LON
サイトでキャッシュを設定します。- バックアップキャッシュを設定します。
LON
からバックアップデータを取得するには、NYC
サイトでキャッシュを設定します。LON
からバックアップデータを取得するには、SFO
サイトでキャッシュを設定します。
設定ファイルの内容を追加します。
デフォルトでは、Red Hat JBoss Data Grid にはinfinispan-embedded-{VERSION}.jar
パッケージ内のdefault-configs/default-jgroups-tcp.xml
やdefault-configs/default-jgroups-udp.xml
などの JGroups 設定ファイルが含まれます。JGroups 設定を新規ファイル (この例では、ファイル名はjgroups-with-relay.xml
) にコピーし、指定される設定情報をこのファイルに追加します。relay.RELAY2
プロトコル設定は、設定スタックの最新のプロトコルである必要があります。<config> ... <relay.RELAY2 site="LON" config="relay.xml" relay_multicasts="false" /> </config>
relay.xml ファイルを設定します。
relay.xml
ファイルでrelay.RELAY2
設定をセットアップします。このファイルは、グローバルクラスター設定について説明するものです。<RelayConfiguration> <sites> <site name="LON" id="0"> <bridges> <bridge config="jgroups-global.xml" name="global"/> </bridges> </site> <site name="NYC" id="1"> <bridges> <bridge config="jgroups-global.xml" name="global"/> </bridges> </site> <site name="SFO" id="2"> <bridges> <bridge config="jgroups-global.xml" name="global"/> </bridges> </site> </sites> </RelayConfiguration>
グローバルクラスターを設定します。
relay.xml
で参照されるファイルjgroups-global.xml
には、グローバルクラスター、つまりサイト間の通信で使用される別の JGroups 設定が含まれます。グローバルクラスター設定は、通常はTCP
ベースであり、TCPPING
プロトコル (PING
またはMPING
ではない) を使用してメンバーを検出します。default-configs/default-jgroups-tcp.xml
の内容をjgroups-global.xml
にコピーし、TCPPING
を設定するために以下の設定を追加します。<config> <TCP bind_port="7800" ... /> <TCPPING initial_hosts="lon.hostname[7800],nyc.hostname[7800],sfo.hostname[7800]" ergonomics="false" /> <!-- Rest of the protocols --> </config>
TCPPING.initial_hosts
のホスト名 (または IP アドレス) をサイトマスターに使用されるものに置き換えます。ポート (この場合は7800
) はTCP.bind_port
に一致している必要があります。TCPPING
プロトコルについてさらに詳しくは、「TCPPing プロトコルの使用」を参照してください。
29.2.2.2. データセンター間レプリケーションをプログラムを用いて設定する
Red Hat JBoss Data Grid でのデータセンター間のレプリケーションを設定するプログラムを用いた方法を以下に示します。
手順29.3 データセンター間レプリケーションをプログラムを用いて設定する
ノードの場所を特定します。
ノードが所属するサイトを宣言します。globalConfiguration.site().localSite("LON");
JGroups を設定します。
RELAY
プロトコルを使用するように JGroups を設定します。globalConfiguration.transport().addProperty("configurationFile", jgroups-with-relay.xml);
リモートサイトをセットアップします。
リモートサイトにレプリケートするために JBoss Data Grid キャッシュをセットアップします。ConfigurationBuilder lon = new ConfigurationBuilder(); lon.sites().addBackup() .site("NYC") .backupFailurePolicy(BackupFailurePolicy.WARN) .strategy(BackupConfiguration.BackupStrategy.SYNC) .replicationTimeout(12000) .sites().addInUseBackupSite("NYC") .sites().addBackup() .site("SFO") .backupFailurePolicy(BackupFailurePolicy.IGNORE) .strategy(BackupConfiguration.BackupStrategy.ASYNC) .sites().addInUseBackupSite("SFO")
オプション: バックアップクラッシュを設定します。
JBoss Data Grid は、リモートサイトと同じ名前を使って、データをキャッシュに暗黙的にレプリケートします。リモートサイトのバックアップキャッシュが異なる名前を持つ場合、ユーザーは、データが正しいキャッシュにレプリケートされていることを確認するためにbackupFor
キャッシュを指定する必要があります。注記
この手順は任意であり、リモートサイトのキャッシュの名前が元のキャッシュとは異なるものに設定される場合にのみ必要になります。LON
からのバックアップデータを受信できるようにサイトNYC
のキャッシュを設定します。ConfigurationBuilder NYCbackupOfLon = new ConfigurationBuilder(); NYCbackupOfLon.sites().backupFor().remoteCache("lon").remoteSite("LON");
LON
からバックアップデータを受信できるようにサイトSFO
のキャッシュを設定します。ConfigurationBuilder SFObackupOfLon = new ConfigurationBuilder(); SFObackupOfLon.sites().backupFor().remoteCache("lon").remoteSite("LON");
設定ファイルの内容を追加します。
デフォルトで、Red Hat JBoss Data Grid には、infinispan-embedded-{VERSION}.jar
パッケージ内のdefault-configs/default-jgroups-tcp.xml
およびdefault-configs/default-jgroups-udp.xml
などの JGroups 設定ファイルが含まれます。JGroups 設定を新規ファイル (この例では、ファイル名はjgroups-with-relay.xml
) にコピーし、指定される設定情報をこのファイルに追加します。relay.RELAY2
プロトコル設定は、設定スタックの最新のプロトコルである必要があります。<config> <!-- Additional configuration information here --> <relay.RELAY2 site="LON" config="relay.xml" relay_multicasts="false" /> </config>
relay.xml ファイルを設定します。
relay.xml
ファイルでrelay.RELAY2
設定をセットアップします。このファイルは、グローバルクラスター設定について説明するものです。<RelayConfiguration> <sites> <site name="LON" id="0"> <bridges> <bridge config="jgroups-global.xml" name="global"/> </bridges> </site> <site name="NYC" id="1"> <bridges> <bridge config="jgroups-global.xml" name="global"/> </bridges> </site> <site name="SFO" id="2"> <bridges> <bridge config="jgroups-global.xml" name="global"/> </bridges> </site> </sites> </RelayConfiguration>
グローバルクラスターを設定します。
relay.xml
で参照されるファイルjgroups-global.xml
には、グローバルクラスター、つまりサイト間の通信で使用される別の JGroups 設定が含まれます。グローバルクラスター設定は、通常はTCP
ベースであり、TCPPING
プロトコル (PING
またはMPING
ではない) を使用してメンバーを発見します。default-configs/default-jgroups-tcp.xml
の内容をjgroups-global.xml
にコピーし、TCPPING
を設定するために以下の設定を追加します。<config> <TCP bind_port="7800" <!-- Additional configuration information here --> /> <TCPPING initial_hosts="lon.hostname[7800],nyc.hostname[7800],sfo.hostname[7800]" ergonomics="false" /> <!-- Rest of the protocols --> </config>
TCPPING.initial_hosts
のホスト名 (または IP アドレス) をサイトマスターに使用されるものに置き換えます。ポート (この場合は7800
) はTCP.bind_port
に一致している必要があります。TCPPING
プロトコルについてさらに詳しくは、「TCPPing プロトコルの使用」を参照してください。