13.2. マネージドのクロスサイトレプリケーション


Data Grid Operator は、異なるデータセンターで実行している Data Grid クラスターを検出し、グローバルクラスターを形成できます。

マネージドのクロスサイト接続を設定する場合には、Data Grid Operator は各 Data Grid クラスターにルーター Pod を作成します。Data Grid Pod は <cluster_name>-site サービスを使用してこれらのルーター Pod に接続し、バックアップ要求を送信します。

ルーター Pod はすべての Pod IP アドレスのレコードを保持し、RELAY メッセージヘッダーを解析し、バックアップ要求を正しい Data Grid クラスターに転送します。ルーター Pod がクラッシュすると、OpenShift が復元するまで、Data Grid Pod はいずれも、他に利用可能なルーター Pod を使用し出します。

重要

クロスサイト接続を管理するために、Data Grid Operator は Kubernetes API を使用します。各 OpenShift クラスターに、リモート Kubernetes API へのネットワークアクセスと、各バックアップクラスター用のサービスアカウントトークンが必要です。

注記

Data Grid クラスターは、Data Grid Operator が設定するすバックアップの場所が検出されるまで実行は開始しません。

13.2.1. マネージドクロスサイト接続用のサービスアカウントトークンの作成

Data Grid Operator が Data Grid クラスターを自動的に検出し、クロスサイト接続を管理できるように OpenShift クラスターでサービスアカウントトークンを生成します。

前提条件

  • すべての 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. 以下のコマンドを使用して、ビューロールをサービスアカウントに追加します。

    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 クラスターでサービスアカウントトークンを生成し、各バックアップ場所のシークレットに追加します。この手順で生成するトークンには有効期限がありません。バインドされたサービスアカウントトークンについては、バインドされたサービスアカウントトークンの交換 を参照してください。

前提条件

  • サービスアカウントを作成している。

手順

  1. OpenShift クラスターにログインします。
  2. 次のようにサービスアカウントトークンのシークレットファイルを作成します。

    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
    シークレットの名前を指定します。
    2
    サービスアカウント名を指定します。
  3. OpenShift クラスターにシークレットを作成します。

    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>

    <token-secret> は、Infinispan CR で設定したシークレットの名前です。

次のステップ

  • 他の OpenShift クラスターで直前の手順を繰り返します。

13.2.3. バインドされたサービスアカウントトークンの交換

有効期間が制限されたサービスアカウントトークンを作成し、各バックアップ場所のシークレットに追加します。Data Grid Operator がリモート OpenShift クラスターにアクセスできなくなるのを防ぐために、トークンを定期的に更新する必要があります。有効期限のないトークンについては、サービスアカウントトークンの交換 を参照してください。

前提条件

  • サービスアカウントを作成している。

手順

  1. OpenShift クラスターにログインします。
  2. サービスアカウント用のバインドされたトークンを作成します。

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

    デフォルトでは、サービスアカウントトークンの有効期間は 1 時間です。有効期間を秒単位で指定するには、コマンドオプション --duration を使用してください。

    このコマンドにより、ターミナルにトークンが出力されます。

  3. バックアップ OpenShift クラスターにデプロイメント用のトークンをコピーします。
  4. バックアップ OpenShift クラスターにログインします。
  5. バックアップの場所用のサービスアカウントトークンを追加します。

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

    <token-secret> は、Infinispan CR で設定したシークレットの名前です。

  6. 他の OpenShift クラスターでもこの手順を繰り返します。
期限切れのトークンの削除

トークンの有効期限が切れた場合は、期限切れのトークンシークレットを削除し、新しいトークンシークレットを生成して交換する手順を再度実行します。

  1. バックアップ OpenShift クラスターにログインします。
  2. 期限切れのシークレット <token-secret> を削除します。

    oc -n <namespace> delete secrets <token-secret>
  3. 手順を再度実行して新しいトークンを作成し、新しい <token-secret> を生成します。

13.2.4. マネージドのクロスサイト接続の設定

Data Grid クラスターでクロスサイトビューを確立するように Data Grid Operator を設定します。

前提条件

  • Determine a suitable expose type for cross-site replication.
    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
      • ルート
    2. オプションで、次のフィールドを使用してポートまたはカスタムホスト名を指定します。

      • NodePort サービスを使用する場合の spec.service.sites.local.expose.nodePort
      • LoadBalancer サービスを使用する場合の spec.service.sites.local.expose.port
      • OpenShift Route を使用する場合は、spec.service.sites.local.expose.routeHostName を使用します。
  4. RELAY メッセージを service.sites.local.maxRelayNodes フィールドで送信できる Pod の数を指定します。

    ヒント

    パフォーマンス向上のため RELAY メッセージを送信するようにクラスター内のすべての Pod を設定します。すべての Pod がバックアップ要求を直接送信する場合には、バックアップ要求を転送する必要はありません。

  5. spec.service.sites.locations でバックアップの場所として動作する各 Data Grid クラスターの名前、URL、およびシークレットを指定します。
  6. リモートサイトの Data Grid クラスター名または namespace がローカルサイトに一致しない場合は、それらの値を clusterName および namespace フィールドで指定します。

    以下は、LON および NYCInfinispan 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
      重要

      JGroups TCP および RELAY2 プロトコルのログレベルを下げるために、Infinispan CR のロギングカテゴリーを調整してください。これにより、多数のログファイルがコンテナーストレージを使用することを防ぎます。

      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

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。 最新の更新を見る.

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

Theme

© 2025 Red Hat, Inc.