搜索

11.2. 流程

download PDF

11.2.1. Data Grid 集群

对于本章的上下文中,site -A 是主站点且处于活动状态,site -B 是二级站点,是被动。

站点和 Data Grid 集群之间的复制可能会在网络分区之间停止。这些流程使两个站点重新同步。

警告

通过增加响应时间和/或资源使用量,传输完整状态可能会影响 Data Grid 集群性能。

第一个步骤是从次要站点中删除过时的数据。

  1. 登录到您的次要站点。
  2. 关闭红帽构建的 Keycloak。这将清除所有红帽构建的 Keycloak 缓存,并可防止红帽构建的 Keycloak 状态与数据网格不同步。

    当使用红帽构建的 Keycloak Operator 部署红帽 Keycloak 时,将红帽构建的 Keycloak 实例的数量改为 0。

  3. 使用 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 来完成。

  4. 运行以下命令,禁用从次要站点到主站点的复制。它可防止清除请求访问主站点并删除所有正确的缓存数据。

    命令:

    site take-offline --all-caches --site=site-a

    输出:

    {
      "offlineClientSessions" : "ok",
      "authenticationSessions" : "ok",
      "sessions" : "ok",
      "clientSessions" : "ok",
      "work" : "ok",
      "offlineSessions" : "ok",
      "loginFailures" : "ok",
      "actionTokens" : "ok"
    }

  5. 检查复制状态是否为 offline

    命令:

    site status --all-caches --site=site-a

    输出:

    {
      "status" : "offline"
    }

    如果状态未 脱机,请重复上一步。

    警告

    确保复制 离线,否则清除数据将清除这两个站点。

  6. 使用以下命令清除二级站点中的所有缓存数据:

    命令:

    clearcache actionTokens
    clearcache authenticationSessions
    clearcache clientSessions
    clearcache loginFailures
    clearcache offlineClientSessions
    clearcache offlineSessions
    clearcache sessions
    clearcache work

    这些命令不会打印任何输出。

  7. 重新启用从次要站点到主站点的跨站点复制。

    命令:

    site bring-online --all-caches --site=site-a

    输出:

    {
      "offlineClientSessions" : "ok",
      "authenticationSessions" : "ok",
      "sessions" : "ok",
      "clientSessions" : "ok",
      "work" : "ok",
      "offlineSessions" : "ok",
      "loginFailures" : "ok",
      "actionTokens" : "ok"
    }

  8. 检查复制状态是否为 在线

    命令:

    site status --all-caches --site=site-a

    输出:

    {
      "status" : "online"
    }

现在,我们已准备好将状态从主站点传输到次要站点。

  1. 登录到您的主站点
  2. 使用 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 来完成。

  3. 触发从主站点传输到次要站点的状态。

    命令:

    site push-site-state --all-caches --site=site-b

    输出:

    {
      "offlineClientSessions" : "ok",
      "authenticationSessions" : "ok",
      "sessions" : "ok",
      "clientSessions" : "ok",
      "work" : "ok",
      "offlineSessions" : "ok",
      "loginFailures" : "ok",
      "actionTokens" : "ok"
    }

  4. 检查所有缓存的复制状态是否 在线

    命令:

    site status --all-caches --site=site-b

    输出:

    {
      "status" : "online"
    }

  5. 检查所有缓存的 push-site-status 命令的输出,以等待状态传输完成。

    命令:

    site push-site-status --cache=actionTokens
    site push-site-status --cache=authenticationSessions
    site push-site-status --cache=clientSessions
    site push-site-status --cache=loginFailures
    site push-site-status --cache=offlineClientSessions
    site push-site-status --cache=offlineSessions
    site push-site-status --cache=sessions
    site push-site-status --cache=work

    输出:

    {
      "site-b" : "OK"
    }
    {
      "site-b" : "OK"
    }
    {
      "site-b" : "OK"
    }
    {
      "site-b" : "OK"
    }
    {
      "site-b" : "OK"
    }
    {
      "site-b" : "OK"
    }
    {
      "site-b" : "OK"
    }
    {
      "site-b" : "OK"
    }

    检查 本节中的表,以查看 Cross-Site 文档 以了解可能的状态值。

    如果报告错误,请为该特定缓存重复状态传输。

    命令:

    site push-site-state --cache=<cache-name> --site=site-b

  6. 使用以下命令清除/重置状态传输状态

    命令:

    site clear-push-site-status --cache=actionTokens
    site clear-push-site-status --cache=authenticationSessions
    site clear-push-site-status --cache=clientSessions
    site clear-push-site-status --cache=loginFailures
    site clear-push-site-status --cache=offlineClientSessions
    site clear-push-site-status --cache=offlineSessions
    site clear-push-site-status --cache=sessions
    site clear-push-site-status --cache=work

    输出:

    "ok"
    "ok"
    "ok"
    "ok"
    "ok"
    "ok"
    "ok"
    "ok"

现在,状态在二级站点中可用,因此 Red Hat build of Keycloak 可以再次启动:

  1. 登录到您的次要站点。
  2. 启动红帽构建的 Keycloak。

    当使用红帽构建的 Keycloak Operator 部署红帽 Keycloak 时,将红帽构建的 Keycloak 实例的数量改为原始值。

11.2.2. AWS Aurora 数据库

不需要任何操作。

11.2.3. Route53

不需要任何操作。

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.