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 プロトコルの使用」を参照してください。