29.2. データセンター間レプリケーションの設定

29.2.1. データセンター間レプリケーションの設定 (リモートクライアントサーバーモード)

Red Hat JBoss Data Grid のリモートクライアントサーバーモードでは、データセンター間のレプリケーションは次のようにセットアップされます。

手順29.1 データセンター間のレプリケーションのセットアップ

  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 つはリモートサイトへの接続用になります。さらに詳しい説明は、「データセンター間レプリケーションの操作」を参照してください。
  2. サイトのセットアップ

    クラスター内のそれぞれの分散キャッシュに対してサイトをセットアップするには、standalone.xml ファイルで以下の設定を使用します。
    <distributed-cache>
         <!-- Additional configuration elements here -->
         <backups>
            <backup site="{FIRSTSITENAME}" strategy="{SYNC/ASYNC}" />
            <backup site="{SECONDSITENAME}" strategy="{SYNC/ASYNC}" />
         </backups>
    </distributed-cache>
  3. ローカルサイトトランスポートの設定

    トランスポートを設定するには、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 データセンター間のレプリケーションのセットアップ

  1. ローカルサイトを設定します。

    <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>
    1. site 要素を global 要素に追加してローカルサイト (この例では、ローカルサイトの名前は LON です) を追加します。
    2. サイト間のレプリケーションには、デフォルト以外の JGroups 設定が必要です。transport 要素を追加し、設定ファイルへのパスを configurationFile プロパティーとしてセットアップします。この例では、JGroups 設定ファイルの名前は jgroups-with-relay.xml です。
    3. NYC および SFO サイトにバックアップするには、LON サイトでキャッシュを設定します。
    4. バックアップキャッシュを設定します。
      1. LON からバックアップデータを取得するには、NYC サイトでキャッシュを設定します。
      2. LON からバックアップデータを取得するには、SFO サイトでキャッシュを設定します。
  2. 設定ファイルの内容を追加します。

    デフォルトでは、Red Hat JBoss Data Grid には infinispan-embedded-{VERSION}.jar パッケージ内の default-configs/default-jgroups-tcp.xmldefault-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>
  3. 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>
  4. グローバルクラスターを設定します。

    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 データセンター間レプリケーションをプログラムを用いて設定する

  1. ノードの場所を特定します。

    ノードが所属するサイトを宣言します。
    globalConfiguration.site().localSite("LON");
  2. JGroups を設定します。

    RELAY プロトコルを使用するように JGroups を設定します。
    globalConfiguration.transport().addProperty("configurationFile", jgroups-with-relay.xml);
  3. リモートサイトをセットアップします。

    リモートサイトにレプリケートするために 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")
  4. オプション: バックアップクラッシュを設定します。

    JBoss Data Grid は、リモートサイトと同じ名前を使って、データをキャッシュに暗黙的にレプリケートします。リモートサイトのバックアップキャッシュが異なる名前を持つ場合、ユーザーは、データが正しいキャッシュにレプリケートされていることを確認するために backupFor キャッシュを指定する必要があります。

    注記

    この手順は任意であり、リモートサイトのキャッシュの名前が元のキャッシュとは異なるものに設定される場合にのみ必要になります。
    1. LON からのバックアップデータを受信できるようにサイト NYC のキャッシュを設定します。
      ConfigurationBuilder NYCbackupOfLon = new ConfigurationBuilder();
      NYCbackupOfLon.sites().backupFor().remoteCache("lon").remoteSite("LON");
    2. LON からバックアップデータを受信できるようにサイト SFO のキャッシュを設定します。
      ConfigurationBuilder SFObackupOfLon = new ConfigurationBuilder();
      SFObackupOfLon.sites().backupFor().remoteCache("lon").remoteSite("LON");
  5. 設定ファイルの内容を追加します。

    デフォルトで、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>
  6. 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>
  7. グローバルクラスターを設定します。

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