10.2. 手动连接 Data Grid 集群

您可以指定静态网络连接详情,以使用 OpenShift 外部运行的 Data Grid 集群执行跨站点复制。在任何情况下,需要手动跨站点连接,其中运行 Data Grid 的 OpenShift 集群外访问 Kubernetes API。

您可以在相同的 Infinispan CR 中为 Data Grid 集群使用自动和手动连接。但是,您必须确保 Data Grid 集群在每个站点上以相同的方式建立连接。

先决条件

手动连接 Data Grid 集群以形成跨站点视图,需要为数据网格服务可预测的网络位置。

您需要了解创建前的网络位置,这需要您:

  • 具有您计划配置为备份位置的每个 Data Grid 集群的主机名和端口。
  • 具有在 OpenShift 上运行的任何远程 Data Grid 集群的 <cluster-name>-site 服务的主机名。
    您必须使用 &lt ;cluster-name& gt;-site 服务在 Data Grid Operator 管理和其他集群的集群间形成跨站点视图。

流程

  1. 为每个 Data Grid 集群创建一个 Infinispan CR。
  2. 使用 spec.service.sites.local.name 指定本地站点的名称。
  3. spec.service.sites.local.expose.type 字段的值设置为 NodePortLoadBalancer
  4. (可选)使用以下字段配置端口:

    • 如果使用 NodePortspec.service.sites.local.expose.nodePort
    • 如果使用 LoadBalancer,则 spec.service.sites.local.expose.port
  5. 提供作为带有 spec.service.sites.locations 的备份位置的每个 Data Grid 集群的名称和静态 URL,例如:

    • LON

      apiVersion: infinispan.org/v1
      kind: Infinispan
      metadata:
        name: example-infinispan
      spec:
        replicas: 3
        service:
          type: DataGrid
          sites:
            local:
              name: LON
              expose:
                type: LoadBalancer
                port: 65535
            locations:
              - name: NYC
                url: infinispan+xsite://infinispan-nyc.myhost.com:7900
        logging:
          categories:
            org.jgroups.protocols.TCP: error
            org.jgroups.protocols.relay.RELAY2: error
    • NYC

      apiVersion: infinispan.org/v1
      kind: Infinispan
      metadata:
        name: example-infinispan
      spec:
        replicas: 2
        service:
          type: DataGrid
          sites:
            local:
              name: NYC
              expose:
                type: LoadBalancer
                port: 65535
            locations:
              - name: LON
                url: infinispan+xsite://infinispan-lon.myhost.com
        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
  6. 使用任何其他 Data Grid 服务资源配置 Infinispan CR,然后应用更改。
  7. 验证 Data Grid 集群是否形成跨站点视图。

    1. 检索 Infinispan CR。

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

后续步骤

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

10.2.1. 手动跨站点连接的资源

本主题描述了手动维护的跨站点连接的资源。

spec:
  service:
    type: DataGrid
    sites:
      local:
        name: LON
        expose:
          type: LoadBalancer
          port: 65535
      locations:
      - name: NYC
        url: infinispan+xsite://infinispan-nyc.myhost.com:7900
字段描述

service.type: DataGrid

Data Grid 仅支持通过 Data Grid 服务集群进行跨站点复制。

service.sites.local.name

将本地站点命名为 Data Grid 集群运行的位置。

service.sites.local.expose.type

指定跨站点复制的网络服务。Data Grid 集群使用此服务来通信和执行备份操作。您可以将值设为 NodePortLoadBalancer

service.sites.local.expose.nodePort

如果您通过 NodePort 服务公开 Data Grid,请在默认范围 3000032767 中指定静态端口。如果没有指定端口,则平台会选择一个可用的端口。

service.sites.local.expose.port

如果您通过 LoadBalancer 公开 Data Grid,请为该服务指定网络端口。默认端口为 7900

service.sites.locations

为所有备份位置提供连接信息。

service.sites.locations.name

指定与 .spec.service.sites.local.name 匹配的备份位置。

service.sites.locations.url

infinispan+xsite://<hostname>:<port> 格式指定备份位置 的静态 URL。默认端口为 7900