Keycloakサイトのフェイルオーバーのシミュレーション

前提条件

  • Infinispan xsiteとAurora DBで2つのOpenshiftクラスターにレプリケートされたKeycloakインスタンス

  • ベンチマークCLIコマンドに必要な値を持つレルム、ユーザー、およびクライアントが存在する

CLIから障害テストを実行する

準備

  • keycloak-benchmark-${version}.[zip|tar.gz]ファイルを展開します

  • テストのためのKeycloakの準備

  • ローカルのKUBECONFIGが、障害を起こしたいOpenshiftクラスターに設定されていることを確認してください。

パラメータ

フェイルオーバースクリプトでは、次の環境変数を設定する必要があります。FAILOVER_MODEDOMAIN

FAILOVER_MODEは、スクリプトによって開始されるフェイルオーバーのタイプを決定し、次のいずれかの値を取ることができます。

FAILOVER_MODE 説明

HEALTH_PROBE

Route53が最終的にフェイルオーバーするように、Keycloak aws-health-routeを削除します。

KEYCLOAK_ROUTES

Route53が最終的にフェイルオーバーするように、すべてのKeycloakルートを削除しますが、古いDNS IPアドレスへのリクエストは失敗します。Keycloak Ingressが再作成されるのを防ぐために、Keycloak Operatorは0ポッドにスケールダウンされます。

CLUSTER_FAIL

猶予期間なしですべてのKeycloakおよびInfinispanポッドを削除し、関連するStatefulSetを削除します。削除されたリソースが再作成されるのを防ぐために、両方のオペレーターがスケールダウンされます。

GOSSIP_ROUTER_FAIL

猶予期間なしでInfinispan Gossip Routerポッドを削除し、関連するDeploymentを削除します。削除されたリソースが再作成されるのを防ぐために、Infinispanオペレーターがスケールダウンされます。

構成可能な他の環境変数の説明については、以下を参照してください。

DOMAIN

必須client.primary.、およびbackup.サブドメインをホストするRoute53ドメイン。

FAILOVER_DELAY

オプション。クラスターのフェイルオーバーを開始する前に待機する遅延時間(秒単位)。デフォルトは60秒です。

実行

特定のKubernetes環境に対する負荷をシミュレートするには、CLIからのベンチマークの実行ガイドを使用してください。

並行して、以下のコマンドを実行してフェイルオーバーを開始します。

FAILOVER_MODE="KEYCLOAK_ROUTES" DOMAIN=... ./kc-failover.sh
kc-failover.shスクリプトがRoute53フェイルオーバーが発生するまでの時間を正確に記録するためには、スクリプトがKeycloakベンチマークシナリオと同じ環境で実行されることをお勧めします。

フェイルオーバーテスト後のクラスターの復旧

フェイルオーバーベンチマークが実行されたら、RECOVERY_MODE環境変数を設定してスクリプトを実行することにより、元のクラスター状態を復元できます。RECOVERY_MODEの値は、aws-health-routeルートを再作成するために使用されるサブドメインを決定します。

パラメータ

RECOVERY_MODE 説明

ACTIVE

primary.${DOMAIN} URLでaws-health-routeルートを再作成し、InfinispanおよびKeycloakオペレーターをスケールアップします。

PASSIVE

backup.${DOMAIN} URLでaws-health-routeルートを再作成し、InfinispanおよびKeycloakオペレーターをスケールアップします。

DOMAIN

必須client.primary.、およびbackup.サブドメインをホストするRoute53ドメイン。

実行

RECOVERY_MODE=ACTIVE DOMAIN=... ./kc-failover.sh