29.4. サイト間の状態転送
オフラインのマスターサイトがオンラインに復帰した場合に、バックアップサイトから最新のデータでマスターサイトの状態を同期する必要があります。状態の転送により、あるサイトから別のサイトに状態を転送できるため、マスターサイトがバックアップサイトと同期され、整合性が確保されます。同様に、バックアップサイトが利用可能になった場合に、状態の転送を使用してバックアップサイトとマスターサイトの整合性を確保できます。
マスターサイト A とバックアップサイト B の 2 つのサイトがあるとします。クライアントは最初にマスターサイト A のみにアクセスでき、バックアップサイト B は隠れたバックアップとして動作します。サイト間の状態転送は、双方向でプッシュできます。新しいバックアップサイト B がオンラインになると、マスターサイト A と状態を同期するために、状態の転送を開始してマスターサイト A からバックアップサイト B に状態をプッシュできます。
同様に、マスターサイト A がオンラインに復帰すると、バックアップサイト B と状態を同期するために、状態の転送を開始してバックアップサイト B からマスターサイト A に状態をプッシュできます。
このユースケースは Active-Passive 状態転送と Active-Active 状態転送の両方に適用されます。違いは、Active-Active 状態転送ではキャッシュ操作をサイトで実行できることを前提とします (状態が消費されます)。
システム管理者または権限があるユーザーは JMX を使用して手動で状態転送を開始します。システム管理者は、
XSiteAdminOperations MBean で利用可能な pushState(SiteName String) 操作を呼び出します。
以下のインターフェースは、JConsole の
pushState(SiteName String) 操作を示します。

図29.2 PushState 操作
また、状態転送はコマンドラインインターフェース (CLI) を使用して
site push sitename コマンドによって呼び出されます。たとえば、マスターサイトがオンラインに復帰すると、システム管理者は状態を受け取るマスターサイトの名前を指定してバックアップサイトで状態転送操作を呼び出します。
マスターサイトは、プッシュ操作の実行時にオフラインにできます。状態転送が正常に行われた場合に、両方のサイトに共通の状態データがマスターサイトで上書きされます。たとえば、キー A がバックアップサイトではなくマスターサイトに存在する場合、キー A はマスターサイトから削除されません。キー B がバックアップサイトとマスターサイトに存在する場合は、キー B がマスターサイトで上書きされます。
注記
状態転送の開始後に実行されたキーのアップグレードは、受け取る状態転送によって上書きされません。
サイト間状態転送は、トランザクション対応であり、1PC および 2PC トランザクションオプションをサポートします。1PC および 2PC オプションは、トランザクション内部で変更されたデータを 1 または 2 フェーズでリモートサイトにバックアップするかどうかを定義します。2PC にはトランザクションが正常に準備されたことをバックアップサイトが確認する準備フェーズが含まれます。両方のオプションがサポートされます。
29.4.1. Active-Passive 状態転送
Active-Passive 状態転送は、サイト間レプリケーションを使用してマスターサイトをバックアップする場合に使用されます。マスターサイトはすべての要求を処理しますが、オフラインになった場合にバックアップサイトがそれらの要求を処理し始めます。マスターサイトがオンラインに復帰すると、マスターサイトはバックアップサイトから状態を受け取り、クライアント要求を処理し始めます。Active-Passive 状態転送モードでは、状態を送信するサイトの状態転送と同時にトランザクション書き込みが行われます。
Active-Passive 状態転送モードでは、クライアントの読み書き要求がバックアップサイトでのみ発生します。マスターサイトは、状態転送の完了時にクライアントの要求がマスターサイトに切り替わるまで隠れたバックアップとして機能します。Active-Passive 状態転送モードは、データセンター間レプリケーションで完全にサポートされます。
Active-Passive 状態転送がネットワーク障害により中断された場合は、システム管理者が JMX 操作を呼び出し、状態転送を手動で再開します。状態を (たとえば、マスターサイト A からバックアップサイト B に) 転送するには、マスターサイト A で JMX 操作を呼び出します。同様に、バックアップサイト B からマスターサイト A に状態を転送するには、バックアップサイト B で JMX 操作を呼び出します。
JMX 操作は、状態を同期するためにオンラインである他のサイトに状態を転送するサイトで呼び出されます。
たとえば、稼働しているバックアップサイトがあり、システム管理者がマスターサイトをオンラインに復帰させたいとします。この場合は、Active-Passive 状態転送を使用するために、システム管理者が以下の手順を実行します。
- マスターサイトで Red Hat JBoss Data Grid クラスターを起動します。
- バックアップサイトがマスターサイトに状態をプッシュするようにします。
- 状態転送が完了するまで待機します。
- マスターサイトが要求を処理できることをクライアントに通知します。
29.4.2. Active-Active 状態転送
Active-Active 状態転送モードでは、状態転送の実行中にクライアントの要求が両方のサイトで同時に発生します。現在の実装では、状態転送の実行中に新しいサイトで要求を処理できます (これにより、データの整合性が確保されなくなることがあります)。
警告
Active-Active 状態転送モードは、完全にサポートされません。データの不整合が発生することがあります。
注記
Active-Active 状態転送モードでは、マスターサイトとバックアップサイトの両方で同じ役割を共有します。Active-Active 状態転送モードでは、マスターサイトとバックアップが明確に区別されません。
たとえば、稼働しているサイトがあり、システム管理者が新しいサイトをオンラインに復帰させたいとします。この場合は、Active-Passive 状態転送を使用するために、システム管理者が以下の手順を実行する必要があります。
- 新しいサイトで Red Hat JBoss Data Grid クラスターを起動します。
- 稼働しているサイトが新しいサイトに状態をプッシュするようにします。
- 新しいサイトが要求を処理できることをクライアントに通知します。
29.4.3. 状態転送の設定
サイト間の状態転送は、有効でないか無効です。ただし、一部のパラメーターをチューニングできます。この設定は、状態転送中または状態転送後にマスターサイトに要求を切り替えるようロードバランサーを設定するときにシステム管理者のみが行えます。実装では、状態を受け取る前にキーがクライアントによって更新されるケースが処理されます (いつ送信するかは無視されます)。
デフォルトのパラメーター値は以下のとおりです。
<backups>
<backup site="NYC"
strategy="SYNC"
failure-policy="FAIL">
<state-transfer chunk-size="512"
timeout="1200000"
max-retries="30"
wait-time="2000" />
</backup>
</backups>