模擬 Keycloak 站點故障轉移

先決條件

  • 一個跨兩個 Openshift 叢集複製的 Keycloak 實例,具有 Infinispan xsite 和 Aurora DB

  • Realm、使用者和客戶端存在,並具有基準 CLI 命令所需的值

從 CLI 執行故障測試

準備

  • 解壓縮 keycloak-benchmark-${version}.[zip|tar.gz] 檔案

  • 準備 Keycloak 進行測試

  • 請確保您的本地 KUBECONFIG 設定為您要使其失效的 Openshift 叢集。

參數

故障轉移腳本需要設定以下環境變數:FAILOVER_MODEDOMAIN

FAILOVER_MODE 決定了腳本啟動的故障轉移類型,並且可以是以下值之一

FAILOVER_MODE 描述

HEALTH_PROBE

刪除 Keycloak aws-health-route,以便 Route53 最終將執行故障轉移。

KEYCLOAK_ROUTES

刪除所有 Keycloak 路由,以便 Route53 最終將執行故障轉移,但對舊 DNS IP 位址的請求將會失敗。Keycloak Operator 會縮減到 0 個 Pod,以防止重新建立 Keycloak Ingress。

CLUSTER_FAIL

刪除所有 Keycloak 和 Infinispan Pod,不寬限期,並移除相關的 StatefulSet。兩個 Operator 都會縮減,以防止重新建立已移除的資源。

GOSSIP_ROUTER_FAIL

刪除 Infinispan Gossip Router Pod,不寬限期,並移除相關的 Deployment。Infinispan Operator 會縮減,以防止重新建立已移除的資源。

請參閱下文,了解其他可設定的環境變數的描述。

DOMAIN

必填。託管 client.primary.backup. 子網域的 Route53 網域。

FAILOVER_DELAY

選填。啟動叢集故障轉移前要等待的延遲時間(秒)。預設為 60 秒。

執行

使用從 CLI 執行效能基準測試指南來模擬針對特定 Kubernetes 環境的負載。

平行執行以下命令以啟動故障轉移

FAILOVER_MODE="KEYCLOAK_ROUTES" DOMAIN=... ./kc-failover.sh
為了讓 kc-failover.sh 腳本準確記錄 Route53 故障轉移所花費的時間,建議在與 Keycloak 基準測試情境相同的環境中執行該腳本。

在故障轉移測試後還原叢集

執行故障轉移基準測試後,可以透過設定 RECOVERY_MODE 環境變數來執行腳本,以還原原始叢集狀態。RECOVERY_MODE 的值決定用於重新建立 aws-health-route Route 的子網域。

參數

RECOVERY_MODE 描述

ACTIVE

使用 primary.${DOMAIN} URL 重新建立 aws-health-route Route,並擴展 Infinispan 和 Keycloak Operator。

PASSIVE

使用 backup.${DOMAIN} URL 重新建立 aws-health-route Route,並擴展 Infinispan 和 Keycloak Operator。

DOMAIN

必填。託管 client.primary.backup. 子網域的 Route53 網域。

執行

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