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