10.2. 流程
10.2.1. Data Grid 集群
对于本章的上下文中,site -A
是主站点,site -B
是次要站点。
当您准备离线站点时,最好禁用该站点的复制。当频道在主站点和次站点之间断开连接时,此操作可防止错误或延迟。
10.2.1.1. 将状态从次要站点传输到主站点的流程
- 登录到您的次要站点
使用 Data Grid CLI 工具连接到 Data Grid 集群:
命令:
oc -n keycloak exec -it pods/infinispan-0 -- ./bin/cli.sh --trustall --connect https://127.0.0.1:11222
它要求提供 Data Grid 集群的用户名和密码。这些凭证是在配置凭证部分的 带有 Data Grid Operator 的 Deploy Data Grid for HA 一章中设置的。
输出:
Username: developer Password: [infinispan-0-29897@ISPN//containers/default]>
注意pod 名称取决于 Data Grid CR 中定义的集群名称。该连接可以通过 Data Grid 集群中的任何 pod 来完成。
运行以下命令,禁用到主站点的复制:
命令:
site take-offline --all-caches --site=site-a
输出:
{ "offlineClientSessions" : "ok", "authenticationSessions" : "ok", "sessions" : "ok", "clientSessions" : "ok", "work" : "ok", "offlineSessions" : "ok", "loginFailures" : "ok", "actionTokens" : "ok" }
检查复制状态是否为
offline
。命令:
site status --all-caches --site=site-a
输出:
{ "status" : "offline" }
如果状态未
脱机
,请重复上一步。
二级站点中的 Data Grid 集群已准备好处理请求,而无需尝试复制到主站点。
10.2.2. AWS Aurora 数据库
假设区域 multi-AZ Aurora 部署,当前写入器实例应与有效的红帽构建的 Keycloak 集群位于同一个区域,以避免跨可用区的延迟和通信。
切换 Aurora 的写器实例会导致短暂的停机时间。在某些部署中,其他站点中的写入器实例可能会接受延迟稍长。因此,这个情况可能会延迟到维护窗口或跳过,具体取决于部署的情况。
要更改写器实例,请运行故障转移。此更改将使数据库在短时间内不可用。红帽构建的 Keycloak 需要重新建立数据库连接。
要将 writer 实例切换到其他 AZ,请运行以下命令:
aws rds failover-db-cluster --db-cluster-identifier ...
10.2.3. 红帽构建的 Keycloak 集群
不需要任何操作。
10.2.4. Route53
要强制 Route53 将主站点标记为不可用,请编辑 AWS 中的健康检查以指向不存在的路由(健康/关闭
)。几分钟后,客户端会注意到更改,流量将逐渐移到次要站点。