第10章 クロスサイトレプリケーションの設定
Data Grid クラスター間でデータをバックアップするようにクロスサイトレプリケーションを設定して、Data Grid Operator でのサービスの可用性を確保します。
10.1. Data Grid Operator を使用したクロスサイト接続の管理
1 つのデータセンターの Data Grid Operator は、Data Grid Operator が別のデータセンターで管理する Data Grid クラスターを検出できます。この検出により、Data Grid は自動的にクロスサイトビューを形成し、グローバルクラスターを作成できます。
以下の図は、Data Grid Operator がニューヨーク市 NYC のデータセンターで Data Grid クラスターを管理している例を示しています。Data Grid Operator は、ロンドンにある別のデータセンター LON でも、Data Grid クラスターを管理しています。
Data Grid Operator は、Kubernetes API を使用して、NYC と LON の OpenShift Container Platform クラスター間の安全な接続を確立します。その後、Data Grid Operator はクロスサイトレプリケーションサービスを作成し、Data Grid クラスターが複数の場所にまたがってデータをバックアップできるようにします。
各 OpenShift クラスターの Data Grid Operator には、リモート Kubernetes API へのネットワークアクセスが必要です。
自動接続を設定すると、Data Grid Operator が設定内のすべてのバックアップの場所を検出するまで、Data Grid クラスターの実行は開始されません。
各 Data Grid クラスターには、すべてのバックアップ要求を調整する 1 つのサイトマスターノードがあります。Data Grid Operator はサイトマスターノードを特定し、クロスサイトレプリケーションサービスを介したすべてのトラフィックがサイトマスターに送られるようにします。
現在のサイトマスターノードがオフラインになると、新規のノードがサイトマスターになります。Data Grid Operator は新しいサイトマスターノードを自動的に検出し、クロスサイトレプリケーションサービスを更新してバックアップ要求をノードに転送します。
10.1.1. サービスアカウントトークンの作成
バックアップの場所として動作する各 OpenShift クラスターでサービスアカウントトークンを生成します。クラスターはこれらのトークンを使用して相互に認証するため、Data Grid Operator はクロスサイトレプリケーションサービスを作成できます。
手順
- OpenShift クラスターにログインします。
サービスアカウントを作成します。
たとえば、LON でサービスアカウントを作成します。
$ oc create sa lon serviceaccount/lon created
以下のコマンドを使用して、ビューロールをサービスアカウントに追加します。
$ oc policy add-role-to-user view system:serviceaccount:<namespace>:lon
ノードポートサービスを使用してネットワーク上で Data Grid クラスターを公開する場合、
cluster-reader
ロールをサービスアカウントに追加する必要があります。$ oc adm policy add-cluster-role-to-user cluster-reader -z <service-account-name> -n <namespace>
- 他の OpenShift クラスターで直前の手順を繰り返します。
10.1.2. サービスアカウントトークンの交換
OpenShift クラスターでサービスアカウントトークンを作成したら、それらを各バックアップの場所のシークレットに追加します。たとえば、LON で NYC のサービスアカウントトークンを追加します。NYC で LON のサービスアカウントトークンを追加します。
前提条件
各サービスアカウントからトークンを取得します。
以下のコマンドを使用するか、OpenShift Web コンソールからトークンを取得します。
$ oc sa get-token lon eyJhbGciOiJSUzI1NiIsImtpZCI6IiJ9...
手順
- OpenShift クラスターにログインします。
以下のコマンドを使用して、バックアップの場所のサービスアカウントトークンを追加します。
$ oc create secret generic <token-name> --from-literal=token=<token>
たとえば、NYC で OpenShift クラスターにログインし、以下のように
lon-token
シークレットを作成します。$ oc create secret generic lon-token --from-literal=token=eyJhbGciOiJSUzI1NiIsImtpZCI6IiJ9...
- 他の OpenShift クラスターで直前の手順を繰り返します。
10.1.3. クロスサイト接続を処理するための Data Grid Operator の設定
Data Grid クラスターでクロスサイトビューを確立するように Data Grid Operator を設定します。
前提条件
- 各バックアップの場所のサービスアカウントトークンを含むシークレットを作成します。
手順
-
各 Data Grid クラスターに
Infinispan
CR を作成します。 -
ローカルサイトの名前を
spec.service.sites.local.name
で指定します。 -
spec.service.sites.local.expose.type
フィールドの値をNodePort
またはLoadBalancer
のいずれかに設定します。 必要に応じて、以下のフィールドを使用してポートを設定します。
-
spec.service.sites.local.expose.nodePort
(NodePort
を使用する場合) -
spec.service.sites.local.expose.port
(LoadBalancer
を使用する場合)
-
-
spec.service.sites.locations
でバックアップの場所として動作する各 Data Grid クラスターの名前、URL、およびシークレットを指定します。 リモートサイトの Data Grid クラスター名または namespace がローカルサイトに一致しない場合は、それらの値を
clusterName
およびnamespace
フィールドで指定します。以下は、LON および NYC の
Infinispan
CR 定義の例になります。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 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 service: type: DataGrid sites: local: name: NYC expose: type: LoadBalancer port: 65535 locations: - name: LON clusterName: example-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
-
他の Data Grid サービスリソースで
Infinispan
CR を設定してから、変更を適用します。 Data Grid クラスターがクロスサイトビューを形成することを確認します。
Infinispan
CR を取得します。$ oc get infinispan -o yaml
-
type: CrossSiteViewFormed
条件を確認します。
次のステップ
クラスターがクロスサイトビューを形成している場合は、バックアップの場所をキャッシュに追加し始めることができます。
10.1.4. 管理対象クロスサイト接続のリソース
このトピックでは、Data Grid Operator が管理するクロスサイト接続のリソースについて説明します。
spec: service: type: DataGrid sites: local: name: LON expose: type: LoadBalancer locations: - name: NYC clusterName: <nyc_cluster_name> namespace: <nyc_cluster_namespace> url: openshift://api.site-b.devcluster.openshift.com:6443 secretName: nyc-token
フィールド | 説明 |
---|---|
| Data Grid は、Data Grid サービスクラスターのみでクロスサイトレプリケーションをサポートします。 |
| Data Grid クラスターが実行されるローカルサイトに名前を付けます。 |
|
クロスサイトレプリケーションのネットワークサービスを指定します。Data Grid クラスターは、このサービスを使用して通信し、バックアップ操作を実行します。この値は |
|
|
|
|
| すべてのバックアップの場所の接続情報を提供します。 |
|
|
| バックアップの場所の Kubernetes API の URL を指定します。 |
| バックアップサイトのサービスアカウントトークンが含まれるシークレットを指定します。 |
| ローカルサイトのクラスター名と異なる場合は、バックアップの場所でクラスター名を指定します。 |
| ローカルサイトの namespace に一致しない場合は、バックアップの場所にある Data Grid クラスターの namespace を指定します。 |