模拟 Keycloak 站点故障转移
先决条件
-
一个跨两个 OpenShift 集群复制的 Keycloak 实例,具有 Infinispan xsite 和 Aurora DB
-
领域、用户和客户端存在,并具有基准测试 CLI 命令所需的价值
从 CLI 运行故障测试
参数
故障转移脚本需要设置以下环境变量:FAILOVER_MODE
和 DOMAIN
。
FAILOVER_MODE
确定脚本启动的故障转移类型,可以是以下值之一
FAILOVER_MODE | 描述 |
---|---|
|
删除 Keycloak aws-health-route,以便 Route53 最终会发生故障转移。 |
|
删除所有 Keycloak 路由,以便 Route53 最终会发生故障转移,但对旧 DNS IP 地址的请求将失败。Keycloak 运算符被缩减到 0 个 Pod,以防止 Keycloak Ingress 被重新创建。 |
|
删除所有 Keycloak 和 Infinispan Pod,不设置宽限期,并删除关联的 StatefulSet。两个运算符都被缩减,以防止删除的资源被重新创建。 |
|
删除 Infinispan Gossip Router Pod,不设置宽限期,并删除关联的 Deployment。Infinispan 运算符被缩减,以防止删除的资源被重新创建。 |
有关可以配置的其他环境变量的描述,请参见下文。
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
路由的子域。