サイトの同期

これは、オフラインサイトをオンラインサイトと同期するために必要な手順について説明します。

この手順を使用する場合

これは、2つのサイトの Infinispan クラスタの状態が切断され、キャッシュの内容が同期しなくなった場合に使用します。例えば、スプリットブレインの後や、一方のサイトがメンテナンスのためにオフラインになった場合などに実行します。

手順の最後に、セカンダリサイトのデータは破棄され、アクティブサイトのデータに置き換えられます。オフラインサイト内のすべてのキャッシュは、無効なキャッシュコンテンツを防ぐためにクリアされます。

手順

Infinispan クラスタ

このガイドのコンテキストでは、site-a は現在アクティブなサイトであり、site-b は AWS Global Accelerator EndpointGroup の一部ではなく、したがってユーザーリクエストを受信していないオフラインサイトです。

状態を転送すると、応答時間やリソース使用量の増加により、Infinispan クラスタのパフォーマンスに影響を与える可能性があります。

最初の手順は、オフラインサイトから古いデータを削除することです。

  1. オフラインサイトにログインします。

  2. Keycloak をシャットダウンします。これにより、すべての Keycloak キャッシュがクリアされ、Keycloak の状態が Infinispan と同期しなくなるのを防ぎます。

    Keycloak Operator を使用して Keycloak をデプロイする場合、Keycloak Custom Resource 内の Keycloak インスタンスの数を 0 に変更します。

  3. Infinispan CLI ツールを使用して Infinispan クラスタに接続します。

    コマンド
    kubectl -n keycloak exec -it pods/infinispan-0 -- ./bin/cli.sh --trustall --connect https://127.0.0.1:11222

    Infinispan クラスタのユーザー名とパスワードが要求されます。これらの認証情報は、「Infinispan Operator を使用した HA のための Infinispan のデプロイ」ガイドの認証情報の設定セクションで設定されたものです。

    出力
    Username: developer
    Password:
    [infinispan-0-29897@ISPN//containers/default]>
    ポッド名は、Infinispan CR で定義されたクラスタ名によって異なります。接続は、Infinispan クラスタ内の任意のポッドで行うことができます。
  4. 次のコマンドを実行して、オフラインサイトからアクティブサイトへのレプリケーションを無効にします。これにより、クリアリクエストがアクティブサイトに到達し、正しいキャッシュデータがすべて削除されるのを防ぎます。

    コマンド
    site take-offline --all-caches --site=site-a
    出力
    {
      "authenticationSessions" : "ok",
      "work" : "ok",
      "loginFailures" : "ok",
      "actionTokens" : "ok"
    }
  5. レプリケーションステータスが offline であることを確認します。

    コマンド
    site status --all-caches --site=site-a
    出力
    {
      "status" : "offline"
    }

    ステータスが offline でない場合は、前の手順を繰り返します。

    レプリケーションが offline であることを確認してください。そうしないと、クリアデータが両方のサイトをクリアしてしまいます。
  6. 次のコマンドを使用して、オフラインサイト内のすべてのキャッシュデータをクリアします。

    コマンド
    clearcache actionTokens
    clearcache authenticationSessions
    clearcache loginFailures
    clearcache work

    これらのコマンドは何も出力しません。

  7. オフラインサイトからアクティブサイトへのクロスサイトレプリケーションを再度有効にします。

    コマンド
    site bring-online --all-caches --site=site-a
    出力
    {
      "authenticationSessions" : "ok",
      "work" : "ok",
      "loginFailures" : "ok",
      "actionTokens" : "ok"
    }
  8. レプリケーションステータスが online であることを確認します。

    コマンド
    site status --all-caches --site=site-a
    出力
    {
      "status" : "online"
    }

これで、アクティブサイトからオフラインサイトへの状態転送の準備ができました。

  1. アクティブサイトにログインします。

  2. Infinispan CLI ツールを使用して Infinispan クラスタに接続します。

    コマンド
    kubectl -n keycloak exec -it pods/infinispan-0 -- ./bin/cli.sh --trustall --connect https://127.0.0.1:11222

    Infinispan クラスタのユーザー名とパスワードが要求されます。これらの認証情報は、「Infinispan Operator を使用した HA のための Infinispan のデプロイ」ガイドの認証情報の設定セクションで設定されたものです。

    出力
    Username: developer
    Password:
    [infinispan-0-29897@ISPN//containers/default]>
    ポッド名は、Infinispan CR で定義されたクラスタ名によって異なります。接続は、Infinispan クラスタ内の任意のポッドで行うことができます。
  3. アクティブサイトからオフラインサイトへの状態転送をトリガーします。

    コマンド
    site push-site-state --all-caches --site=site-b
    出力
    {
      "authenticationSessions" : "ok",
      "work" : "ok",
      "loginFailures" : "ok",
      "actionTokens" : "ok"
    }
  4. すべてのキャッシュでレプリケーションステータスが online であることを確認します。

    コマンド
    site status --all-caches --site=site-b
    出力
    {
      "status" : "online"
    }
  5. すべてのキャッシュについて push-site-status コマンドの出力を確認して、状態転送が完了するのを待ちます。

    コマンド
    site push-site-status --cache=actionTokens
    site push-site-status --cache=authenticationSessions
    site push-site-status --cache=loginFailures
    site push-site-status --cache=work
    出力
    {
      "site-b" : "OK"
    }
    {
      "site-b" : "OK"
    }
    {
      "site-b" : "OK"
    }
    {
      "site-b" : "OK"
    }

    ステータス値の可能性については、「クロスサイトドキュメントのこのセクション」の表を確認してください。

    エラーが報告された場合は、その特定のキャッシュの状態転送を繰り返します。

    コマンド
    site push-site-state --cache=<cache-name> --site=site-b
  6. 次のコマンドで状態転送ステータスをクリア/リセットします。

    コマンド
    site clear-push-site-status --cache=actionTokens
    site clear-push-site-status --cache=authenticationSessions
    site clear-push-site-status --cache=loginFailures
    site clear-push-site-status --cache=work
    出力
    "ok"
    "ok"
    "ok"
    "ok"

これで状態がオフラインサイトで利用可能になったため、Keycloak を再度起動できます。

  1. セカンダリサイトにログインします。

  2. Keycloak を起動します。

    Keycloak Operator を使用して Keycloak をデプロイする場合、Keycloak Custom Resource 内の Keycloak インスタンスの数を元の値に変更します。

AWS Aurora データベース

アクションは不要です。

AWS Global Accelerator

2つのサイトが同期されたら、「サイトをオンラインにする」ガイドの手順に従って、以前にオフラインだったサイトを Global Accelerator EndpointGroup に安全に追加できます。

参考資料

このページについて