13.2. 受管跨站点复制


Data Grid Operator 可以发现在不同数据中心中运行的 Data Grid 集群组成全局集群。

当您配置受管跨站点连接时,Data Grid Operator 会在每个 Data Grid 集群中创建路由器 pod。Data Grid pod 使用 & lt;cluster_name>-site 服务连接到这些路由器 pod 并发送备份请求。

路由器 Pod 维护所有 Pod IP 地址记录,并解析 RELAY 消息标头,将备份请求转发到正确的 Data Grid 集群。如果路由器 pod 崩溃,则所有 Data Grid pod 都开始使用任何其他可用的路由器 pod,直到 OpenShift 恢复它。

重要

为了管理跨站点连接,Data Grid Operator 使用 Kubernetes API。每个 OpenShift 集群都必须具有对远程 Kubernetes API 的网络访问权限,以及每个备份集群的服务帐户令牌。

注意

在 Data Grid Operator 发现您配置的所有备份位置前,Data Grid 集群不会启动运行。

13.2.1. 为受管跨站点连接创建服务帐户令牌

在 OpenShift 集群上生成服务帐户令牌,允许 Data Grid Operator 自动发现 Data Grid 集群并管理跨站点连接。

先决条件

  • 确保所有 OpenShift 集群都可以访问 Kubernetes API。
    Data Grid Operator 使用此 API 管理跨站点连接。

    注意

    Data Grid Operator 不修改远程 Data Grid 集群。服务帐户令牌通过 Kubernetes API 提供只读访问。

流程

  1. 登录 OpenShift 集群。
  2. 创建一个服务帐户。

    例如,在 LON 创建服务帐户:

    oc create sa -n <namespace> lon
  3. 使用以下命令在服务帐户中添加 view 角色:

    oc policy add-role-to-user view -n <namespace> -z lon
  4. 如果使用 NodePort 服务在网络上公开 Data Grid 集群,还必须将 cluster-reader 角色添加到服务帐户中:

    oc adm policy add-cluster-role-to-user cluster-reader -z lon -n <namespace>
  5. 在其他 OpenShift 集群上重复上述步骤。
  6. 在每个 OpenShift 集群上交换服务帐户令牌。

13.2.2. 交换服务帐户令牌

在 OpenShift 集群上生成服务帐户令牌,并将它们添加到每个备份位置的 secret 中。您在此流程中生成的令牌不会过期。有关绑定服务帐户令牌,请参阅交换绑定服务帐户令牌

先决条件

  • 您已创建了一个服务帐户。

流程

  1. 登录您的 OpenShift 集群。
  2. 创建服务帐户令牌 secret 文件,如下所示:

    sa-token.yaml

    apiVersion: v1
    kind: Secret
    metadata:
      name: ispn-xsite-sa-token 
    1
    
      annotations:
        kubernetes.io/service-account.name: "<service-account>" 
    2
    
    type: kubernetes.io/service-account-token

    1
    指定 secret 的名称。
    2
    指定服务帐户名称。
  3. 在 OpenShift 集群中创建 secret:

    oc -n <namespace> create -f sa-token.yaml
  4. 检索服务帐户令牌:

    oc -n <namespace> get secrets ispn-xsite-sa-token -o jsonpath="{.data.token}" | base64 -d

    命令在终端中打印令牌。

  5. 复制备份 OpenShift 集群中用于部署的令牌。
  6. 登录备份 OpenShift 集群。
  7. 为备份位置添加服务帐户令牌:

    oc -n <namespace> create secret generic <token-secret> --from-literal=token=<token>

    & lt;token-secret > 是 Infinispan CR 中配置的 secret 的名称。

后续步骤

  • 在其他 OpenShift 集群上重复上述步骤。

13.2.3. 交换绑定服务帐户令牌

创建具有有限的寿命的服务帐户令牌,并将它们添加到每个备份位置的 secret 中。您必须定期刷新令牌,以防止 Data Grid Operator 丢失对远程 OpenShift 集群的访问。有关非过期令牌,请参阅交换服务帐户令牌

先决条件

  • 您已创建了一个服务帐户。

流程

  1. 登录您的 OpenShift 集群。
  2. 为服务帐户创建绑定令牌:

    oc -n <namespace> create token <service-account>
    注意

    默认情况下,服务帐户令牌在一小时内有效。使用命令选项 --duration 指定生命周期(以秒为单位)。

    命令在终端中打印令牌。

  3. 复制备份 OpenShift 集群中用于部署的令牌。
  4. 登录备份 OpenShift 集群。
  5. 为备份位置添加服务帐户令牌:

    oc -n <namespace> create secret generic <token-secret> --from-literal=token=<token>

    & lt;token-secret > 是 Infinispan CR 中配置的 secret 的名称。

  6. 在其他 OpenShift 集群上重复上述步骤。
