15.2. 流程
15.2.1. Data Grid 集群
对于本章的上下文中,site-a
是当前活跃的站点,site-b
是不是 AWS 全局加速器 EndpointGroup 的一部分的离线站点,因此不接收用户请求。
通过增加响应时间和/或资源使用量,传输状态可能会影响 Data Grid 集群性能。
第一步是从离线站点中删除过时的数据。
- 登录到离线站点。
关闭红帽构建的 Keycloak。这将清除所有红帽构建的 Keycloak 缓存,并防止红帽构建的 Keycloak 状态与 Data Grid 不兼容。
当使用红帽构建的 Keycloak Operator 部署红帽构建的 Keycloak 时,请将红帽构建的 Keycloak 实例中的红帽构建的 Keycloak 实例数量改为 0。
使用 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 集群的用户名和密码。这些凭证是 Deploy Data Grid for HA 中的设置,其使用配置 credentials 部分中的 Data Grid Operator 一章。
输出:
Username: developer Password: [infinispan-0-29897@ISPN//containers/default]>
注意pod 名称取决于 Data Grid CR 中定义的集群名称。连接可通过 Data Grid 集群中的任何 pod 完成。
运行以下命令,将复制从离线站点禁用到活动站点。它可防止访问活动站点的清除请求并删除所有正确的缓存数据。
命令:
site take-offline --all-caches --site=site-a
输出:
{ "authenticationSessions" : "ok", "work" : "ok", "loginFailures" : "ok", "actionTokens" : "ok" }
检查复制状态是否为
。
命令:
site status --all-caches --site=site-a
输出:
{ "status" : "offline" }
如果状态不是
离线
,请重复上一步。警告确保复制
离线
,否则清除数据将清除两个站点。使用以下命令清除离线站点中的所有缓存数据:
命令:
clearcache actionTokens clearcache authenticationSessions clearcache loginFailures clearcache work
这些命令不会打印任何输出。
重新启用从离线站点到活动站点的跨站点复制。
命令:
site bring-online --all-caches --site=site-a
输出:
{ "authenticationSessions" : "ok", "work" : "ok", "loginFailures" : "ok", "actionTokens" : "ok" }
检查复制状态为
在线
。命令:
site status --all-caches --site=site-a
输出:
{ "status" : "online" }
现在,我们已准备好将状态从活动站点转移到离线站点。
- 登录到您的活跃站点
使用 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 集群的用户名和密码。这些凭证是 Deploy Data Grid for HA 中的设置,其使用配置 credentials 部分中的 Data Grid Operator 一章。
输出:
Username: developer Password: [infinispan-0-29897@ISPN//containers/default]>
注意pod 名称取决于 Data Grid CR 中定义的集群名称。连接可通过 Data Grid 集群中的任何 pod 完成。
触发从活动站点到离线站点的状态转移。
命令:
site push-site-state --all-caches --site=site-b
输出:
{ "authenticationSessions" : "ok", "work" : "ok", "loginFailures" : "ok", "actionTokens" : "ok" }
检查所有缓存的复制状态是
在线的
。命令:
site status --all-caches --site=site-b
输出:
{ "status" : "online" }
通过检查所有缓存的
push-site-status
命令的输出,等待状态传输完成。命令:
site push-site-status --cache=actionTokens site push-site-status --cache=authenticationSessions site push-site-status --cache=loginFailures site push-site-status --cache=work
输出:
{ "site-b" : "OK" } { "site-b" : "OK" } { "site-b" : "OK" } { "site-b" : "OK" }
检查本节中的表 ,了解 Cross-Site Documentation 中的可能状态值。
如果报告错误,请对该特定缓存重复状态传输。
命令:
site push-site-state --cache=<cache-name> --site=site-b
使用以下命令清除/重置状态
命令:
site clear-push-site-status --cache=actionTokens site clear-push-site-status --cache=authenticationSessions site clear-push-site-status --cache=loginFailures site clear-push-site-status --cache=work
输出:
"ok" "ok" "ok" "ok"
现在,这个状态包括在离线站点中,可以再次启动 Red Hat build of Keycloak:
- 登录到您的次要站点。
启动红帽构建的 Keycloak。
当使用红帽构建的 Keycloak Operator 部署红帽构建的 Keycloak 时,将红帽构建的 Keycloak 实例中的红帽构建的 Keycloak 实例数量改为原始值。
15.2.2. AWS Aurora 数据库
不需要任何操作。
15.2.3. AWS Global Accelerator
同步两个站点后,可以安全地按照 Bring 站点在线 中的步骤将之前离线站点重新添加到 Global Accelerator EndpointGroup 中。