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 経由で読み取り専用のアクセスを提供します。
手順
- OpenShift クラスターにログインします。
サービスアカウントを作成します。
たとえば、LON でサービスアカウントを作成します。
oc create sa -n <namespace> lon
oc create sa -n <namespace> lonCopy to Clipboard Copied! Toggle word wrap Toggle overflow 以下のコマンドを使用して、ビューロールをサービスアカウントに追加します。
oc policy add-role-to-user view -n <namespace> -z lon
oc policy add-role-to-user view -n <namespace> -z lonCopy to Clipboard Copied! Toggle word wrap Toggle overflow NodePortサービスを使用してネットワーク上で Data Grid クラスターを公開する場合、cluster-readerロールをサービスアカウントに追加する必要もあります。oc adm policy add-cluster-role-to-user cluster-reader -z lon -n <namespace>
oc adm policy add-cluster-role-to-user cluster-reader -z lon -n <namespace>Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 他の OpenShift クラスターで直前の手順を繰り返します。
- 各 OpenShift クラスターでサービスアカウントトークンを交換します。
13.2.2. サービスアカウントトークンの交換 リンクのコピーリンクがクリップボードにコピーされました!
OpenShift クラスターでサービスアカウントトークンを生成し、各バックアップ場所のシークレットに追加します。この手順で生成するトークンには有効期限がありません。バインドされたサービスアカウントトークンについては、バインドされたサービスアカウントトークンの交換 を参照してください。
前提条件
- サービスアカウントを作成している。
手順
- OpenShift クラスターにログインします。
次のようにサービスアカウントトークンのシークレットファイルを作成します。
sa-token.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow OpenShift クラスターにシークレットを作成します。
oc -n <namespace> create -f sa-token.yaml
oc -n <namespace> create -f sa-token.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow サービスアカウントトークンを取得します。
oc -n <namespace> get secrets ispn-xsite-sa-token -o jsonpath="{.data.token}" | base64 -doc -n <namespace> get secrets ispn-xsite-sa-token -o jsonpath="{.data.token}" | base64 -dCopy to Clipboard Copied! Toggle word wrap Toggle overflow このコマンドにより、ターミナルにトークンが出力されます。
- バックアップ OpenShift クラスターにデプロイメント用のトークンをコピーします。
- バックアップ OpenShift クラスターにログインします。
バックアップの場所用のサービスアカウントトークンを追加します。
oc -n <namespace> create secret generic <token-secret> --from-literal=token=<token>
oc -n <namespace> create secret generic <token-secret> --from-literal=token=<token>Copy to Clipboard Copied! Toggle word wrap Toggle overflow <token-secret>は、InfinispanCR で設定したシークレットの名前です。
次のステップ
- 他の OpenShift クラスターで直前の手順を繰り返します。
13.2.3. バインドされたサービスアカウントトークンの交換 リンクのコピーリンクがクリップボードにコピーされました!
有効期間が制限されたサービスアカウントトークンを作成し、各バックアップ場所のシークレットに追加します。Data Grid Operator がリモート OpenShift クラスターにアクセスできなくなるのを防ぐために、トークンを定期的に更新する必要があります。有効期限のないトークンについては、サービスアカウントトークンの交換 を参照してください。
前提条件
- サービスアカウントを作成している。
手順
- OpenShift クラスターにログインします。
サービスアカウント用のバインドされたトークンを作成します。
oc -n <namespace> create token <service-account>
oc -n <namespace> create token <service-account>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注記デフォルトでは、サービスアカウントトークンの有効期間は 1 時間です。有効期間を秒単位で指定するには、コマンドオプション
--durationを使用してください。このコマンドにより、ターミナルにトークンが出力されます。
- バックアップ OpenShift クラスターにデプロイメント用のトークンをコピーします。
- バックアップ OpenShift クラスターにログインします。
バックアップの場所用のサービスアカウントトークンを追加します。
oc -n <namespace> create secret generic <token-secret> --from-literal=token=<token>
oc -n <namespace> create secret generic <token-secret> --from-literal=token=<token>Copy to Clipboard Copied! Toggle word wrap Toggle overflow <token-secret>は、InfinispanCR で設定したシークレットの名前です。- 他の OpenShift クラスターでもこの手順を繰り返します。
期限切れのトークンの削除
トークンの有効期限が切れた場合は、期限切れのトークンシークレットを削除し、新しいトークンシークレットを生成して交換する手順を再度実行します。
- バックアップ OpenShift クラスターにログインします。
期限切れのシークレット
<token-secret>を削除します。oc -n <namespace> delete secrets <token-secret>
oc -n <namespace> delete secrets <token-secret>Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
手順を再度実行して新しいトークンを作成し、新しい
<token-secret>を生成します。
13.2.4. マネージドのクロスサイト接続の設定 リンクのコピーリンクがクリップボードにコピーされました!
Data Grid クラスターでクロスサイトビューを確立するように Data Grid Operator を設定します。
前提条件
-
Determine a suitable expose type for cross-site replication.
OpenShiftRouteを使用する場合は、TLS 証明書と安全なクロスサイト接続を備えたキーストアを追加する必要があります。 - 各 Data Grid クラスターに Red Hat OpenShift サービスアカウントトークンを作成して交換します。
手順
-
各 Data Grid クラスターに
InfinispanCR を作成します。 -
ローカルサイトの名前を
spec.service.sites.local.nameで指定します。 クロスサイトレプリケーションの公開タイプを設定します。
spec.service.sites.local.expose.typeフィールドの値を次のいずれかに設定します。-
NodePort -
LoadBalancer -
Route
-
オプションで、次のフィールドを使用してポートまたはカスタムホスト名を指定します。
-
NodePortサービスを使用する場合のspec.service.sites.local.expose.nodePort。 -
LoadBalancerサービスを使用する場合のspec.service.sites.local.expose.port。 -
OpenShift
Routeを使用する場合は、spec.service.sites.local.expose.routeHostNameを使用します。
-
RELAY メッセージを
service.sites.local.maxRelayNodesフィールドで送信できる Pod の数を指定します。ヒントパフォーマンス向上のため
RELAYメッセージを送信するようにクラスター内のすべての Pod を設定します。すべての Pod がバックアップ要求を直接送信する場合には、バックアップ要求を転送する必要はありません。-
spec.service.sites.locationsでバックアップの場所として動作する各 Data Grid クラスターの名前、URL、およびシークレットを指定します。 リモートサイトの Data Grid クラスター名または namespace がローカルサイトに一致しない場合は、それらの値を
clusterNameおよびnamespaceフィールドで指定します。以下は、LON および NYC の
InfinispanCR 定義の例になります。LON
Copy to Clipboard Copied! Toggle word wrap Toggle overflow NYC
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 重要JGroups TCP および RELAY2 プロトコルのログレベルを下げるために、
InfinispanCR のロギングカテゴリーを調整してください。これにより、多数のログファイルがコンテナーストレージを使用することを防ぎます。spec: logging: categories: org.jgroups.protocols.TCP: error org.jgroups.protocols.relay.RELAY2: errorspec: logging: categories: org.jgroups.protocols.TCP: error org.jgroups.protocols.relay.RELAY2: errorCopy to Clipboard Copied! Toggle word wrap Toggle overflow
-
他の Data Grid サービスリソースで
InfinispanCR を設定してから、変更を適用します。 Data Grid クラスターがクロスサイトビューを形成することを確認します。
InfinispanCR を取得します。oc get infinispan -o yaml
oc get infinispan -o yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow -
type: CrossSiteViewFormed条件を確認します。
次のステップ
クラスターがクロスサイトビューを形成している場合は、バックアップの場所をキャッシュに追加し始めることができます。