删除已过期的令牌

当令牌过期时,删除过期的令牌 secret,然后重复这个过程来生成并交换新的令牌。

  1. 登录备份 OpenShift 集群。
  2. 删除过期的 secret < token-secret>:

    oc -n <namespace> delete secrets <token-secret>
  3. 重复这个过程来创建新令牌并生成新的 < token-secret>

13.2.4. 配置管理的跨站点连接

配置 Data Grid Operator,以使用 Data Grid 集群建立跨站点视图。

先决条件

  • 为跨站点复制确定合适的公开类型。
    如果使用 OpenShift Route,您必须添加带有 TLS 证书的密钥存储和安全跨站点连接。
  • 为每个 Data Grid 集群创建并交换 Red Hat OpenShift 服务帐户令牌。

流程

  1. 为每个 Data Grid 集群创建一个 Infinispan CR。
  2. 使用 spec.service.sites.local.name 指定本地站点的名称。
  3. 为跨站点复制配置公开类型。

    1. spec.service.sites.local.expose.type 字段的值设置为以下之一:

      • NodePort
      • LoadBalancer
      • Route
    2. (可选)使用以下字段指定端口或自定义主机名:

      • 如果使用 NodePort 服务,spec.service.sites.local.expose.nodePort
      • 如果使用 LoadBalancer 服务,则 spec.service.sites.local.expose.port
      • 如果使用 OpenShift Route,则 spec.service.sites.local.expose.routeHostName
  4. 使用 service.sites.local.maxRelayNodes 字段指定可以发送 RELAY 消息的 pod 数量。

    提示

    配置集群中的所有 pod,以发送 RELAY 消息以提高性能。如果所有 pod 直接发送备份请求,则不需要转发备份请求。

  5. 为每个 Data Grid 集群提供名称、URL 和 secret,它们充当 spec.service.sites.locations 的备份位置。
  6. 如果远程站点上的 Data Grid 集群名称或命名空间与本地站点不匹配,请使用 clusterNamenamespace 字段指定这些值。

    以下是 LONNYCInfinispan CR 定义示例:

    • LON

      apiVersion: infinispan.org/v1
      kind: Infinispan
      metadata:
        name: infinispan
      spec:
        replicas: 3
        version: <Data Grid_version>
        service:
          type: DataGrid
          sites:
            local:
              name: LON
              expose:
                type: LoadBalancer
                port: 65535
              maxRelayNodes: 1
            locations:
              - name: NYC
                clusterName: <nyc_cluster_name>
                namespace: <nyc_cluster_namespace>
                url: openshift://api.rhdg-nyc.openshift-aws.myhost.com:6443
                secretName: nyc-token
        logging:
          categories:
            org.jgroups.protocols.TCP: error
            org.jgroups.protocols.relay.RELAY2: error
    • NYC

      apiVersion: infinispan.org/v1
      kind: Infinispan
      metadata:
        name: nyc-cluster
      spec:
        replicas: 2
        version: <Data Grid_version>
        service:
          type: DataGrid
          sites:
            local:
              name: NYC
              expose:
                type: LoadBalancer
                port: 65535
              maxRelayNodes: 1
            locations:
              - name: LON
                clusterName: infinispan
                namespace: rhdg-namespace
                url: openshift://api.rhdg-lon.openshift-aws.myhost.com:6443
                secretName: lon-token
        logging:
          categories:
            org.jgroups.protocols.TCP: error
            org.jgroups.protocols.relay.RELAY2: error
      重要

      务必调整 Infinispan CR 中的日志类别,以减少 JGroups TCP 和 RELAY2 协议的日志级别。这可防止大量日志文件使用容器存储。

      spec:
        logging:
          categories:
            org.jgroups.protocols.TCP: error
            org.jgroups.protocols.relay.RELAY2: error
  7. 使用任何其他 Data Grid 服务资源配置 Infinispan CR,然后应用更改。
  8. 验证 Data Grid 集群是否形成跨站点视图。

    1. 检索 Infinispan CR。

      oc get infinispan -o yaml
    2. 检查 type: CrossSiteViewFormed 条件。

后续步骤

如果您的集群有一个跨站点视图,您可以开始向缓存添加备份位置。

Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

Theme

© 2026 Red Hat
返回顶部