OpenShift での Data Grid の実行
Data Grid のドキュメント
概要
第1章 Red Hat Data Grid リンクのコピーリンクがクリップボードにコピーされました!
Data Grid は、高性能の分散型インメモリーデータストアです。
- スキーマレスデータ構造
- さまざまなオブジェクトをキーと値のペアとして格納する柔軟性があります。
- グリッドベースのデータストレージ
- クラスター間でデータを分散および複製するように設計されています。
- エラスティックスケーリング
- サービスを中断することなく、ノードの数を動的に調整して要件を満たします。
- データの相互運用性
- さまざまなエンドポイントからグリッド内のデータを保存、取得、およびクエリーします。
1.1. Data Grid のドキュメント リンクのコピーリンクがクリップボードにコピーされました!
Data Grid のドキュメントは、Red Hat カスタマーポータルで入手できます。
1.2. Data Grid のダウンロード リンクのコピーリンクがクリップボードにコピーされました!
Red Hat カスタマーポータルで Data Grid Software Downloads にアクセスします。
Data Grid ソフトウェアにアクセスしてダウンロードするには、Red Hat アカウントが必要です。
第2章 Data Grid Operator のスタートガイド リンクのコピーリンクがクリップボードにコピーされました!
Data Grid Operator を使用すると、Data Grid クラスターを作成、設定、および管理できます。
前提条件
- Data Grid Operator サブスクリプションを作成します。
-
ocクライアントがある。
2.1. Infinispan カスタムリソース (CR) リンクのコピーリンクがクリップボードにコピーされました!
Data Grid Operator は、OpenShift で Data Grid クラスターを複雑なユニットとして処理できるようにするタイプ Infinispan の新しいカスタムリソース (CR) を追加します。
Infinispan CR を変更して、OpenShift で実行されている Data Grid クラスターを設定します。
Data Grid クラスターの最小の Infinispan CR は以下のとおりです。
参照資料
2.2. Data Grid クラスターの作成 リンクのコピーリンクがクリップボードにコピーされました!
Data Grid Operator を使用して、2 つ以上の Data Grid ノードのクラスターを作成します。
手順
Infinispan CR の
spec.replicasで、クラスター内の Data Grid ノードの数を指定します。たとえば、以下のように
cr_minimal.yamlファイルを作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow Infinispan CR を適用します。
oc apply -f cr_minimal.yaml
$ oc apply -f cr_minimal.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow Data Grid Operator が Data Grid ノードを作成するのを監視します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
次のステップ
replicas: の値の変更を試みてください。また、Data Grid Operator がクラスターをスケールアップまたはスケールダウンすることを監視してみてください。
2.3. Data Grid クラスターの検証 リンクのコピーリンクがクリップボードにコピーされました!
ログメッセージを確認し、Data Grid ノードがクラスター化されたビューを受信することを確認します。
手順
以下のいずれかを行います。
ログからクラスタービューを取得します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Data Grid Operator の Infinispan CR を取得します。
oc get infinispan -o yaml
$ oc get infinispan -o yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 応答は、Data Grid Pod がクラスター化されたビューを受け取ったことを示します。
conditions: - message: 'View: [example-rhdatagrid-0, example-rhdatagrid-1]' status: "True" type: wellFormedconditions: - message: 'View: [example-rhdatagrid-0, example-rhdatagrid-1]' status: "True" type: wellFormedCopy to Clipboard Copied! Toggle word wrap Toggle overflow
自動スクリプトには、wellFormed 条件で oc wait を使用します。
oc wait --for condition=wellFormed --timeout=240s infinispan/example-rhdatagrid
$ oc wait --for condition=wellFormed --timeout=240s infinispan/example-rhdatagrid
第3章 Data Grid サービスの作成 リンクのコピーリンクがクリップボードにコピーされました!
Data Grid サービスは、柔軟で堅牢なインメモリーデータストレージを提供するステートフルアプリケーションです。
3.1. キャッシュサービス リンクのコピーリンクがクリップボードにコピーされました!
キャッシュサービスは、アプリケーションの応答速度を大幅に向上させる揮発性の低レイテンシーデータストアを提供します。
キャッシュサービスノード:
- 一貫性を確保するために、データをクラスター全体に同期的に分散します。
- キャッシュエントリーの単一コピーを維持し、サイズを小さくします。
- キャッシュエントリーを off-heap に保存し、JVM の効率化のためにエビクションを使用します。
- デフォルトのパーティション処理設定とデータの一貫性を確保します。
キャッシュサービスを使用して複数のキャッシュ定義を作成できますが、デフォルト設定のコピーとしてのみ作成できます。
Infinispan CR でキャッシュサービスノードを更新するか、バージョンを更新すると、キャッシュ内のすべてのデータが失われます。
3.1.1. キャッシュ設定 リンクのコピーリンクがクリップボードにコピーされました!
キャッシュサービスノードは以下のキャッシュ設定を使用します。
- 1
- キャッシュインスタンスに default という名前を付けます。
- 2
- 同期分散を使用して、クラスター全体でデータを保存します。
- 3
- クラスター全体でキャッシュエントリーごとに 1 つのレプリカを設定します。
- 4
- キャッシュエントリーをネイティブメモリー (off-heap) にバイトとして保存します。
- 5
- 新しいエントリーを追加する際に、古いエントリーを削除して、スペースを確保します。
- 6
- セグメントの所有者が異なるパーティションにある場合でも、キャッシュエントリーの読み取りおよび書き込み操作を可能にする競合解決ストラテジーを指定します。
- 7
- Data Grid が競合を検出すると、キャッシュからエントリーを削除するマージポリシーを指定します。
3.2. Data Grid サービス リンクのコピーリンクがクリップボードにコピーされました!
Data Grid サービスは、OpenShift 用の設定可能な Data Grid サーバーディストリビューションを提供します。
- クロスサイトレプリケーションや、インデックス作成やクエリーなどの高度な機能で使用します。
Hot Rod または REST クライアントから Data Grid サービスクラスターにリモートでアクセスし、Data Grid キャッシュモードおよび設定を使用してキャッシュを動的に作成します。
注記Data Grid は、Data Grid サービスノードのデフォルトのキャッシュを提供しません。ただし、キャッシュ設定テンプレートを使用して開始できます。
3.3. Data Grid サービスの作成 リンクのコピーリンクがクリップボードにコピーされました!
.spec.service.type リソースを定義して、Data Grid Operator でキャッシュサービスと Data Grid サービスノードを作成します。
デフォルトでは、Data Grid Operator はキャッシュサービスとして設定された Data Grid クラスターを作成します。
手順
-
Infinispan CR の
spec.service.typeで Data Grid クラスターのサービスタイプを指定し、変更を適用します。
たとえば、以下のように Data Grid サービスクラスターを作成します。
spec:
...
service:
type: DataGrid
spec:
...
service:
type: DataGrid
Data Grid クラスターの作成後に .spec.service.type を変更することはできません。
たとえば、キャッシュサービスノードのクラスターを作成する場合は、サービスタイプを Data Grid サービスに変更することはできません。この場合は、別の OpenShift namespace で Data Grid サービスノードで新しいクラスターを作成する必要があります。
3.3.1. キャッシュサービスリソース リンクのコピーリンクがクリップボードにコピーされました!
3.3.2. Data Grid サービスリソース リンクのコピーリンクがクリップボードにコピーされました!
第4章 Data Grid サービスの停止および起動 リンクのコピーリンクがクリップボードにコピーされました!
Data Grid クラスターを正常にシャットダウンして、データの損失を回避します。
キャッシュ設定
キャッシュサービスおよび Data Grid サービスの両方が永続的なキャッシュ定義を永続ボリュームに保存し、クラスターの再起動後に引き続き利用できるようにします。
データ
Data Grid サービスノードは、キャッシュストアを追加すると、クラスターのシャットダウン中にすべてのキャッシュエントリーを永続ストレージに書き込むことができます。
永続ボリュームがすべてのデータを保持できるように、Data Grid サービスノードのストレージサイズを設定する必要があります。
利用可能なコンテナーストレージが Data Grid サービスノードで利用可能なメモリー量より少ない場合、Data Grid は例外をログに書き込み、シャットダウン中にデータ損失が発生します。
4.1. Data Grid クラスターの正常なシャットダウン リンクのコピーリンクがクリップボードにコピーされました!
-
replicasの値を0に設定し、変更を適用します。
spec: replicas: 0
spec:
replicas: 0
4.2. Data Grid クラスターの再起動 リンクのコピーリンクがクリップボードにコピーされました!
-
spec.replicasの値を、シャットダウンする前にクラスターに含まれていたノード数に設定します。
たとえば、6 つのノードで設定されるクラスターをシャットダウンします。クラスターを再起動する際に、以下を設定する必要があります。
spec: replicas: 6
spec:
replicas: 6
これにより、Data Grid はクラスター全体でのデータの分散を復元できます。クラスターの全ノードが実行されている場合、ノードを追加または削除できます。
第5章 コンテナー仕様の調整 リンクのコピーリンクがクリップボードにコピーされました!
CPU およびメモリーリソースを割り当て、JVM オプションを指定し、Data Grid ノードのストレージを設定できます。
5.1. JVM、CPU、およびメモリーリソース リンクのコピーリンクがクリップボードにコピーされました!
Data Grid Operator が Data Grid クラスターを作成すると、spec.container.cpu および spec.container.memory を使用して以下を行います。
-
OpenShift に Data Grid ノードを実行するのに十分な容量があることを確認します。デフォルトでは、Data Grid Operator は OpenShift スケジューラーから 512Mi の
memoryと、0.5 のCPUを要求します。 -
ノードリソースの使用を制限します。Data Grid Operator は、
cpuおよびmemoryの値をリソース制限として設定します。
ガベージコレクションのロギング
デフォルトでは、Data Grid Operator はガベージコレクション (GC) メッセージをログに記録しません。必要に応じて、以下の JVM オプションを追加して、GC メッセージを stdout に転送することができます。
extraJvmOpts: "-Xlog:gc*:stdout:time,level,tags"
extraJvmOpts: "-Xlog:gc*:stdout:time,level,tags"
5.2. ストレージリソース リンクのコピーリンクがクリップボードにコピーされました!
- 1
- Data Grid サービスノードのストレージサイズを設定します。
デフォルトでは、Data Grid Operator はキャッシュサービスと Data Grid サービスノードの両方にストレージに 1Gi を割り当てます。ストレージサイズは、Data Grid サービスノードに対してのみ設定できます。
永続性
Data Grid サービスを使用すると、データ永続性に Single File キャッシュストアを設定できます。
<persistence>
<file-store />
</persistence>
<persistence>
<file-store />
</persistence>
5.2.1. Persistent Volume Claim (永続ボリューム要求、PVC) リンクのコピーリンクがクリップボードにコピーされました!
Data Grid Operator は、永続ボリュームを /opt/datagrid/server/data にマウントします。
永続ボリューム要求 (PVC) は ReadWriteOnce (RWO) アクセスモードを使用します。
第6章 ネットワークサービスの作成 リンクのコピーリンクがクリップボードにコピーされました!
ネットワークサービスは、クライアント接続の Data Grid クラスターへのアクセスを提供します。
6.1. 内部接続向けのサービスの取得 リンクのコピーリンクがクリップボードにコピーされました!
デフォルトでは、Data Grid Operator は、OpenShift 上で実行されているクライアントから Data Grid クラスターへのアクセスを提供するサービスを作成します。
この内部サービスの名前は、Data Grid クラスターと同じになります。以下に例を示します。
metadata: name: example-rhdatagrid
metadata:
name: example-rhdatagrid
手順
内部サービスが以下のように利用できることを確認します。
oc get services NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) example-rhdatagrid ClusterIP 192.0.2.0 <none> 11222/TCP
$ oc get services NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) example-rhdatagrid ClusterIP 192.0.2.0 <none> 11222/TCPCopy to Clipboard Copied! Toggle word wrap Toggle overflow
参照資料
6.2. Data Grid の外部クライアントへの公開 リンクのコピーリンクがクリップボードにコピーされました!
外部サービスを使用して OpenShift の外部で実行されているクライアントに Data Grid クラスターを公開します。
手順
Infinispan CR の
spec.expose.typeで外部サービスタイプを指定し、変更を適用します。spec: ... expose: type: LoadBalancer nodePort: 30000spec: ... expose:1 type: LoadBalancer2 nodePort: 300003 Copy to Clipboard Copied! Toggle word wrap Toggle overflow
LoadBalancerロードバランサーサービスが外部ネットワークトラフィックを処理できる OpenShift クラスターに使用します。その後、クライアント接続にロードバランサーサービスの URL を使用できます。
暗号化されていない Hot Rod クライアント接続で Data Grid にアクセスするには、ロードバランサーサービスを使用する必要があります。
NodePort- ローカルの OpenShift クラスターに使用します。
検証
-
-externalサービスが使用できることを確認します。
oc get services | grep external NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) example-rhdatagrid-external LoadBalancer 192.0.2.24 <none> 11222/TCP
$ oc get services | grep external
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S)
example-rhdatagrid-external LoadBalancer 192.0.2.24 <none> 11222/TCP
参照資料
第7章 認証の設定 リンクのコピーリンクがクリップボードにコピーされました!
アプリケーションユーザーは、Data Grid クラスターで認証する必要があります。Data Grid Operator はデフォルトの認証情報を生成するか、独自の認証情報を追加できます。
7.1. デフォルトの認証情報 リンクのコピーリンクがクリップボードにコピーされました!
Data Grid Operator は、example-rhdatagrid-generated-secretという名前の認証シークレットに保存される base64 でエンコードされたデフォルト認証情報を生成します。
| Username | 説明 |
|---|---|
|
| デフォルトのアプリケーションユーザー。 |
|
| Data Grid クラスターと対話する内部ユーザー。 |
7.2. Retrieving Credentials リンクのコピーリンクがクリップボードにコピーされました!
Data Grid クラスターにアクセスするために、認証シークレットから認証情報を取得します。
手順
以下の例のように、認証シークレットから認証情報を取得します。
oc get secret example-rhdatagrid-generated-secret
$ oc get secret example-rhdatagrid-generated-secretCopy to Clipboard Copied! Toggle word wrap Toggle overflow Base64 でデコードされた認証情報。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
7.3. カスタム認証情報の追加 リンクのコピーリンクがクリップボードにコピーされました!
カスタム認証情報を認証シークレットに追加します。
手順
アプリケーションユーザーの認証情報および Data Grid Operator の operator ユーザーの認証情報が含まれる
identities.yamlファイルを作成します。以下に例を示します。credentials: - username: testuser password: testpassword - username: operator password: supersecretoperatorpassword
credentials: - username: testuser password: testpassword - username: operator password: supersecretoperatorpasswordCopy to Clipboard Copied! Toggle word wrap Toggle overflow 以下のように
identities.yamlを使用して認証シークレットを作成します。oc create secret generic --from-file=identities.yaml connect-secret
$ oc create secret generic --from-file=identities.yaml connect-secretCopy to Clipboard Copied! Toggle word wrap Toggle overflow Infinispan CR の
spec.security.endpointSecretNameで認証シークレットを指定し、変更を適用します。spec: ... security: endpointSecretName: connect-secretspec: ... security: endpointSecretName: connect-secret1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 認証シークレットを指定します。
第8章 Data Grid コネクションのセキュリティー確保 リンクのコピーリンクがクリップボードにコピーされました!
Red Hat OpenShift サービス証明書またはカスタム TLS 証明書で、クライアントと Data Grid ノードとの間の接続を暗号化します。
8.1. Red Hat OpenShift サービス証明書の使用 リンクのコピーリンクがクリップボードにコピーされました!
Data Grid Operator は、Red Hat OpenShift サービス CA によって署名された TLS 証明書を自動的に生成します。これらの証明書を使用して、リモートクライアント接続を暗号化できます。
手順
Infinispan CR で以下の
spec.security.endpointEncryption設定を設定し、変更を適用します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow
Data Grid Operator は、以下のように、Data Grid クラスター名の接頭辞が付けられた -cert-secret という名前のシークレットに保存します。
metadata: name: example-rhdatagrid
metadata:
name: example-rhdatagrid
上記のクラスター名は、example-rhdatagrid-cert-secret という名前のシークレットになります。
8.1.1. Red Hat OpenShift サービス証明書 リンクのコピーリンクがクリップボードにコピーされました!
Red Hat OpenShift サービス CA が利用可能な場合、Data Grid Operator は証明書 tls.crt およびキー tls.key を PEM 形式で自動的に生成します。
サービス証明書は、Data Grid クラスターの内部 DNS 名を共通名 (CN) として使用します。以下に例を示します。
Subject: CN = example-infinispan.mynamespace.svc
このため、サービス証明書は OpenShift 内でのみ全面的に信頼することができます。OpenShift の外部で実行しているクライアントとの接続を暗号化する場合は、カスタム TLS 証明書を使用する必要があります。
証明書は 1 年間有効で、有効期限が切れる前に自動的に置き換えられます。
8.1.2. Retrieving TLS Certificates リンクのコピーリンクがクリップボードにコピーされました!
暗号化シークレットから TLS 証明書を取得して、クライアントトラストストアを作成します。
-
以下のように、暗号化シークレットから
tls.crtを取得します。
oc get secret example-rhdatagrid-cert-secret \
-o jsonpath='{.data.tls\.crt}' | base64 -d > tls.crt
$ oc get secret example-rhdatagrid-cert-secret \
-o jsonpath='{.data.tls\.crt}' | base64 -d > tls.crt
8.2. カスタム TLS 証明書の使用 リンクのコピーリンクがクリップボードにコピーされました!
カスタムの PKCS12 キーストアまたは TLS 証明書/キーのペアを使用して、クライアントと Data Grid クラスターとの間の接続を暗号化します。
前提条件
キーストアまたは証明書シークレットを作成します。参照:
手順
暗号化シークレットを OpenShift namespace に追加します。以下に例を示します。
oc apply -f tls_secret.yaml
$ oc apply -f tls_secret.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow Infinispan CR の
spec.security.endpointEncryptionで暗号化シークレットを指定し、変更を適用します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow
8.2.1. 証明書シークレット リンクのコピーリンクがクリップボードにコピーされました!
8.2.2. キーストアシークレット リンクのコピーリンクがクリップボードにコピーされました!
第9章 Prometheus を使用した Data Grid の監視 リンクのコピーリンクがクリップボードにコピーされました!
Data Grid は、統計とイベントを Prometheus に提供するメトリックエンドポイントを公開します。
9.1. Prometheus の設定 リンクのコピーリンクがクリップボードにコピーされました!
Prometheus を設定して、Data Grid クラスターとの間で認証および監視できるようにします。
前提条件
- Prometheus Operator をインストールします。
- 実行中の Prometheus インスタンスを作成します。
手順
認証シークレットを Prometheus namespace に追加します。
このシークレットにより、Prometheus は Data Grid クラスターで認証できます。Data Grid 認証情報は、Data Grid Operator namespace の認証シークレットで確認できます。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Data Grid クラスターを監視するように Prometheus を設定するサービスモニターインスタンスを作成します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- サービスモニターに名前を付けます。
- 2
- Prometheus namespace を指定します。
- 3
- Data Grid クレデンシャルを持つ認証シークレットの名前を指定します。
- 4
- Data Grid クレデンシャルを持つ認証シークレットの名前を指定します。
- 5
- Data Grid エンドポイントが暗号化を使用することを指定します。TLS を使用しない場合は、
spec.endpoints.schemeを削除します。 - 6
- Data Grid 暗号化の TLS 証明書の共通名 (CN) を指定します。OpenShift サービス証明書を使用する場合、CN は Data Grid クラスターの
metadata.nameリソースと一致します。TLS を使用しない場合は、spec.endpoints.tlsConfigを削除します。 - 7
- Data Grid Operator namespace を指定します。
- 8
- Data Grid クラスターの名前を指定します。
第10章 Data Grid クラスターへの接続 リンクのコピーリンクがクリップボードにコピーされました!
REST または Hot Rod エンドポイント経由で Data Grid に接続します。その後、キャッシュ定義をリモートで作成して変更し、Data Grid クラスター全体でデータを保存できます。
このセクションの例では、$SERVICE_HOSTNAME を使用して、Data Grid クラスターへのアクセスを提供するサービスを示します。
OpenShift で実行されているクライアントは、Data Grid Operator が作成する内部サービスの名前を指定できます。
OpenShift の外部で実行されているクライアントは、外部サービスおよびプロバイダーのタイプに応じてホスト名を指定する必要があります。たとえば、AWS でロードバランサーサービスを使用する場合、サービスのホスト名は以下のようになります。
.status.loadBalancer.ingress[0].hostname
GCP または Azure では、ホスト名は以下のようになります。
.status.loadBalancer.ingress[0].ip
10.1. Data Grid REST API の呼び出し リンクのコピーリンクがクリップボードにコピーされました!
適切な HTTP クライアントで Data Grid REST API を呼び出すことができます。
便宜上、以下の例では暗号化されていない接続を使用して curl で REST API を呼び出す方法を説明します。HTTP クライアントが暗号化を使用するように設定する方法については、本書では扱いません。
手順
Data Grid ノードにリモートシェルを開きます。以下に例を示します。
oc rsh example-rhdatagrid
$ oc rsh example-rhdatagridCopy to Clipboard Copied! Toggle word wrap Toggle overflow キャッシュサービスはデフォルトのキャッシュインスタンスを提供しますが、Data Grid サービスは提供しません。Data Grid サービスクラスターにデータを保存する前に、以下の例のようにキャッシュを作成する必要があります。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow エントリーをキャッシュに配置します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow エントリーを確認します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
10.2. Hot Rod クライアントの設定 リンクのコピーリンクがクリップボードにコピーされました!
Hot Rod Java クライアントを、Data Grid クラスターに接続するように設定します。
Hot Rod クライアント ConfigurationBuilder
Hot Rod クライアントプロパティー
第11章 Data Grid ログの監視 リンクのコピーリンクがクリップボードにコピーされました!
ロギングカテゴリーを異なるメッセージレベルに設定して、Data Grid クラスターの監視、デバッグ、およびトラブルシューティングを行います。
11.1. Data Grid ロギングの設定 リンクのコピーリンクがクリップボードにコピーされました!
手順
Infinispan CR の
spec.loggingでロギング設定を指定してから、変更を適用します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注記ルートロギングカテゴリーは
org.infinispanで、デフォルトではINFOです。必要に応じて、Data Grid ノードからログを取得します。
oc logs -f $POD_NAME
$ oc logs -f $POD_NAMECopy to Clipboard Copied! Toggle word wrap Toggle overflow
11.2. ログレベル リンクのコピーリンクがクリップボードにコピーされました!
ログレベルは、メッセージの性質と重大度を示します。
| ログレベル | 説明 |
|---|---|
| trace | アプリケーションの実行状態に関する詳細情報を提供します。これは最も詳細なログレベルです。 |
| debug | 個々の要求またはアクティビティーの進捗を示します。 |
| info | ライフサイクルイベントを含むアプリケーションの全体的な進捗状況を示します。 |
| warn | エラーが発生したり、パフォーマンスが低下する可能性のある状況を示します。 |
| error | 操作またはアクティビティーの正常な実行を妨げる可能性がありますが、アプリケーションの実行は妨げないエラー状態を示します。 |
第12章 クロスサイトレプリケーションの設定 リンクのコピーリンクがクリップボードにコピーされました!
異なる場所で実行している Data Grid クラスター間のデータのバックアップ用に、クロスサイトレプリケーションを設定します。
たとえば、Data Grid Operator を使用して、ロンドン (LON) のデータセンターで Data Grid クラスターを管理します。ニューヨーク (NYC) の別のデータセンターでも、Data Grid Operator を使用して Data Grid クラスターを管理します。この場合は、LON および NYC をバックアップの場所として追加できます。
現在、クロスサイトレプリケーション機能は テクノロジープレビュー です。詳細は、Red Hat のサポートにお問い合わせください。
前提条件
- ロードバランサーサービスが OpenShift で利用可能であることを確認します。このサービスは、OpenShift Container Platform クラスターへの外部アクセスを許可します。ロードバランサーを使用した ingress クラスターの設定 を参照してください。
12.1. Data Grid クラスターおよびプロジェクトの命名 リンクのコピーリンクがクリップボードにコピーされました!
Data Grid Operator は、各サイトの Data Grid クラスターに同じクラスター名があり、一致する namespace で実行されていることを想定しています。
たとえば、LON サイトで、"my-xsite" という名前の OpenShift プロジェクトに metadata.name: mydatagrid を使用して Data Grid クラスターを作成します。この場合、NYC などの他のバックアップの場所に Data Grid クラスターを作成し、一致する namespace で同じ名前を使用する必要があります。
有効にするには、Data Grid クラスター名と OpenShift namespace を相互にミラーリングする各バックアップの場所に作成する必要があります。
12.2. サービスアカウントトークンの作成 リンクのコピーリンクがクリップボードにコピーされました!
独立した OpenShift インストール間のトラフィックは、Kubernetes API 経由で行われます。OpenShift Container Platform クラスターはトークンを使用して API で認証し、これにアクセスします。
Data Grid クラスター間でクロスサイトレプリケーションを有効にするには、各サイトの namespace にトークンを追加する必要があります。たとえば、LON には、NYC のトークンが含まれるシークレットが必要です。NYC には、LON のトークンが含まれるシークレットも必要です。
手順
各 OpenShift インスタンスにサービスアカウントを作成します。
たとえば、以下のように LON にサービスアカウントを作成します。
oc create sa lon serviceaccount/lon created
$ oc create sa lon serviceaccount/lon createdCopy to Clipboard Copied! Toggle word wrap Toggle overflow view ロールをサービスアカウントに追加します。
たとえば、Data Grid クラスターが my-xsite namespace で実行されている場合は、以下のように LON のサービスアカウントに view ロールを追加します。
oc policy add-role-to-user view system:serviceaccount:my-xsite:lon
$ oc policy add-role-to-user view system:serviceaccount:my-xsite:lonCopy to Clipboard Copied! Toggle word wrap Toggle overflow 各サービスアカウントからトークンを取得します。
以下の例は、LON のサービスアカウントトークンを示しています。
oc sa get-token lon eyJhbGciOiJSUzI1NiIsImtpZCI6IiJ9...
$ oc sa get-token lon eyJhbGciOiJSUzI1NiIsImtpZCI6IiJ9...Copy to Clipboard Copied! Toggle word wrap Toggle overflow バックアップの場所のサービスアカウントトークンを含むシークレットを作成します。
- NYC で OpenShift Container Platform にログインします。
サービスアカウントトークンを
lon-tokenシークレットに追加します。oc create secret generic lon-token --from-literal=token=eyJhbGciOiJSUzI1NiIsImtpZCI6IiJ9...
oc create secret generic lon-token --from-literal=token=eyJhbGciOiJSUzI1NiIsImtpZCI6IiJ9...Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
上記の手順を繰り返して、LON に
nyc-tokenシークレットを作成します。
サービスアカウントトークンを各バックアップの場所に追加した後に、OpenShift インスタンスは相互に認証できるため、Data Grid クラスターがクロスサイトビューを形成できます。
12.3. Data Grid クラスターへのバックアップの場所の追加 リンクのコピーリンクがクリップボードにコピーされました!
Data Grid クラスターをバックアップの場所として設定し、データを複製するために専用の JGroups トランスポートチャネルを介して通信できるようにします。
手順
必要に応じて、Infinispan CR を使用して各サイトで Data Grid クラスターを設定します。
たとえば、
lon.yamlを作成して LON およびnyc.yamlを設定して NYC を設定します。両方の設定には以下を含める必要があります。-
.spec.service.sites.localは、Data Grid クラスターのローカルサイトに名前を付けます。 -
.spec.service.sites.locationsはすべてのサイトマスターの場所を提供します。Data Grid ノードは、この情報を使用して相互に接続し、クロスサイトビューを形成します。
-
各サイトで Data Grid クラスターをインスタンス化します。以下に例を示します。
LON に Infinispan CR を適用します。
oc apply -f lon.yaml
$ oc apply -f lon.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow - NYC で OpenShift Container Platform にログインします。
NYC に Infinispan CR を適用します。
oc apply -f nyc.yaml
$ oc apply -f nyc.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
Data Grid クラスターがクロスサイトビューを形成することを確認します。
たとえば、LON で以下を実行します。
oc logs example-rhdatagrid-0 | grep x-site INFO [org.infinispan.XSITE] (jgroups-5,example-rhdatagrid-0-<id>) ISPN000439: Received new x-site view: [NYC] INFO [org.infinispan.XSITE] (jgroups-7,example-rhdatagrid-0-<id>) ISPN000439: Received new x-site view: [NYC, LON]
$ oc logs example-rhdatagrid-0 | grep x-site INFO [org.infinispan.XSITE] (jgroups-5,example-rhdatagrid-0-<id>) ISPN000439: Received new x-site view: [NYC] INFO [org.infinispan.XSITE] (jgroups-7,example-rhdatagrid-0-<id>) ISPN000439: Received new x-site view: [NYC, LON]Copy to Clipboard Copied! Toggle word wrap Toggle overflow
参照資料
12.3.1. クロスサイトレプリケーションリソース リンクのコピーリンクがクリップボードにコピーされました!
- 1
- Data Grid サービスを指定します。Data Grid は、Data Grid サービスクラスターのみでクロスサイトレプリケーションをサポートします。
- 2
- Data Grid クラスターのローカルサイトに名前を付けます。
- 3
LoadBalancerを、バックアップの場所間の通信を処理するサービスとして指定します。- 4
- すべてのバックアップの場所の接続情報を提供します。
- 5
.spec.service.sites.local.nameに一致するバックアップの場所を指定します。- 6
- バックアップの場所の Kubernetes API の URL を指定します。
- 7
- バックアップサイトのサービスアカウントトークンが含まれるシークレットを指定します。
第13章 参照資料 リンクのコピーリンクがクリップボードにコピーされました!
Data Grid Operator で作成する Data Grid クラスターの有用な情報を見つけます。
13.1. Network Services リンクのコピーリンクがクリップボードにコピーされました!
内部サービス
- Data Grid ノードが相互に検出し、クラスターを形成できるようにします。
- 同じ OpenShift namespace のクライアントから Data Grid エンドポイントへのアクセスを提供します。
| サービス | ポート | Protocol | 説明 |
|---|---|---|---|
|
|
| TCP | Data Grid エンドポイントへの内部アクセス |
|
|
| TCP | クラスターの検出 |
外部サービス
OpenShift の外部のクライアントから、または異なる namespace のクライアントから Data Grid エンドポイントへのアクセスを提供します。
Data Grid Operator を使用して外部サービスを作成する必要があります。これはデフォルトでは利用できません。
| サービス | ポート | Protocol | 説明 |
|---|---|---|---|
|
|
| TCP | Data Grid エンドポイントへの外部アクセス |
クロスサイトサービス
Data Grid が、異なる場所にあるクラスター間でデータをバックアップできるようにします。
| サービス | ポート | Protocol | 説明 |
|---|---|---|---|
|
|
| TCP | クロスサイト通信向けの JGroups RELAY2 チャネル。 |
参照資料
13.2. Data Grid Operator のアップグレード リンクのコピーリンクがクリップボードにコピーされました!
Data Grid Operator は、新しいバージョンが利用可能になると Data Grid をアップグレードします。
Data Grid クラスターをアップグレードするには、Data Grid Operator は Data Grid ノードのイメージのバージョンをチェックします。Data Grid Operator がイメージの新規バージョンが利用可能であると判断した場合、すべてのノードを正常にシャットダウンし、新しいイメージを適用してからノードを再起動します。
Red Hat OpenShift では、Operator Lifecycle Manager (OLM) は Data Grid Operator のアップグレードを有効にします。Data Grid Operator のインストール時に、Approval Strategy で Automatic または Manual のいずれかの更新を選択します。これにより、Data Grid Operator によるクラスターのアップグレード方法が決まります。詳細は、Openshift ドキュメントを参照してください。
13.3. テクノロジープレビュー リンクのコピーリンクがクリップボードにコピーされました!
テクノロジープレビュー機能は、Red Hat の実稼働環境でのサービスレベルアグリーメント (SLA) ではサポートされておらず、機能的に完全でない可能性があります。Red Hat は、実稼働環境での使用は推奨していません。これらの機能により、近日発表予定の製品機能をリリースに先駆けてご提供でき、お客様は開発プロセス時に機能をテストして、フィードバックをお寄せいただくことができます。
詳細は、テクノロジープレビュー機能のサポート範囲 を参照してください。