第2章 クロスサイトレプリケーションのための Data Grid の設定

サイト間でデータをレプリケートするように Data Grid を設定するには、最初にクラスタートランスポートをセットアップして、Data Grid クラスターが相互に検出し、サイトマスターが通信できるようにします。次に、バックアップの場所を Data Grid 設定のキャッシュ定義に追加します。

2.1. クロスサイトレプリケーションのためのクラスタートランスポートの設定

Data Grid クラスターがバックアップの場所と通信できるように、JGroups RELAY2 をトランスポート層に追加します。

手順

  1. infinispan.xml を開いて編集します。
  2. 以下のとおり、JGroups スタックに RELAY2 プロトコルを追加します。

    <jgroups>
       <stack name="xsite" extends="udp">
          <relay.RELAY2 site="LON" xmlns="urn:org:jgroups" max_site_masters="1000"/>
          <remote-sites default-stack="tcp">
             <remote-site name="LON"/>
             <remote-site name="NYC"/>
          </remote-sites>
       </stack>
    </jgroups>
  3. 以下のとおり、スタックを使用するように Data Grid クラスタートランスポートを設定します。

    <cache-container name="default" statistics="true">
      <transport cluster="${cluster.name}" stack="xsite"/>
    </cache-container>
  4. infinispan.xml を保存して閉じます。

2.1.1. JGroups RELAY2 スタック

Data Grid クラスターは、クラスター間の検出および通信に JGroups RELAY2 を使用します。

<jgroups>
   <stack name="xsite" 1
          extends="udp"> 2
      <relay.RELAY2 xmlns="urn:org:jgroups" 3
                    site="LON" 4
                    max_site_masters="1000"/> 5
      <remote-sites default-stack="tcp"> 6
         <remote-site name="LON"/> 7
         <remote-site name="NYC"/>
      </remote-sites>
   </stack>
</jgroups>
1
Data Grid クラスタートランスポートに使用するプロトコルを宣言する xsite という名前のスタックを定義します。
2
クラスター内トラフィックにデフォルトの JGroups UDP スタックを使用します。
3
クラスター間トランスポートのスタックに RELAY2 を追加します。
4
ローカルサイトに名前を付けます。Data Grid は、このサイトからのキャッシュ内のデータをバックアップの場所に複製します。
5
ローカルクラスターに最大 1000 のサイトマスターを設定します。バックアップ要求で最適なパフォーマンスを得るには、max_site_masters に Data Grid クラスター内のノード数以上の値を設定する必要があります。
6
すべてのサイト名を指定し、クラスター間トランスポートにデフォルトの JGroups TCP スタックを使用します。
7
バックアップの場所として各リモートサイトに名前を付けます。

2.1.2. カスタム JGroups RELAY2 スタック

<jgroups>
   <stack name="relay-global" extends="tcp"> 1
         <MPING stack.combine="REMOVE"/>
         <TCPPING initial_hosts="192.0.2.0[7800]" stack.combine="INSERT_AFTER" stack.position="TCP"/>
    </stack>
   <stack name="xsite" extends="udp">
      <relay.RELAY2 site="LON" xmlns="urn:org:jgroups"
                    max_site_masters="10" 2
                    can_become_site_master="true"/>
      <remote-sites default-stack="relay-global">
         <remote-site name="LON"/>
         <remote-site name="NYC"/>
      </remote-sites>
   </stack>
</jgroups>
1
TCP スタックを拡張し、MPING の代わりに TCPPING を検出に使用するカスタム RELAY2 スタックを追加します。
2
サイトマスターの最大数を設定し、オプションで追加の RELAY2 プロパティーを指定します。JGroups RELAY2 ドキュメントを参照してください。

次のように、外部で定義された JGroups スタックファイルを参照することもできます。

<stack-file name="relay-global" path="jgroups-relay.xml"/>

前述の設定では、jgroups-relay.xml は次のような JGroups スタックを提供します。

<config xmlns="urn:org:jgroups"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="urn:org:jgroups http://www.jgroups.org/schema/jgroups-4.2.xsd">

    <!-- Use TCP for inter-cluster transport. -->
    <TCP bind_addr="127.0.0.1"
         bind_port="7200"
         port_range="30"

         thread_pool.min_threads="0"
         thread_pool.max_threads="8"
         thread_pool.keep_alive_time="5000"
    />

    <!-- Use TCPPING for inter-cluster discovery. -->
    <TCPPING timeout="3000"
             initial_hosts="127.0.0.1[7200]"
             port_range="3"
             ergonomics="false"/>

    <!-- Provide other JGroups stack configuration as required. -->
</config>