Keycloakサイトのフェイルオーバーのシミュレーション
前提条件
-
Infinispan xsiteとAurora DBで2つのOpenshiftクラスターにレプリケートされたKeycloakインスタンス
-
ベンチマークCLIコマンドに必要な値を持つレルム、ユーザー、およびクライアントが存在する
CLIから障害テストを実行する
準備
-
keycloak-benchmark-${version}.[zip|tar.gz]
ファイルを展開します -
ローカルのKUBECONFIGが、障害を起こしたいOpenshiftクラスターに設定されていることを確認してください。
パラメータ
フェイルオーバースクリプトでは、次の環境変数を設定する必要があります。FAILOVER_MODE
とDOMAIN
。
FAILOVER_MODE
は、スクリプトによって開始されるフェイルオーバーのタイプを決定し、次のいずれかの値を取ることができます。
FAILOVER_MODE | 説明 |
---|---|
|
Route53が最終的にフェイルオーバーするように、Keycloak aws-health-routeを削除します。 |
|
Route53が最終的にフェイルオーバーするように、すべてのKeycloakルートを削除しますが、古いDNS IPアドレスへのリクエストは失敗します。Keycloak Ingressが再作成されるのを防ぐために、Keycloak Operatorは0ポッドにスケールダウンされます。 |
|
猶予期間なしですべてのKeycloakおよびInfinispanポッドを削除し、関連するStatefulSetを削除します。削除されたリソースが再作成されるのを防ぐために、両方のオペレーターがスケールダウンされます。 |
|
猶予期間なしで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
ルートを再作成するために使用されるサブドメインを決定します。