Data Grid Operator ガイド
OpenShift で Data Grid クラスターを作成する
概要
Red Hat Data Grid リンクのコピーリンクがクリップボードにコピーされました!
Data Grid は、高性能の分散型インメモリーデータストアです。
- スキーマレスデータ構造
- さまざまなオブジェクトをキーと値のペアとして格納する柔軟性があります。
- グリッドベースのデータストレージ
- クラスター間でデータを分散および複製するように設計されています。
- エラスティックスケーリング
- サービスを中断することなく、ノードの数を動的に調整して要件を満たします。
- データの相互運用性
- さまざまなエンドポイントからグリッド内のデータを保存、取得、およびクエリーします。
Data Grid のドキュメント リンクのコピーリンクがクリップボードにコピーされました!
Data Grid のドキュメントは、Red Hat カスタマーポータルで入手できます。
Data Grid のダウンロード リンクのコピーリンクがクリップボードにコピーされました!
Red Hat カスタマーポータルで Data Grid Software Downloads にアクセスします。
Data Grid ソフトウェアにアクセスしてダウンロードするには、Red Hat アカウントが必要です。
多様性を受け入れるオープンソースの強化 リンクのコピーリンクがクリップボードにコピーされました!
Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。まずは、マスター (master)、スレーブ (slave)、ブラックリスト (blacklist)、ホワイトリスト (whitelist) の 4 つの用語の置き換えから始めます。この取り組みは膨大な作業を要するため、用語の置き換えは、今後の複数のリリースにわたって段階的に実施されます。詳細は、Red Hat CTO である Chris Wright のメッセージ をご覧ください。
第1章 Data Grid Operator リンクのコピーリンクがクリップボードにコピーされました!
Data Grid Operator は、Kubernetes および Red Hat OpenShift に Data Grid をデプロイする際に、運用インテリジェンスを提供し、管理の複雑さを軽減します。
1.1. Data Grid Operator のデプロイメント リンクのコピーリンクがクリップボードにコピーされました!
Data Grid Operator のインストール時に、Red Hat OpenShift で Data Grid クラスターをデプロイし、管理するためのカスタムリソース定義 (CRD) で Kubernetes API を拡張します。
Data Grid Operator を操作するには、OpenShift ユーザーは OpenShift Web コンソールまたは oc クライアントを使用してカスタムリソース (CR) を適用します。Data Grid Operator は Infinispan CR をリッスンし、Data Grid のデプロイメントに必要な StatefulSets や Secrets などのネイティブリソースを自動的にプロビジョニングします。Data Grid Operator は、クラスター用の Pod 数やクロスサイトレプリケーション用のバックアップの場所など、Infinispan CR の仕様に応じて Data Grid サービスも設定します。
図1.1 カスタムリソース
1.2. クラスター管理 リンクのコピーリンクがクリップボードにコピーされました!
Data Grid Operator を 1 つインストールして、別々の namespace で Data Grid バージョンが異なる複数のクラスターを管理できます。ユーザーが CR を適用してデプロイメントを変更するたびに、Data Grid Operator は変更を全 Data Grid クラスターにグローバルに適用します。
図1.2 Operator 管理のクラスター
1.3. リソースの調整 リンクのコピーリンクがクリップボードにコピーされました!
Data Grid Operator は、Cache CR などのカスタムリソースと Data Grid クラスター上のリソースを照合します。
双方向の調整は、Data Grid Console、コマンドラインインターフェイス (CLI)、またはその他のクライアントアプリケーションを介して Data Grid リソースに加えた変更と CR を同期し、その逆も同様です。たとえば、Data Grid Console を介してキャッシュを作成する場合、Data Grid Operator は宣言型の Kubernetes 表現を追加します。
調整を実行するために、Data Grid Operator は、Infinispan リソースの変更を検出する各 Data Grid クラスターの listener Pod を作成します。
調整に関する注記
-
Data Grid Console、CLI、またはその他のクライアントアプリケーションを介してキャッシュを作成すると、Data Grid Operator は、Kubernetes 命名ポリシーに準拠した一意の名前で対応する
CacheCR を作成します。 -
Data Grid Operator が
listenerPod で作成する Data Grid リソースの宣言型 Kubernetes 表現は、InfinispanCR にリンクされています。InfinispanCR を削除すると、関連するリソース宣言がすべて削除されます。
第2章 クライアントプラグインとしてのネイティブ Data Grid CLI のインストール リンクのコピーリンクがクリップボードにコピーされました!
Data Grid には、ネイティブ実行可能ファイルにコンパイルされたコマンドラインインターフェイス (CLI) が含まれており、oc クライアントのプラグインとしてインストールできます。インストール後には、oc クライアントを使用して以下を行うことができます。
- Data Grid Operator サブスクリプションを作成し、Data Grid Operator のインストールを削除する。
- Data Grid クラスターを設定し、サービスを設定する。
- リモートシェルで Data Grid リソースを操作する。
2.1. ネイティブ Data Grid CLI プラグインのインストール リンクのコピーリンクがクリップボードにコピーされました!
oc クライアントのプラグインとして、ネイティブ Data Grid コマンドラインインターフェイス (CLI) をインストールします。
前提条件
-
ocクライアントがある。 - Data Grid ソフトウェアダウンロード から、ネイティブ Data Grid CLI ディストリビューションをダウンロードします。
手順
-
ネイティブ Data Grid CLI ディストリビューションの
.zipアーカイブをデプロイメントします。 ネイティブ実行ファイルをコピーするか、"kubectl-infinispan" という名前のファイルにハードリンクを作成します。以下に例を示します。
cp redhat-datagrid-cli kubectl-infinispan
cp redhat-datagrid-cli kubectl-infinispanCopy to Clipboard Copied! Toggle word wrap Toggle overflow -
kubectl-infinispanをPATHに追加します。 CLI がインストールされていることを確認します。
oc plugin list The following compatible plugins are available: /path/to/kubectl-infinispan
oc plugin list The following compatible plugins are available: /path/to/kubectl-infinispanCopy to Clipboard Copied! Toggle word wrap Toggle overflow infinispan --helpコマンドを使用して、利用可能なコマンドを表示します。oc infinispan --help
oc infinispan --helpCopy to Clipboard Copied! Toggle word wrap Toggle overflow
2.2. kubectl-infinispan コマンドリファレンス リンクのコピーリンクがクリップボードにコピーされました!
このトピックでは、クライアントの kubectl-infinispan プラグインを詳しく説明します。
--help 引数を使用して、利用可能なオプションと各コマンドの説明を表示します。
たとえば、oc infinispan create cluster --help は、Data Grid クラスター作成に関連するすべてのコマンドオプションを出力します。
| コマンド | 説明 |
|
| Data Grid Operator サブスクリプションを作成し、デフォルトでグローバル名前空間にインストールします。 |
|
| Data Grid クラスターを作成します。 |
|
| 実行中の Data Grid クラスターを表示します。 |
|
| Data Grid クラスターでインタラクティブなリモートシェルセッションを開始します。 |
|
| Data Grid クラスターを削除します。 |
|
| Data Grid Operator のインストールおよびすべての管理リソースを削除します。 |
第3章 Data Grid Operator のインストール リンクのコピーリンクがクリップボードにコピーされました!
Data Grid Operator を OpenShift namespace にインストールして、Data Grid クラスターを作成して管理します。
3.1. Red Hat OpenShift への Data Grid Operator のインストール リンクのコピーリンクがクリップボードにコピーされました!
OpenShift 上の Data Grid Operator へのサブスクリプションを作成し、さまざまな Data Grid バージョンをインストールし、、自動更新を受信できるようにします。
自動更新はまず Data Grid Operator に適用され、その後各 Data Grid ノードに適用されます。Data Grid Operator は、クラスターを一度に 1 つのノードで更新し、各ノードを正常にシャットダウンしてから、更新されたバージョンでオンラインに戻してから、次のノードに進みます。
前提条件
- OpenShift で実行している OperatorHub へのアクセスがある。OpenShift Container Platform などの一部の OpenShift 環境では、管理者の認証情報が必要になる場合があります。
- 特定の namespace にインストールする予定がある場合は、Data Grid Operator の OpenShift プロジェクトがある。
手順
- OpenShift Web コンソールにログインします。
- OperatorHub に移動します。
- Data Grid Operator を見つけ、これを選択します。
- Install を選択し、Create Operator Subscription に進みます。
サブスクリプションのオプションを指定します。
- インストールモード
- Data Grid Operator は、特定 の namespace または すべて の namespace にインストールできます。
- 更新チャネル
- Data Grid Operator 8.5.x の更新を取得します。
- 承認ストラテジー
- 8.5.x チャネルから更新を自動的にインストールするか、インストール前に承認が必要です。
- Subscribe を選択して Data Grid Operator をインストールします。
- Installed Operators に移動し、Data Grid Operator のインストールを確認します。
3.2. ネイティブ CLI プラグインを使用した Data Grid Operator のインストール リンクのコピーリンクがクリップボードにコピーされました!
ネイティブ Data Grid CLI プラグイン kubectl-infinispan を使用して Data Grid Operator をインストールします。
前提条件
-
PATHにkubectl-infinispanがあること。
手順
以下のように、
oc infinispan installコマンドを実行して Data Grid Operator サブスクリプションを作成します。oc infinispan install --channel=8.5.x --source=redhat-operators --source-namespace=openshift-marketplaceoc infinispan install --channel=8.5.x --source=redhat-operators --source-namespace=openshift-marketplaceCopy to Clipboard Copied! Toggle word wrap Toggle overflow インストールを確認します。
oc get pods -n openshift-operators | grep infinispan-operator NAME READY STATUS infinispan-operator-<id> 1/1 Running
oc get pods -n openshift-operators | grep infinispan-operator NAME READY STATUS infinispan-operator-<id> 1/1 RunningCopy to Clipboard Copied! Toggle word wrap Toggle overflow
コマンドオプションおよび説明には、oc infinispan install --help を使用します。
3.3. OpenShift クライアントを使用した Data Grid Operator のインストール リンクのコピーリンクがクリップボードにコピーされました!
OperatorHub またはネイティブ Data Grid CLI を使用してインストールする代わりに、oc クライアントを使用して、Data Grid Operator サブスクリプションを作成できます。
前提条件
-
ocクライアントがある。
手順
プロジェクトを設定します。
- Data Grid Operator のプロジェクトを作成します。
Data Grid Operator が特定の Data Grid クラスターのみを制御する必要がある場合は、そのクラスターのプロジェクトを作成します。
oc new-project ${INSTALL_NAMESPACE} oc new-project ${WATCH_NAMESPACE}oc new-project ${INSTALL_NAMESPACE}1 oc new-project ${WATCH_NAMESPACE}2 Copy to Clipboard Copied! Toggle word wrap Toggle overflow
OperatorGroupリソースを作成します。すべての Data Grid クラスターの制御
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 特定の Data Grid クラスターの制御
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Data Grid Operator のサブスクリプションを作成します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注記8.5.x チャネルから更新を手動で承認する場合は、
spec.installPlanApprovalフィールドの値をManualに変更します。インストールを確認します。
oc get pods -n ${INSTALL_NAMESPACE} NAME READY STATUS infinispan-operator-<id> 1/1 Runningoc get pods -n ${INSTALL_NAMESPACE} NAME READY STATUS infinispan-operator-<id> 1/1 RunningCopy to Clipboard Copied! Toggle word wrap Toggle overflow
第4章 Data Grid クラスターの作成 リンクのコピーリンクがクリップボードにコピーされました!
Infinispan CR または oc クライアントのネイティブ Data Grid CLI プラグインを使用して、OpenShift で実行している Data Grid クラスターを作成します。
4.1. Infinispan カスタムリソース (CR) リンクのコピーリンクがクリップボードにコピーされました!
Data Grid Operator は、OpenShift で Data Grid クラスターを複雑なユニットとして処理できるようにするタイプ Infinispan の新しいカスタムリソース (CR) を追加します。
Data Grid Operator は、Data Grid クラスターのインスタンス化および設定に使用する Infinispan カスタムリソース (CR) をリッスンし、StatefulSet や Services などの OpenShift リソースを管理します。
Infinispan CR
| フィールド | 説明 |
|---|---|
|
|
|
|
|
|
|
| Data Grid クラスターの名前を指定します。 |
|
| Data Grid クラスターの Pod 数を指定します。 |
|
| 作成する Data Grid サービスのタイプを指定します。 |
|
| クラスターの Data Grid サーバーのバージョンを指定します。 |
4.2. Data Grid クラスターの作成 リンクのコピーリンクがクリップボードにコピーされました!
ネイティブ CLI プラグイン kubectl-infinispan を使用して Data Grid クラスターを作成します。
前提条件
- Data Grid Operator をインストールしている。
-
PATHにkubectl-infinispanがあること。
手順
infinispan create clusterコマンドを実行します。たとえば、以下のように 2 つの Pod を含めて Data Grid クラスターを作成します。
oc infinispan create cluster --replicas=3 -Pservice.type=DataGrid infinispan
oc infinispan create cluster --replicas=3 -Pservice.type=DataGrid infinispanCopy to Clipboard Copied! Toggle word wrap Toggle overflow ヒント--version引数を追加して、クラスターの Data Grid バージョンを制御します。たとえば、--version=8.4.6-1とします。バージョンを指定しない場合、Data Grid Operator は、サポートされている最新の Data Grid バージョンでクラスターを作成します。Data Grid Operator が Data Grid Pod を作成するのを監視します。
oc get pods -w
oc get pods -wCopy to Clipboard Copied! Toggle word wrap Toggle overflow
次のステップ
Data Grid クラスターを作成した後に、oc を使用して Infinispan CR への変更を適用し、Data Grid サービスを設定します。
kubectl-infinispan で Data Grid クラスターを削除し、必要に応じて再作成することもできます。
oc infinispan delete cluster infinispan
oc infinispan delete cluster infinispan
4.3. Data Grid クラスタービューの検証 リンクのコピーリンクがクリップボードにコピーされました!
Data Grid Pod がクラスターを正常に形成していることを確認します。
前提条件
- Data Grid クラスターを 1 つ以上作成します。
手順
Data Grid Operator の
InfinispanCR を取得します。oc get infinispan -o yaml
oc get infinispan -o yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 応答は、以下の例のように、Data Grid Pod がクラスター化されたビューを受け取ったことを示します。
conditions: - message: 'View: [infinispan-0, infinispan-1]' status: "True" type: wellFormedconditions: - message: 'View: [infinispan-0, infinispan-1]' status: "True" type: wellFormedCopy to Clipboard Copied! Toggle word wrap Toggle overflow
自動スクリプトで以下を実行します。
oc wait --for condition=wellFormed --timeout=240s infinispan/infinispan
oc wait --for condition=wellFormed --timeout=240s infinispan/infinispan
ログからクラスタービューを取得する
次のように、Data Grid ログからクラスタービューを取得することもできます。
oc logs infinispan-0 | grep ISPN000094
oc logs infinispan-0 | grep ISPN000094
4.4. Data Grid クラスターの変更 リンクのコピーリンクがクリップボードにコピーされました!
Data Grid Operator にカスタム Infinispan CR を指定して、Data Grid クラスターを設定します。
前提条件
- Data Grid Operator をインストールしている。
- Data Grid クラスターを 1 つ以上作成します。
-
ocクライアントがある。
手順
InfinispanCR を定義する YAML ファイルを作成します。たとえば、Data Grid Pod の数を 2 に変更する
my_infinispan.yamlファイルを作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow InfinispanCR を適用します。oc apply -f my_infinispan.yaml
oc apply -f my_infinispan.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow Data Grid Operator で Data Grid Pod がスケーリングされることを確認します。
oc get pods -w
oc get pods -wCopy to Clipboard Copied! Toggle word wrap Toggle overflow
4.5. Data Grid クラスターの停止および起動 リンクのコピーリンクがクリップボードにコピーされました!
クラスターの状態を正しく維持するために、適切な順序で Data Grid Pod を停止して起動します。
Data Grid サービス Pod のクラスターは、シャットダウン前に存在していた Pod 数と同じ数で再起動する必要があります。これにより、Data Grid はクラスター全体でのデータの分散を復元できます。Data Grid Operator がクラスターを完全に再起動した後、Pod を安全に追加および削除できます。
手順
spec.replicasフィールドを0に変更し、Data Grid クラスターを停止します。spec: replicas: 0
spec: replicas: 0Copy to Clipboard Copied! Toggle word wrap Toggle overflow クラスターを再起動する前に、Pod の数が正しいことを確認してください。
oc get infinispan infinispan -o=jsonpath='{.status.replicasWantedAtRestart}'oc get infinispan infinispan -o=jsonpath='{.status.replicasWantedAtRestart}'Copy to Clipboard Copied! Toggle word wrap Toggle overflow spec.replicasフィールドを同じ Pod 数に変更して、Data Grid クラスターを再起動します。spec: replicas: 6
spec: replicas: 6Copy to Clipboard Copied! Toggle word wrap Toggle overflow
第5章 Data Grid クラスターの設定 リンクのコピーリンクがクリップボードにコピーされました!
Data Grid Operator が管理するクラスターにカスタム Data Grid 設定を適用します。
5.1. Data Grid クラスターへのカスタム設定の適用 リンクのコピーリンクがクリップボードにコピーされました!
Data Grid の設定を ConfigMap に追加して、Data Grid Operator で利用できるようにします。これにより、Data Grid Operator は、カスタム設定を Data Grid クラスターに適用できます。
Data Grid Operator は、カスタム設定に加えて、デフォルト設定を適用し、Data Grid クラスターの管理を継続できるようにします。
cache-container 要素またはフィールド外でカスタム設定を適用する場合は注意してください。カスタム設定は、エンドポイント、セキュリティーレルム、クラスタートランスポートなどの基礎となる Data Grid Server メカニズムに適用できます。この設定を変更すると、エラーが発生して Data Grid のデプロイメントでダウンタイムが生じる場合があります。
Data Grid Helm チャートを使用して、OpenShift に完全に設定可能な Data Grid Server インスタンスのクラスターをデプロイします。
前提条件
- XML、YAML、または JSON 形式の有効な Data Grid 設定がある。
手順
ConfigMapのdataフィールドのinfinispan-config.[xml|yaml|json]キーに Data Grid 設定を追加します。XML
Copy to Clipboard Copied! Toggle word wrap Toggle overflow YAML
Copy to Clipboard Copied! Toggle word wrap Toggle overflow JSON
Copy to Clipboard Copied! Toggle word wrap Toggle overflow YAML ファイルから
ConfigMapを作成します。oc apply -f cluster-config.yaml
oc apply -f cluster-config.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow InfinispanCR のspec.configMapNameフィールドでConfigMapの名前を指定し、変更を適用します。spec: configMapName: "cluster-config"
spec: configMapName: "cluster-config"Copy to Clipboard Copied! Toggle word wrap Toggle overflow
次のステップ
クラスターがすでに Data Grid Operator を実行している場合は、これを再起動して設定を適用します。ConfigMap で Data Grid 設定を変更するたびに、Data Grid Operator は更新を検出し、クラスターを再起動して変更を適用します。
5.2. カスタム Data Grid 設定 リンクのコピーリンクがクリップボードにコピーされました!
XML、YAML、または JSON 形式の ConfigMap に Data Grid の設定を追加できます。
5.2.1. キャッシュテンプレート リンクのコピーリンクがクリップボードにコピーされました!
XML
YAML
JSON
5.2.2. ロギング設定 リンクのコピーリンクがクリップボードにコピーされました!
ConfigMap の一部として Apache Log4j 設定を XML 形式で含めることもできます。
Infinispan CR の spec.logging.categories フィールドを使用して、Data Grid クラスターのログレベルを調整します。高度なファイルベースのログ機能が必要な場合にのみ、Apache Log4j 設定を追加してください。
5.3. Data Grid のカスタム設定の保護 リンクのコピーリンクがクリップボードにコピーされました!
Data Grid Server のカスタム設定をセキュアに定義および保存します。パスワードなどの機密性の高いテキスト文字列を保護するには、Data Grid Server 設定に直接ではなく、認証情報ストアにエントリーを追加します。
前提条件
- XML、YAML、または JSON 形式の有効な Data Grid 設定がある。
手順
-
CredentialStore Secretファイルを作成します。 dataフィールドを使用して、認証情報とそのエイリアスを指定します。user-secret.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Secret ファイルを適用します。
oc apply -f user-secret.yaml
oc apply -f user-secret.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow -
InfinispanCR を開いて編集します。 spec.security.credentialStoreSecretNameフィールドに、認証情報ストアシークレットの名前を指定します。Infinispan CR
spec: security: credentialStoreSecretName: user-secretspec: security: credentialStoreSecretName: user-secretCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 変更を適用します。
- Data Grid Server 設定を開いて編集します。
設定に
credential-referenceを追加します。-
credentialsをstoreの名前として指定します。 alias属性を認証情報シークレットに定義されたキーの 1 つとして指定します。Data Grid.xml
<credential-store> <credential-reference store="credentials" alias="postgres_cred"/> </credential-store><credential-store> <credential-reference store="credentials" alias="postgres_cred"/> </credential-store>Copy to Clipboard Copied! Toggle word wrap Toggle overflow
-
第6章 Data Grid クラスターのアップグレード リンクのコピーリンクがクリップボードにコピーされました!
Data Grid Operator を使用すると、ダウンタイムやデータ損失なしで、Data Grid クラスターをあるバージョンから別のバージョンにアップグレードできます。
Hot Rod ローリングアップグレードは、テクノロジープレビュー機能として利用できます。
6.1. テクノロジープレビュー機能 リンクのコピーリンクがクリップボードにコピーされました!
テクノロジープレビュー機能は、Red Hat の実稼働環境でのサービスレベルアグリーメント (SLA) ではサポートされておらず、機能的に完全でない可能性があります。
Red Hat は、テクノロジープレビュー機能の実稼働環境での使用を推奨していません。これらの機能により、近日発表予定の製品機能をリリースに先駆けてご提供でき、お客様は開発プロセス時に機能をテストして、フィードバックをお寄せいただくことができます。
詳細は、テクノロジープレビュー機能のサポート範囲 を参照してください。
6.2. Data Grid クラスターのアップグレード リンクのコピーリンクがクリップボードにコピーされました!
spec.upgrades.type フィールドは、新しいバージョンが利用可能になったときに Data Grid Operator が Data Grid クラスターをアップグレードする方法を制御します。クラスターのアップグレードには、次の 2 つのタイプがあります。
Shutdown- Data Grid クラスターをサービスのダウンタイムでアップグレードします。これはデフォルトのアップグレードタイプです。
HotRodRolling- サービスのダウンタイムなしで Data Grid クラスターをアップグレードします。
シャットダウンのアップグレード
シャットダウンのアップグレードを実行するために、Data Grid Operator は次のことを行います。
- 既存のクラスターを正常にシャットダウンします。
- 既存のクラスターを削除します。
- ターゲットバージョンで新しいクラスターを作成します。
Hot Rod ローリングのアップグレード
Hot Rod ローリングのアップグレードを実行するために、Data Grid Operator は次のことを行います。
- 既存のクラスターと並行して実行されるターゲットバージョンを使用して、新しい Data Grid クラスターを作成します。
- 既存のクラスターから新しいクラスターにデータを転送するためのリモートキャッシュストアを作成します。
- すべてのクライアントを新しいクラスターにリダイレクトします。
- すべてのデータおよびクライアント接続が新しいクラスターに転送されるときに、既存のクラスターを削除します。
永続的なキャッシュストアでパッシベーションを有効にするキャッシュを使用して、Hot Rod ローリングアップグレードを実行しないでください。アップグレードが正常に完了しない場合、Data Grid Operator がターゲットクラスターをロールバックするときに、パッシベーションによってデータが失われる可能性があります。
キャッシュ設定でパッシベーションが有効になっている場合は、シャットダウンのアップグレードを実行する必要があります。
6.3. ダウンタイムを伴う Data Grid クラスターのアップグレード リンクのコピーリンクがクリップボードにコピーされました!
ダウンタイムを伴う Data Grid クラスターをアップグレードすると、サービスが中断しますが、追加の容量は必要ありません。
前提条件
- インストールした Data Grid Operator バージョンが Data Grid ターゲットバージョンをサポートしている。
必要に応じて、アップグレード中にデータを保持するように永続キャッシュストアを設定します。
重要アップグレードプロセスの開始時に、Data Grid Operator は既存のクラスターをシャットダウンします。これにより、永続キャッシュストアを設定しない場合にデータが失われます。
手順
-
spec.versionフィールドに Data Grid のバージョン番号を指定します。 デフォルトである
spec.upgrades.typeフィールドの値としてShutdownが設定されていることを確認します。spec: version: 8.4.6-1 upgrades: type: Shutdownspec: version: 8.4.6-1 upgrades: type: ShutdownCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 必要に応じて、変更を適用します。
新しい Data Grid バージョンが利用可能になったら、spec.version フィールドの値を手動で変更して、アップグレードをトリガーする必要があります。
6.4. Data Grid クラスターの Hot Rod ローリングアップグレードの実行 リンクのコピーリンクがクリップボードにコピーされました!
Hot Rod ローリングアップグレードを実行すると、サービスを中断することなく、新しい Data Grid バージョンに移行できます。ただし、このアップグレードタイプでは追加の容量が必要であり、一時的に異なるバージョンの 2 つの Data Grid クラスターが同時に実行されます。
前提条件
- インストールした Data Grid Operator バージョンが Data Grid ターゲットバージョンをサポートしている。
手順
-
spec.versionフィールドに Data Grid のバージョン番号を指定します。 spec.upgrades.typeフィールドの値としてHotRodRollingを指定します。spec: version: 8.4.6-1 upgrades: type: HotRodRollingspec: version: 8.4.6-1 upgrades: type: HotRodRollingCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 変更を適用します。
新しい Data Grid バージョンが利用可能になったら、spec.version フィールドの値を手動で変更して、アップグレードをトリガーする必要があります。
6.4.1. Hot Rod ローリングアップグレードから失敗した場合の回復 リンクのコピーリンクがクリップボードにコピーされました!
元のクラスターがまだ存在する場合は、失敗した Hot Rod ローリングアップグレードを以前のバージョンにロールバックできます。
前提条件
- Hot Rod ローリングアップグレードが進行中で、最初の Data Grid クラスターが存在する。
手順
Hot Rod ローリングアップグレードが進行中であることを確認します。
oc get infinispan <cr_name> -o yaml
oc get infinispan <cr_name> -o yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow status.hotRodRollingUpgradeStatusフィールドが存在する必要があります。Infinispan CRのspec.versionフィールドを、status.hotRodRollingUpgradeStatusで定義されている元のクラスターバージョンに更新します。Data Grid Operator は、新しく作成されたクラスターを削除します。
第7章 Data Grid サービスの設定 リンクのコピーリンクがクリップボードにコピーされました!
Data Grid Operator を使用して、Data Grid サービス Pod のクラスターを作成します。
7.1. サービスの種別 リンクのコピーリンクがクリップボードにコピーされました!
サービスは、Data Grid Server イメージをベースにしたステートフルなアプリケーションであり、柔軟性と堅牢なインメモリーデータストレージを提供します。Data Grid Operator は、完全な設定と機能を備えた Data Grid クラスターをデプロイする DataGrid サービスタイプのみをサポートします。Cache サービスタイプはサポートされなくなりました。
クラスターの DataGrid サービスタイプを使用すると、次のことが可能になります。
- クロスサイトレプリケーションを使用して、グローバルクラスター全体のデータをバックアップします。
- 有効な設定でキャッシュを作成します。
- ファイルベースのキャッシュストアを追加して、データを永続ボリュームに保存します。
- Data Grid Query API を使用したキャッシュ間で値をクエリーします。
- 高度な Data Grid 機能を使用します。
7.2. Data Grid サービス Pod の作成 リンクのコピーリンクがクリップボードにコピーされました!
クロスサイトのレプリケーションなどの Data Grid 機能とカスタムキャッシュ定義を使用するには、Data Grid サービス Pod のクラスターを作成します。
手順
spec.service.type: DataGridを設定し、他の Data Grid サービスリソースを設定するInfinispanCR を作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 重要Pod の作成後に
spec.service.typeフィールドを変更することはできません。サービスタイプを変更するには、既存の Pod を削除してから新規の Pod を作成する必要があります。-
InfinispanCR を適用して、クラスターを作成します。
7.2.1. Data Grid サービス CR リンクのコピーリンクがクリップボードにコピーされました!
このトピックでは、Data Grid サービス Pod の Infinispan CR を説明します。
| フィールド | 説明 |
|---|---|
|
| Data Grid クラスターに名前を付けます。 |
|
|
クラスターの |
|
| クラスター内の Pod の数を指定します。 |
|
| クラスターの Data Grid サーバーのバージョンを指定します。 |
|
| 新しいバージョンが利用可能になったときに、Data Grid Operator が Data Grid クラスターをアップグレードする方法を制御します。 |
|
|
タイプ Data Grid サービスを設定します。 |
|
| Data Grid サービス Pod のストレージリソースを設定します。 |
|
| クロスサイトのレプリケーションを設定します。 |
|
| Data Grid のユーザー認証情報が含まれる認証シークレットを指定します。 |
|
| TLS 証明書およびキーストアを指定して、クライアント接続を暗号化します。 |
|
| Data Grid Pod の JVM、CPU、およびメモリーリソースを指定します。 |
|
| Data Grid のロギングカテゴリーを設定します。 |
|
| ネットワーク上で Data Grid エンドポイントを公開する方法を制御します。 |
|
|
Data Grid の設定が含まれる |
|
|
各 Data Grid クラスターに
|
|
|
|
|
| Data Grid の可用性を保証する anti-affinity ストラテジーを設定します。 |
7.3. ストレージリソースの割り当て リンクのコピーリンクがクリップボードにコピーされました!
デフォルトで、Data Grid Operator は永続ボリューム要求に 1Gi を割り当てます。ただし、シャットダウン時に Data Grid がクラスターの状態を保持できるように、Data Grid サービス Pod で利用可能なストレージの容量を調整する必要があります。
利用可能なコンテナーストレージが、利用可能なメモリー量を下回ると、データ損失が発生する可能性があります。
手順
-
ストレージリソースを
spec.service.container.storageフィールドで割り当てます。 必要に応じて、
ephemeralStorageフィールドまたは storageClassNameフィールドを設定します。注記これらのフィールドは同時に使用でいません。どちらか 1 つだけを
InfinispanCR に追加します。- 変更を適用します。
一時ストレージ
StorageClass オブジェクトの名前
| フィールド | 説明 |
|---|---|
|
| Data Grid サービス Pod のストレージの量を指定します。 |
|
|
ストレージが一時的または永続的であるかどうかを定義します。一時ストレージを使用するには、値を |
|
|
永続ボリューム要求 (PVC) に使用する |
7.3.1. 永続ボリューム要求 リンクのコピーリンクがクリップボードにコピーされました!
Data Grid Operator は永続ボリューム要求 (PVC) を作成し、コンテナーストレージを /opt/infinispan/server/data にマウントします。
キャッシュ
キャッシュを作成すると、Data Grid はクラスターの再起動後にキャッシュを使用できるように、設定を永続的に保存します。
データ
クラスターのシャットダウン中に Data Grid サービス Pod でデータを永続化させる場合は、<file-store/> 要素を Data Grid キャッシュ設定に追加して、ファイルベースのキャッシュストアを使用します。
7.4. CPU およびメモリーの割り当て リンクのコピーリンクがクリップボードにコピーされました!
Infinispan CR を使用して CPU およびメモリーリソースを Data Grid Pod に割り当てます。
Data Grid Operator は、Data Grid Pod の作成時に OpenShift スケジューラーから 1Gi のメモリーを要求します。CPU 要求はデフォルトでバインドされません。
手順
-
spec.container.cpuフィールドで CPU ユニットの数を割り当てます。 メモリーの量 (バイト単位) を
spec.container.memoryフィールドで割り当てます。cpuおよびmemoryフィールドでは<limit>:<requests>形式で値を指定します。たとえば、cpu: "2000m:1000m"は Pod を最大2000mの CPU に制限し、起動時に各 Pod に対して1000mの CPU を要求します。値を 1 つ指定すると、制限と要求の両方が設定されます。InfinispanCR を適用します。クラスターが実行されている場合には、Data Grid Operator は Data Grid Pod を再起動して変更を有効にします。
spec:
container:
cpu: "2000m:1000m"
memory: "2Gi:1Gi"
spec:
container:
cpu: "2000m:1000m"
memory: "2Gi:1Gi"
7.5. JVM オプションの設定 リンクのコピーリンクがクリップボードにコピーされました!
起動時に追加の JVM オプションを Data Grid Pod に渡します。
手順
-
InfinispanCR にファイルされたspec.containerを使用して JVM オプションを設定します。 InfinispanCR を適用します。クラスターが実行されている場合には、Data Grid Operator は Data Grid Pod を再起動して変更を有効にします。
JVM オプション
spec:
container:
extraJvmOpts: "-<option>=<value>"
routerExtraJvmOpts: "-<option>=<value>"
cliExtraJvmOpts: "-<option>=<value>"
spec:
container:
extraJvmOpts: "-<option>=<value>"
routerExtraJvmOpts: "-<option>=<value>"
cliExtraJvmOpts: "-<option>=<value>"
| フィールド | 説明 |
|---|---|
|
| Data Grid サーバーの追加の JVM オプションを指定します。 |
|
| Gossip ルーターの追加の JVM オプションを指定します。 |
|
| Data Grid CLI の追加の JVM オプションを指定します。 |
7.6. Pod プローブの設定 リンクのコピーリンクがクリップボードにコピーされました!
必要に応じて、Data Grid Pod で使用される Liveness、Readiness、および Startup プローブの値を設定します。
Data Grid Operator は、プローブ値を適切なデフォルト値に自動的に設定します。デフォルト値が要件に一致しないと判断した場合にのみ、独自の値を指定することを推奨します。
手順
spec.service.container.*Probeフィールドを使用してプローブ値を設定します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 重要特定のプローブ値に値が指定されていない場合、Data Grid Operator のデフォルトが使用されます。
InfinispanCR を適用します。クラスターが実行中の場合、変更を有効にするために、Data Grid Operator が Data Grid Pod を再起動します。
7.7. Pod の優先順位の設定 リンクのコピーリンクがクリップボードにコピーされました!
1 つ以上の優先クラスを作成して、他の Pod と比較した Pod の重要性を示します。優先度の高い Pod は、優先度の低い Pod よりも先にスケジュールされ、特にリソースが制約されている場合に、重要なワークロードを実行する Pod の優先順位が確保されます。
前提条件
-
OpenShift への
cluster-adminアクセス権がある。
手順
名前と値を指定して、
PriorityClassオブジェクトを定義します。high-priority.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 優先クラスを作成します。
oc create -f high-priority.yaml
oc create -f high-priority.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow Pod 設定で優先クラス名を参照します。
Infinispan CR
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 既存の優先クラス名を参照する必要があります。参照しない場合は、Pod が拒否されます。
- 変更を適用します。
7.8. Infinispan CR の FIPS モード リンクのコピーリンクがクリップボードにコピーされました!
Red Hat OpenShift Container Platform は、特定の連邦情報処理標準 (FIPS) コンポーネントを使用して、OpenShift クラスターが FIPS コンプライアンス監査の要件を確実に満たすようにすることができます。
OpenShift クラスターで FIPS モードを有効にした場合に、Data Grid Operator は Infinispan カスタムリソース (CR) の FIPS モードを自動的に有効にします。
クライアント証明書認証は現在、FIPS モードではサポートされていません。spec.security.endpointEncryption.clientCert を None 以外の値に設定して Infinispan CR を作成しようとすると失敗します。
7.9. ログパターンの調整 リンクのコピーリンクがクリップボードにコピーされました!
Data Grid ログトレースのログ表示をカスタマイズするには、ログパターンを更新します。カスタムパターンが設定されていない場合のデフォルトの形式は %d{HH:mm:ss,SSS} %-5p (%t) [%c] %m%throwable%n となります。
手順
InfinispanCR のspec.logging.patternフィールドを使用して、Data Grid ロギングを設定します。spec: logging: pattern: %X{address} %X{user} [%d{dd/MMM/yyyy:HH:mm:ss Z}]spec: logging: pattern: %X{address} %X{user} [%d{dd/MMM/yyyy:HH:mm:ss Z}]Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 変更を適用します。
必要に応じて、Data Grid Pod からログを取得します。
oc logs -f $POD_NAME
oc logs -f $POD_NAMECopy to Clipboard Copied! Toggle word wrap Toggle overflow
7.10. ログレベルの調整 リンクのコピーリンクがクリップボードにコピーされました!
問題をデバッグする必要がある場合は、さまざまな Data Grid のロギングカテゴリーのレベルを変更します。ログレベルを調整して特定のカテゴリーのメッセージ数を減らし、コンテナーリソースの使用を最小限に抑えることもできます。
手順
InfinispanCR のspec.logging.categoriesフィールドで、Data Grid ロギングを設定します。spec: logging: categories: org.infinispan: debug org.jgroups: debugspec: logging: categories: org.infinispan: debug org.jgroups: debugCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 変更を適用します。
必要に応じて、Data Grid Pod からログを取得します。
oc logs -f $POD_NAME
oc logs -f $POD_NAMECopy to Clipboard Copied! Toggle word wrap Toggle overflow
7.10.1. ロギングの参照 リンクのコピーリンクがクリップボードにコピーされました!
ログカテゴリーとレベルに関する情報を検索します。
| root カテゴリー | 説明 | デフォルトレベル |
|---|---|---|
|
| Data Grid メッセージ |
|
|
| クラスタートランスポートメッセージ |
|
| ログレベル | 説明 |
|---|---|
|
| アプリケーションの実行状態に関する詳細情報を提供します。これは最も詳細なログレベルです。 |
|
| 個々の要求またはアクティビティーの進捗を示します。 |
|
| ライフサイクルイベントを含むアプリケーションの全体的な進捗状況を示します。 |
|
| エラーが発生したり、パフォーマンスが低下する可能性のある状況を示します。 |
|
| 操作またはアクティビティーの正常な実行を妨げる可能性がありますが、アプリケーションの実行は妨げないエラー状態を示します。 |
ガベージコレクション (GC) メッセージ
Data Grid Operator はデフォルトで GC メッセージをログに記録しません。以下の JVM オプションを使用して、GC メッセージを stdout に転送することができます。
extraJvmOpts: "-Xlog:gc*:stdout:time,level,tags"
extraJvmOpts: "-Xlog:gc*:stdout:time,level,tags"
7.11. Data Grid リソースへのラベルとアノテーションの追加 リンクのコピーリンクがクリップボードにコピーされました!
Data Grid Operator が作成および管理する Pod とサービスに、キー/値のラベルとアノテーションを添付します。ラベルは、オブジェクト間の関係を識別して、Data Grid リソースをより適切に整理および監視するのに役立ちます。アノテーションは、クライアントアプリケーションまたはデプロイメントおよび管理ツールの任意の非識別メタデータです。
Red Hat サブスクリプションラベルは、Data Grid リソースに自動的に適用されます。
手順
-
InfinispanCR を開いて編集します。 ラベルとアノテーションを
metadata.annotationsセクションの Data Grid リソースに添付します。-
アノテーションの値を
metadata.annotationsセクションで直接定義します。 -
metadata.labelsフィールドを使用してラベルの値を定義します。
-
アノテーションの値を
-
InfinispanCR を適用します。
カスタムアノテーション
カスタムラベル
7.12. 環境変数を使用したラベルとアノテーションの追加 リンクのコピーリンクがクリップボードにコピーされました!
Data Grid Operator の環境変数を設定して、すべての Data Grid Pod とサービスに自動的に伝播するラベルとアノテーションを追加します。
手順
spec.config.env フィールドを使用して、以下のいずれかの方法で、Data Grid Operator サブスクリプションにラベルとアノテーションを追加します。
oc edit subscriptionコマンドを使用します。oc edit subscription datagrid -n openshift-operators
oc edit subscription datagrid -n openshift-operatorsCopy to Clipboard Copied! Toggle word wrap Toggle overflow Red Hat OpenShift Console を使用します。
- Operators > Installed Operators > Data Grid Operator に移動します。
- Actions メニューから Edit Subscription を選択します。
環境変数を使用したラベルとアノテーション
7.13. Data Grid Operator サブスクリプションの環境変数の定義 リンクのコピーリンクがクリップボードにコピーされました!
Data Grid Operator サブスクリプションの作成時または編集時に、サブスクリプションの環境変数を定義できます。
Red Hat OpenShift Console を使用している場合は、まず Data Grid Operator をインストールしてから、既存のサブスクリプションを編集する必要があります。
spec.config.envフィールド-
環境変数を定義するための
nameフィールドとvalueフィールドが含まれます。 ADDITIONAL_VARS変数-
環境変数の名前が JSON 配列の形式で含まれます。
ADDITIONAL_VARS変数のvalue内の環境変数は、関連付けられた Operator によって管理される各 Data Grid Server Pod に自動的に伝播します。
前提条件
- Operator Lifecycle Manager (OLM) がインストールされている。
-
ocクライアントがある。
手順
Data Grid Operator のサブスクリプション定義 YAML を作成します。
-
spec.config.envフィールドを使用して環境変数を定義します。 ADDITIONAL_VARS変数内に、JSON 配列の環境変数名を追加します。subscription-datagrid.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow たとえば、環境変数を使用してローカルタイムゾーンを設定します。
subscription-datagrid.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
-
Data Grid Operator のサブスクリプションを作成します。
oc apply -f subscription-datagrid.yaml
oc apply -f subscription-datagrid.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
検証
subscription-datagrid.yamlから環境変数を取得します。oc get subscription datagrid -n openshift-operators -o jsonpath='{.spec.config.env[*].name}'oc get subscription datagrid -n openshift-operators -o jsonpath='{.spec.config.env[*].name}'Copy to Clipboard Copied! Toggle word wrap Toggle overflow
次のステップ
oc edit subscriptionコマンドを使用して、環境変数を変更します。oc edit subscription datagrid -n openshift-operators
oc edit subscription datagrid -n openshift-operatorsCopy to Clipboard Copied! Toggle word wrap Toggle overflow -
変更を Data Grid クラスターに確実に反映するには、既存のクラスターを再作成する必要があります。既存の
InfinispanCR に関連するStatefulSetを削除して、Pod を終了します。
- Red Hat OpenShift コンソールで、Operators > Installed Operators > Data Grid Operator に移動します。Actions メニューから Edit Subscription を選択します。
第8章 認証の設定 リンクのコピーリンクがクリップボードにコピーされました!
アプリケーションユーザーには、Data Grid クラスターにアクセスするために認証情報が必要です。デフォルトの生成された認証情報を使用するか、独自の認証情報を追加することができます。
8.1. デフォルトの認証情報 リンクのコピーリンクがクリップボードにコピーされました!
Data Grid Operator は、以下のユーザーの base64 でエンコードされた認証情報を生成します。
| User | シークレット名 | 説明 |
|---|---|---|
|
|
| デフォルトのアプリケーションユーザーの認証情報。 |
|
|
| Data Grid Operator が Data Grid リソースとの対話に使用する認証情報。 |
8.2. 認証情報の取得 リンクのコピーリンクがクリップボードにコピーされました!
Data Grid クラスターにアクセスするために、認証シークレットから認証情報を取得します。
手順
認証シークレットから認証情報を取得します。
oc get secret infinispan-generated-secret
oc get secret infinispan-generated-secretCopy to Clipboard Copied! Toggle word wrap Toggle overflow Base64 でデコードされた認証情報。
oc get secret infinispan-generated-secret -o jsonpath="{.data.identities\.yaml}" | base64 --decodeoc get secret infinispan-generated-secret -o jsonpath="{.data.identities\.yaml}" | base64 --decodeCopy to Clipboard Copied! Toggle word wrap Toggle overflow
8.3. カスタムユーザーの認証情報の追加 リンクのコピーリンクがクリップボードにコピーされました!
カスタム認証情報を使用して Data Grid クラスターエンドポイントへのアクセスを設定します。
spec.security.endpointSecretName を変更すると、クラスターの再起動がトリガーされます。
手順
追加する認証情報を使用して
identities.yamlファイルを作成します。credentials: - username: myfirstusername password: changeme-one - username: mysecondusername password: changeme-two
credentials: - username: myfirstusername password: changeme-one - username: mysecondusername password: changeme-twoCopy 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 InfinispanCR のspec.security.endpointSecretNameで認証シークレットを指定し、変更を適用します。spec: security: endpointSecretName: connect-secretspec: security: endpointSecretName: connect-secretCopy to Clipboard Copied! Toggle word wrap Toggle overflow
8.4. Operator パスワードの変更 リンクのコピーリンクがクリップボードにコピーされました!
自動生成されたパスワードを使用しない場合は、operator ユーザーのパスワードを変更できます。
手順
以下のように
infinispan-generated-operator-secretシークレットのpasswordキーを更新します。oc patch secret infinispan-generated-operator-secret -p='{"stringData":{"password": "supersecretoperatorpassword"}}'oc patch secret infinispan-generated-operator-secret -p='{"stringData":{"password": "supersecretoperatorpassword"}}'Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注記generated-operator-secretシークレットのpasswordキーのみを更新する必要があります。パスワードを更新すると、Data Grid Operator はそのシークレットの他のキーを自動的に更新します。
8.5. ユーザー認証の無効化 リンクのコピーリンクがクリップボードにコピーされました!
ユーザーが Data Grid クラスターにアクセスでき、認証情報を提供せずにデータを操作できるようにします。
エンドポイントが spec.expose.type を介して OpenShift クラスターの外部からアクセスできる場合には、認証を無効にしないでください。開発環境の認証のみを無効にする必要があります。
手順
falseをInfinispanCR のspec.security.endpointAuthenticationフィールドの値として設定します。spec: security: endpointAuthentication: falsespec: security: endpointAuthentication: falseCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 変更を適用します。
第9章 クライアント証明書認証の設定 リンクのコピーリンクがクリップボードにコピーされました!
プロジェクトにクライアントトラストストアを追加し、有効な証明書を提示するクライアントからのみの接続を許可するように Data Grid を設定します。これにより、クライアントがパブリック認証局 (CA) によって信頼されることが確認され、デプロイメントのセキュリティーが向上します。
9.1. クライアント証明書認証 リンクのコピーリンクがクリップボードにコピーされました!
クライアント証明書認証は、クライアントが提示する証明書に基づいて、インバウンド接続を制限します。
以下のいずれかのストラテジーのトラストストアを使用するように Data Grid を設定できます。
検証
クライアント証明書を検証するには、署名認証局 (通常は root CA 証明書) の証明書チェーンの一部が含まれるトラストストアが Data Grid に必要となります。CA によって署名された証明書を提示するクライアントは、Data Grid に接続できます。
クライアント証明書を検証するために Validate ストラテジーを使用する場合、認証を有効にする場合は有効な Data Grid 認証情報を提供するようにクライアントも設定する必要があります。
認証
root CA 証明書に加えて、すべてのパブリッククライアント証明書が含まれるトラストストアが必要です。署名済み証明書を提示するクライアントのみが Data Grid に接続できます。
クライアント証明書を検証するために Authenticate ストラテジーを使用する場合、識別名 (DN) の一部として、証明書に有効な Data Grid 認証情報が含まれていることを確認する必要があります。
9.2. クライアント証明書認証の有効化 リンクのコピーリンクがクリップボードにコピーされました!
クライアント証明書認証を有効にするには、Validate または Authenticate ストラテジーのいずれかでトラストストアを使用するように Data Grid を設定します。
手順
InfinispanCR のspec.security.endpointEncryption.clientCertフィールドの値として、ValidateまたはAuthenticateを設定します。注記デフォルト値は
Noneです。クライアントトラストストアを含むシークレットを
spec.security.endpointEncryption.clientCertSecretNameフィールドで指定します。デフォルトでは、Data Grid Operator は
<cluster-name>-client-cert-secretという名前のトラストストアシークレットを想定します。注記シークレットは OpenShift クラスターの各
InfinispanCR インスタンスに固有のものである必要があります。InfinispanCR を削除すると、OpenShift は関連付けられたシークレットも自動的に削除します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 変更を適用します。
次のステップ
すべてのクライアント証明書が含まれるトラストストアに Data Grid Operator を提供します。または、PEM 形式で証明書を提供し、Data Grid にクライアントトラストストアを生成させることもできます。
9.3. クライアントトラストストアの提供 リンクのコピーリンクがクリップボードにコピーされました!
必要な証明書が含まれるトラストストアがある場合は、Data Grid Operator で利用可能にすることができます。
Data Grid は、PKCS12 形式のトラストストアのみをサポートします。
手順
クライアントトラストストアを含むシークレットの名前を
metadata.nameフィールドの値として指定します。注記この名前は
spec.security.endpointEncryption.clientCertSecretNameフィールドの値に一致する必要があります。-
トラストストアのパスワードを
stringData.truststore-passwordフィールドで指定します。 data.truststore.p12フィールドでトラストストアを指定します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 変更を適用します。
9.4. クライアント証明書の提供 リンクのコピーリンクがクリップボードにコピーされました!
Data Grid Operator は、PEM 形式の証明書からトラストストアを生成できます。
手順
クライアントトラストストアを含むシークレットの名前を
metadata.nameフィールドの値として指定します。注記この名前は
spec.security.endpointEncryption.clientCertSecretNameフィールドの値に一致する必要があります。-
署名証明書または CA 証明書バンドルを
data.trust.caフィールドの値として指定します。 Authenticateストラテジーを使用してクライアント ID を検証する場合は、data.trust.cert.<name>フィールドで Data Grid エンドポイントに接続可能な各クライアントの証明書を追加します。注記Data Grid Operator は、
<name>の値をトラストストアの生成時に証明書のエイリアスとして使用します。オプションで、
stringData.truststore-passwordフィールドでトラストストアのパスワードを指定します。指定しない場合、Data Grid Operator は "password" をトラストストアのパスワードとして設定します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 変更を適用します。
第10章 暗号化の設定 リンクのコピーリンクがクリップボードにコピーされました!
Red Hat OpenShift サービス証明書またはカスタム TLS 証明書で、クライアントと Data Grid Pod との間の接続を暗号化します。
10.1. Red Hat OpenShift サービス証明書を使用した暗号化 リンクのコピーリンクがクリップボードにコピーされました!
Data Grid Operator は、Red Hat OpenShift サービス CA によって署名された TLS 証明書を自動的に生成します。次に、Data Grid Operator は証明書およびキーをシークレットに格納し、それらを取得してリモートクライアントで使用できるようにします。
Red Hat OpenShift サービス CA が利用可能な場合、Data Grid Operator は以下の spec.security.endpointEncryption 設定を Infinispan CR に追加します。
| フィールド | 説明 |
|---|---|
|
| TLS 証明書を提供するサービスを指定します。 |
|
|
サービス証明書およびキーで PEM 形式のシークレットを指定します。デフォルトは |
サービス証明書は、Data Grid クラスターの内部 DNS 名を共通名 (CN) として使用します。以下に例を示します。
Subject: CN = example-infinispan.mynamespace.svc
このため、サービス証明書は OpenShift 内でのみ全面的に信頼することができます。OpenShift の外部で実行しているクライアントとの接続を暗号化する場合は、カスタム TLS 証明書を使用する必要があります。
サービス証明書は 1 年間有効で、有効期限が切れる前に自動的に置き換えられます。
10.2. TLS 証明書の取得 リンクのコピーリンクがクリップボードにコピーされました!
暗号化シークレットから TLS 証明書を取得して、クライアントトラストストアを作成します。
手順
以下のように、暗号化シークレットから
tls.crtを取得します。oc get secret infinispan-cert-secret -o jsonpath='{.data.tls\.crt}' | base64 --decode > tls.crtoc get secret infinispan-cert-secret -o jsonpath='{.data.tls\.crt}' | base64 --decode > tls.crtCopy to Clipboard Copied! Toggle word wrap Toggle overflow
10.3. 暗号化の無効化 リンクのコピーリンクがクリップボードにコピーされました!
クライアントが Data Grid との接続を確立するために TLS 証明書を必要としないように、暗号化を無効化することができます。
エンドポイントが spec.expose.type を介して OpenShift クラスターの外部からアクセスできる場合には、暗号化を無効化にしないでください。開発環境の暗号化のみを無効にする必要があります。
手順
NoneをInfinispanCR のspec.security.endpointEncryption.typeフィールドの値として設定します。spec: security: endpointEncryption: type: Nonespec: security: endpointEncryption: type: NoneCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 変更を適用します。
10.4. カスタム TLS 証明書の使用 リンクのコピーリンクがクリップボードにコピーされました!
カスタムの PKCS12 キーストアまたは TLS 証明書/キーのペアを使用して、クライアントと Data Grid クラスターとの間の接続を暗号化します。
前提条件
キーストアまたは証明書シークレットを作成します。
注記シークレットは OpenShift クラスターの各
InfinispanCR インスタンスに固有のものである必要があります。InfinispanCR を削除すると、OpenShift は関連付けられたシークレットも自動的に削除します。
手順
暗号化シークレットを OpenShift namespace に追加します。以下に例を示します。
oc apply -f tls_secret.yaml
oc apply -f tls_secret.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow InfinispanCR のspec.security.endpointEncryption.certSecretNameフィールドで暗号化シークレットを指定します。spec: security: endpointEncryption: type: Secret certSecretName: tls-secretspec: security: endpointEncryption: type: Secret certSecretName: tls-secretCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 変更を適用します。
10.4.1. カスタム暗号化シークレット リンクのコピーリンクがクリップボードにコピーされました!
キーストアまたは証明書/キーペアを追加して Data Grid の接続をセキュアに保つカスタムの暗号化シークレットには、特定のフィールドを含める必要があります。
キーストアシークレット
| フィールド | 説明 |
|---|---|
|
| キーストアのエイリアスを指定します。 |
|
| キーストアのパスワードを指定します。 |
|
| base64 でエンコードされたキーストアを追加します。 |
証明書シークレット
| フィールド | 説明 |
|---|---|
|
| base64 でエンコードされた TLS キーを追加します。 |
|
| base64 でエンコードされた TLS 証明書を追加します。 |
第11章 ユーザーロールとパーミッションの設定 リンクのコピーリンクがクリップボードにコピーされました!
ユーザーのロールベースアクセス制御 (RBAC) を設定して、Data Grid サービスへのアクセスの安全性を確保します。これには、キャッシュおよび Data Grid リソースにアクセスするパーミッションがあるように、ロールをユーザーに割り当てる必要があります。
11.1. セキュリティー承認の有効化 リンクのコピーリンクがクリップボードにコピーされました!
デフォルトでは、Infinispan CR インスタンスとの後方互換性を確保するために、承認は無効になっています。以下の手順を実行して承認を有効にし、Data Grid ユーザーのロールベースアクセス制御 (RBAC) を使用します。
手順
trueをInfinispanCR のspec.security.authorization.enabledフィールドの値として設定します。spec: security: authorization: enabled: truespec: security: authorization: enabled: trueCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 変更を適用します。
11.2. ユーザーロールとパーミッション リンクのコピーリンクがクリップボードにコピーされました!
Data Grid Operator は、さまざまなパーミッションに関連付けられたデフォルトロールのセットを提供します。
| Role | パーミッション | 説明 |
|---|---|---|
|
| すべて | Cache Manager ライフサイクルの制御など、すべてのパーミッションを持つスーパーユーザー。 |
|
| ALL_READ、ALL_WRITE、LISTEN、EXEC、MONITOR、CREATE |
|
|
| ALL_READ、ALL_WRITE、LISTEN、EXEC、MONITOR |
|
|
| ALL_READ、MONITOR |
|
|
| MONITOR | Data Grid クラスターの統計を表示できます。 |
Data Grid Operator の認証情報
Data Grid Operator は、Data Grid クラスターでの認証に使用する認証情報を生成し、内部操作を実行します。デフォルトでは、セキュリティー承認を有効にすると、Data Grid Operator の認証情報に admin ロールが自動的に割り当てられます。
11.3. ロールおよびパーミッションのユーザーへの割り当て リンクのコピーリンクがクリップボードにコピーされました!
ユーザーが Data Grid クラスターリソースにアクセスできるかどうかを制御するロールをユーザーに割り当てます。ロールには、読み取り専用のアクセスから無制限のアクセスまで、さまざまなパーミッションレベルを設定できます。
ユーザーは暗黙的に認証を取得します。たとえば、"admin" は admin パーミッションを自動的に取得します。"deployer" という名前のユーザーには、自動的に deployer ロールがあります。
手順
ロールをユーザーに割り当てる
identities.yamlファイルを作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow identities.yamlから認証シークレットを作成します。必要に応じて、既存のシークレットを最初に削除します。
oc delete secret connect-secret --ignore-not-found oc create secret generic --from-file=identities.yaml connect-secret
oc delete secret connect-secret --ignore-not-found oc create secret generic --from-file=identities.yaml connect-secretCopy to Clipboard Copied! Toggle word wrap Toggle overflow InfinispanCR のspec.security.endpointSecretNameで認証シークレットを指定し、変更を適用します。spec: security: endpointSecretName: connect-secretspec: security: endpointSecretName: connect-secretCopy to Clipboard Copied! Toggle word wrap Toggle overflow
11.4. カスタムロールおよびパーミッションの追加 リンクのコピーリンクがクリップボードにコピーされました!
カスタムロールは、パーミッションのさまざまな組み合わせで定義できます。
手順
-
InfinispanCR を開いて編集します。 カスタムロールおよびそれらに関連付けられたパーミッションを
spec.security.authorization.rolesフィールドで指定します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 変更を適用します。
第12章 Data Grid へのネットワークアクセスの設定 リンクのコピーリンクがクリップボードにコピーされました!
Data Grid Console、Data Grid コマンドラインインターフェイス (CLI)、REST API、および Hot Rod エンドポイントにアクセスできるように Data Grid クラスターを公開します。
12.1. 内部接続向けのサービスの取得 リンクのコピーリンクがクリップボードにコピーされました!
デフォルトでは、Data Grid Operator は、OpenShift 上で実行されているクライアントから Data Grid クラスターへのアクセスを提供するサービスを作成します。
この内部サービスの名前は、Data Grid クラスターと同じになります。以下に例を示します。
metadata: name: infinispan
metadata:
name: infinispan
手順
内部サービスが以下のように利用できることを確認します。
oc get services
oc get servicesCopy to Clipboard Copied! Toggle word wrap Toggle overflow
12.2. LoadBalancer サービスを使用した Data Grid の公開 リンクのコピーリンクがクリップボードにコピーされました!
LoadBalancer サービスを使用して、OpenShift 外部で実行されているクライアントで Data Grid クラスターを利用できるようにします。
暗号化されていない Hot Rod クライアント接続で Data Grid にアクセスするには、LoadBalancer サービスを使用する 必要 があります。
手順
-
InfinispanCR にspec.exposeを追加します。 -
LoadBalancerをspec.expose.typeフィールドでサービスタイプとして指定します。 オプションで、サービスが
spec.expose.portフィールドで公開されるネットワークポートを指定します。spec: expose: type: LoadBalancer port: 65535spec: expose: type: LoadBalancer port: 65535Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 変更を適用します。
-externalサービスが使用できることを確認します。oc get services | grep external
oc get services | grep externalCopy to Clipboard Copied! Toggle word wrap Toggle overflow
12.3. NodePort サービスを使用した Data Grid の公開 リンクのコピーリンクがクリップボードにコピーされました!
NodePort サービスを使用して、ネットワークで Data Grid クラスターを公開します。
手順
-
InfinispanCR にspec.exposeを追加します。 -
NodePortをspec.expose.typeフィールドでサービスタイプとして指定します。 Data Grid が
spec.expose.nodePortフィールドで公開されるポートを定義します。spec: expose: type: NodePort nodePort: 30000spec: expose: type: NodePort nodePort: 30000Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 変更を適用します。
-externalサービスが使用できることを確認します。oc get services | grep external
oc get services | grep externalCopy to Clipboard Copied! Toggle word wrap Toggle overflow
12.4. ルートを使用した Data Grid の公開 リンクのコピーリンクがクリップボードにコピーされました!
passthrough 暗号化のある OpenShift Route を使用して、Data Grid クラスターをネットワークで利用可能にします。
Hot Rod クライアントを使用して Data Grid にアクセスするには、SNI を使用して TLS を設定する必要があります。
手順
-
InfinispanCR にspec.exposeを追加します。 -
Routeをspec.expose.typeフィールドでサービスタイプとして指定します。 オプションで、
spec.expose.hostフィールドでホスト名を追加します。spec: expose: type: Route host: www.example.orgspec: expose: type: Route host: www.example.orgCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 変更を適用します。
ルートが利用可能であることを確認します。
oc get routes
oc get routesCopy to Clipboard Copied! Toggle word wrap Toggle overflow
ルート ポート
ルート を作成すると、ネットワーク接続を受け入れ、ポート 11222 でリッスンする Data Grid サービスにトラフィックをリダイレクトするネットワーク上のポートを公開します。
ルート が利用できるポートは、暗号化を使用するかどうかによって異なります。
| ポート | 説明 |
|---|---|
|
| 暗号化は無効になっています。 |
|
| 暗号化が有効になっています。 |
12.5. ネットワークサービス リンクのコピーリンクがクリップボードにコピーされました!
Data Grid Operator が作成し、管理するネットワークサービスの参照情報。
| サービス | ポート | Protocol | 説明 |
|---|---|---|---|
|
|
| TCP |
OpenShift クラスター内または OpenShift |
|
|
| TCP | Data Grid Operator が内部で使用する、OpenShift クラスター内の Data Grid エンドポイントへのアクセス。このポートは、ポート 11222 とは異なるセキュリティーレルムを使用します。このポートには、ユーザーアプリケーションからアクセスしないでください。 |
|
|
| TCP | Data Grid Pod のクラスター検出。 |
|
|
| TCP |
|
|
|
| TCP | クロスサイト通信向けの JGroups RELAY2 チャネル。 |
Data Grid コンソールへのアクセスは、OpenShift サービス経由またはポート 11222 を公開する OpenShift Route 経由でのみ行ってください。
第13章 クロスサイトレプリケーションの設定 リンクのコピーリンクがクリップボードにコピーされました!
地理的に分散したクラスターを統合サービスとして設定し、Data Grid Operator で可用性を確保します。
以下を使用して、クラスターがクロスサイトレプリケーションを実行するように設定できます。
- Data Grid Operator が管理する接続。
- 設定および管理する接続。
同じ Infinispan CR で、Data Grid クラスターの管理接続と手動接続の両方を使用できます。Data Grid クラスターが各サイトで同じ方法を使用して接続を確立できるようにする必要があります。
13.1. クロスサイトレプリケーションの公開タイプ リンクのコピーリンクがクリップボードにコピーされました!
NodePort サービス、LoadBalancer サービス、または OpenShift Route を使用して、Data Grid クラスター間のバックアップ操作のネットワークトラフィックを処理できます。クロスサイトレプリケーションの設定を開始する前に、Red Hat OpenShift クラスターで利用可能な公開タイプを判断する必要があります。場合によっては、公開タイプを設定する前に管理者がサービスをプロビジョニングしなければならない場合があります。
NodePort
NodePort は、OpenShift クラスター外で利用可能な IP アドレスの 30000 から 32767 の範囲の静的ポートでネットワークトラフィックを受け入れるサービスです。
NodePort をクロスサイトレプリケーションの公開タイプとして使用するには、管理者は各 OpenShift ノードの外部 IP アドレスをプロビジョニングする必要があります。ほとんどの場合、管理者は OpenShift ノードの外部 IP アドレスの DNS ルーティングを設定する必要もあります。
LoadBalancer
LoadBalancer は、ネットワークトラフィックを OpenShift クラスターの正しいノードに転送するサービスです。
LoadBalancer をクロスサイトレプリケーションの公開タイプとして使用できるかどうかは、ホストプラットフォームによって異なります。AWS はネットワークロードバランサー (NLB) をサポートしますが、他のクラウドプラットフォームには対応しません。LoadBalancer サービスを使用するには、管理者はまず NLB がサポートする Ingress コントローラーを作成する必要があります。
Route
OpenShift Route を使用すると、Data Grid クラスターはパブリックセキュア URL を介して相互に接続できます。
Data Grid は、TLS と SNI ヘッダーを使用して、OpenShift Route を介してクラスター間でバックアップリクエストを送信します。これを行うには、Data Grid がクロスサイトレプリケーションのためにネットワークトラフィックを暗号化できるように、TLS 証明書を使用してキーストアを追加する必要があります。
クロスサイトレプリケーションの公開タイプとして Route を指定すると、Data Grid Operator は、管理する Data Grid クラスターごとに TLS パススルー暗号化を使用してルートを作成します。Route のホスト名を指定することはできますが、作成済みの Route を指定することはできません。
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条件を確認します。
次のステップ
クラスターがクロスサイトビューを形成している場合は、バックアップの場所をキャッシュに追加し始めることができます。
13.3. クロスサイト接続の手動設定 リンクのコピーリンクがクリップボードにコピーされました!
静的ネットワーク接続の詳細を指定して、OpenShift の外部で実行される Data Grid クラスターでクロスサイトレプリケーションを実行できます。Data Grid が実行される OpenShift クラスターの外部で Kubernetes API にアクセスできないというシナリオでは、手動でのクロスサイト接続が必要です。
前提条件
-
Determine a suitable expose type for cross-site replication.
OpenShiftRouteを使用する場合は、TLS 証明書と安全なクロスサイト接続を備えたキーストアを追加する必要があります。 各 Data Grid クラスターおよび各
<cluster-name>-siteサービスの正しいホスト名とポートがあることを確認します。Data Grid クラスターを手動で接続してクロスサイトビューを形成するには、Data Grid サービスで予測可能なネットワークの場所が必要です。つまり、作成前にネットワークの場所を把握しておく必要があります。
手順
-
各 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を使用します。
-
spec.service.sites.locationsでバックアップの場所として動作する各 Data Grid クラスターの名前と静的 URL を指定します。以下に例を示します。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条件を確認します。
次のステップ
クラスターがクロスサイトビューを形成している場合は、バックアップの場所をキャッシュに追加し始めることができます。
13.4. Gossip ルーター Pod への CPU とメモリーの割り当て リンクのコピーリンクがクリップボードにコピーされました!
CPU とメモリーリソースを Data Grid Gossip ルーターに割り当てます。
前提条件
-
Gossip ルーターが有効である。
service.sites.local.discovery.launchGossipRouterプロパティーは、デフォルト値であるtrueに設定する必要があります。
手順
-
service.sites.local.discovery.cpuフィールドを使用して CPU ユニットの数を割り当てます。 service.sites.local.discovery.memoryフィールドを使用して、メモリー量をバイト単位で割り当てます。cpuおよびmemoryフィールドでは<limit>:<requests>形式で値を指定します。たとえば、cpu: "2000m:1000m"は Pod を最大2000mの CPU に制限し、起動時に各 Pod に対して1000mの CPU を要求します。値を 1 つ指定すると、制限と要求の両方が設定されます。-
InfinispanCR を適用します。
13.5. ローカル Gossip ルーターとサービスの無効化 リンクのコピーリンクがクリップボードにコピーされました!
Data Grid Operator は各サイトで Gossip ルーターを開始しますが、Data Grid クラスターメンバー間のトラフィックを管理するために必要な Gossip ルーターは 1 つだけです。リソースを節約するために、追加の Gossip ルーターを無効にすることができます。
たとえば、LON サイトと NYC サイトに Data Grid クラスターがあるとします。次の手順は、LON サイトで Gossip ルーターを無効にし、Gossip ルーターが有効になっている NYC に接続する方法を示しています。
手順
-
各 Data Grid クラスターに
InfinispanCR を作成します。 -
spec.service.sites.local.nameフィールドでローカルサイトの名前を指定します。 -
LON クラスターの場合、
spec.service.sites.local.discovery.launchGossipRouterフィールドの値としてfalseを設定します。 -
LON クラスターの場合は、
spec.service.sites.locations.urlでURLを指定して NYC に接続します。 NYC 設定では、
spec.service.sites.locations.urlを指定しないでください。LON
Copy to Clipboard Copied! Toggle word wrap Toggle overflow NYC
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
3 つ以上のサイトがある場合、Data Grid では、すべてのリモートサイトで Gossip ルーターを有効にしておくことを推奨します。複数の Gossip ルーターがあり、そのうちの 1 つが使用できなくなった場合、残りのルーターは引き続きメッセージを交換します。単一の Gossip ルーターが定義されていて、それが使用できなくなると、リモートサイト間の接続が切断されます。
次のステップ
クラスターがクロスサイトビューを形成している場合は、バックアップの場所をキャッシュに追加し始めることができます。
13.6. クロスサイトレプリケーションを設定するためのリソース リンクのコピーリンクがクリップボードにコピーされました!
以下の表は、クロスサイトリソースのフィールドと説明を示しています。
| フィールド | 説明 |
|---|---|
|
| Data Grid は、Data Grid サービスクラスターのみでクロスサイトレプリケーションをサポートします。 |
| フィールド | 説明 |
|---|---|
|
| Data Grid クラスターが実行されるローカルサイトに名前を付けます。 |
|
|
クロスサイトレプリケーション用に RELAY メッセージを送信できる Pod の最大数を指定します。デフォルト値は |
|
|
|
|
|
メモリー量をバイト単位で割り当てます。 |
|
|
CPU ユニットの数を割り当てます。 |
|
|
クロスサイトレプリケーションのネットワークサービスを指定します。Data Grid クラスターは、このサービスを使用して通信し、バックアップ操作を実行します。値は、 |
|
|
|
|
|
|
|
|
OpenShift |
| フィールド | 説明 |
|---|---|
|
| すべてのバックアップの場所の接続情報を提供します。 |
|
|
|
|
| マネージド接続の Kubernetes API の URL または手動接続の静的 URL を指定します。
静的ホスト名とポートに |
|
| バックアップサイトのサービスアカウントトークンが含まれるシークレットを指定します。 |
|
| ローカルサイトのクラスター名と異なる場合は、バックアップの場所でクラスター名を指定します。 |
|
| ローカルサイトの namespace に一致しない場合は、バックアップの場所にある Data Grid クラスターの namespace を指定します。 |
マネージドのクロスサイト接続
手動によるクロスサイト接続
13.7. クロスサイト接続のセキュリティー保護 リンクのコピーリンクがクリップボードにコピーされました!
キーストアとトラストストアを追加して、Data Grid クラスターがクロスサイトレプリケーショントラフィックを保護できるようにします。
クロスサイトレプリケーションの公開タイプとして OpenShift Route を使用するには、キーストアを追加する必要があります。公開タイプとして NodePort または LoadBalancer を使用する場合、クロスサイト接続の保護はオプションです。
クロスサイトレプリケーションは、OpenShift CA サービスをサポートしていません。独自の証明書を指定する必要があります。
前提条件
Data Grid が使用して RELAY メッセージの暗号化と復号化ができる PKCS12 キーストアを用意する。
クロスサイト接続のセキュリティーを保護するには、Pod およびルーター Pod をリレーするためのキーストアを提供する必要があります。
リレー Pod とルーター Pod で同じキーストアにすることも、それぞれに個別のキーストアを提供することもできます。
各 Data Grid クラスターに同じキーストアを使用するか、各クラスターに一意のキーストアを使用することもできます。- Data Grid リレー Pod とルーター Pod の公開証明書を検証する証明書チェーンまたはルート CA 証明書の一部を含む PKCS12 トラストストアがある。
手順
クロスサイト暗号化シークレットを作成します。
- キーストアシークレットを作成します。
- トラストストアシークレットを作成します。
-
各 Data Grid クラスターの
InfinispanCR を変更し、encryption.transportKeyStore.secretNameおよびencryption.routerKeyStore.secretNameフィールドのシークレット名を指定します。 必要に応じて RELAY メッセージを暗号化するように他のフィールドを設定して変更を適用します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
13.7.1. サイト間の暗号化を設定するためのリソース リンクのコピーリンクがクリップボードにコピーされました!
以下の表は、クロスサイト接続を暗号化するフィールドおよび説明を示しています。
| フィールド | 説明 |
|---|---|
|
|
クロスサイト接続に使用する TLS プロトコルを指定します。デフォルト値は |
|
| リレー Pod のキーストアシークレットを設定します。 |
|
| ルーター Pod のキーストアシークレットを設定します。 |
|
| リレー Pod とルーター Pod のトラストストアシークレットを設定します。 |
| フィールド | 説明 |
|---|---|
|
| リレー Pod が RELAY メッセージの暗号化および復号化に使用できるキーストアを含むシークレットを指定します。このフィールドは必須です。 |
|
|
オプションで、キーストアの証明書のエイリアスを指定します。デフォルト値は |
|
|
オプションでキーストアのファイル名を指定します。デフォルト値は |
| フィールド | 説明 |
|---|---|
|
| ルーター Pod が RELAY メッセージの暗号化および復号化に使用できるキーストアを含むシークレットを指定します。このフィールドは必須です。 |
|
|
オプションで、キーストアの証明書のエイリアスを指定します。デフォルト値は |
|
|
オプションでキーストアのファイル名を指定します。デフォルト値は |
| フィールド | 説明 |
|---|---|
|
| リレー Pod とルーター Pod の公開証明書を検証するためのトラストストアを含むシークレットを指定します。このフィールドは必須です。 |
|
|
オプションでトラストストアのファイル名を指定します。デフォルト値は |
13.7.2. クロスサイト暗号化シークレット リンクのコピーリンクがクリップボードにコピーされました!
クロスサイトレプリケーション暗号化シークレットは、クロスサイト接続を保護するためのキーストアとトラストストアを追加します。
クロスサイト暗号化シークレット
| フィールド | 説明 |
|---|---|
|
| キーストアまたはトラストストアのパスワードを指定します。 |
|
|
オプションでキーストアまたはトラストストアタイプを指定します。デフォルト値は |
|
| base64 でエンコードされたキーストアまたはトラストストアを追加します。 |
13.8. 同じ OpenShift クラスターでのサイトの設定 リンクのコピーリンクがクリップボードにコピーされました!
評価およびデモの目的で、同じ OpenShift クラスター内の Pod 間でバックアップするように Data Grid を設定できます。
ClusterIP をクロスサイトレプリケーションの公開タイプとしての使用は、デモのみを目的としています。この公開タイプのみを使用して、ラップトップまたはその性質のある一時的な概念実証のデプロイメントを実行することが推奨されます。
手順
-
各 Data Grid クラスターに
InfinispanCR を作成します。 -
ローカルサイトの名前を
spec.service.sites.local.nameで指定します。 -
ClusterIPをspec.service.sites.local.expose.typeフィールドの値として設定します。 -
spec.service.sites.locations.clusterNameでバックアップの場所として動作する Data Grid クラスターの名前を指定します。 両方の Data Grid クラスターの名前が同じである場合は、
spec.service.sites.locations.namespaceでバックアップの場所の namespace を指定します。Copy 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条件を確認します。
第14章 Data Grid サービスの監視 リンクのコピーリンクがクリップボードにコピーされました!
Data Grid は、クラスターの状態を監視および視覚化するために Prometheus および Grafana が使用できるメトリックを公開します。
このドキュメントでは、OpenShift Container Platform でモニタリングを設定する方法を説明します。コミュニティー Prometheus デプロイメントを使用している場合は、これらの手順は一般的なガイドとして役に立ちます。ただし、インストールおよび使用方法は、Prometheus のドキュメントを参照してください。
Prometheus Operator のドキュメントを参照してください。
14.1. Prometheus サービスモニターの作成 リンクのコピーリンクがクリップボードにコピーされました!
Data Grid Operator は、Data Grid クラスターからメトリックをスクレープする Prometheus ServiceMonitor を自動的に作成します。
手順
OpenShift Container Platform で、ユーザー定義プロジェクトのモニタリングを有効にします。
Operator がモニタリングアノテーションが true に設定されている Infinispan CR を検出すると、Data Grid Operator は以下を行います。
-
<cluster_name>-monitorという名前のServiceMonitorを作成します。 値がまだ明示的に設定されていない場合は、
infinispan.org/monitoring: 'true'アノテーションをInfinispanCR メタデータに追加します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow
Data Grid で認証するために、Prometheus は Operator の認証情報を使用します。
検証
Prometheus が Data Grid メトリックを以下のようにスクレープすることを確認できます。
- OpenShift Web コンソールで、</> Developer パースペクティブを選択してから、Monitoring を選択します。
- Data Grid クラスターが実行される namespace の Dashboard タブを開きます。
Metrics タブを開き、以下のような Data Grid メトリクスをクエリーできることを確認します。
vendor_cache_manager_default_cluster_size
vendor_cache_manager_default_cluster_sizeCopy to Clipboard Copied! Toggle word wrap Toggle overflow
14.1.1. Prometheus サービスモニターの無効化 リンクのコピーリンクがクリップボードにコピーされました!
Prometheus が Data Grid クラスターのメトリックをスクレープしない場合は、ServiceMonitor を無効にできます。
手順
'false'をInfinispanCR のinfinispan.org/monitoringアノテーションの値として設定します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 変更を適用します。
14.1.2. サービスモニターターゲットラベルの設定 リンクのコピーリンクがクリップボードにコピーされました!
ServiceMonitor の spec.targetLabels フィールドを使用して、基礎となるメトリクスにサービスラベルを伝播するように、生成された ServiceMonitor を設定できます。サービスラベルを使用して、監視対象のエンドポイントから収集されたメトリクスをフィルタリングおよび集計します。
手順
-
InfinispanCR でinfinispan.org/targetLabelsアノテーションを設定して、サービスに適用するラベルを定義します。 InfinispanCR のinfinispan.org/serviceMonitorTargetLabelsアノテーションを使用して、メトリクスに必要なラベルのコンマ区切りのリストを指定します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 変更を適用します。
14.2. Grafana Operator のインストール リンクのコピーリンクがクリップボードにコピーされました!
各種ニーズに対応するために、Data Grid Operator はコミュニティーバージョンの Grafana Operator と統合し、Data Grid サービスのダッシュボードを作成します。
Grafana が OpenShift ユーザーワークロードのモニタリングと統合されるまでの唯一のオプションは、コミュニティーバージョンに依存することです。OperatorHub から OpenShift に Grafana Operator をインストールすることができます。また、alpha チャネルのサブスクリプションを作成する必要があります。
ただし、すべてのコミュニティー Operator のポリシーと同様に、Red Hat は Grafana Operator を認定しておらず、Data Grid との組み合わせに対するサポートを提供していません。Grafana Operator をインストールすると、続行する前にコミュニティーバージョンに関する警告を確認するように求められます。
14.3. Grafana データソースの作成 リンクのコピーリンクがクリップボードにコピーされました!
Grafana ダッシュボードで Data Grid メトリックを視覚化できるように GrafanaDatasource CR を作成します。
前提条件
-
ocクライアントがある。 -
OpenShift Container Platform への
cluster-adminアクセスがあること。 - OpenShift Container Platform で、ユーザー定義プロジェクトのモニタリングを有効にします。
-
alpha チャネルから Grafana Operator をインストールし、
GrafanaCR を作成します。
手順
Grafana が Prometheus から Data Grid メトリックを読み取りできるようにする
ServiceAccountを作成します。apiVersion: v1 kind: ServiceAccount metadata: name: infinispan-monitoring
apiVersion: v1 kind: ServiceAccount metadata: name: infinispan-monitoringCopy to Clipboard Copied! Toggle word wrap Toggle overflow ServiceAccountを適用します。oc apply -f service-account.yaml
oc apply -f service-account.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow cluster-monitoring-viewパーミッションをServiceAccountに付与します。oc adm policy add-cluster-role-to-user cluster-monitoring-view -z infinispan-monitoring
oc adm policy add-cluster-role-to-user cluster-monitoring-view -z infinispan-monitoringCopy to Clipboard Copied! Toggle word wrap Toggle overflow
Grafana データソースを作成します。
ServiceAccountのトークンを取得します。oc serviceaccounts get-token infinispan-monitoring
oc serviceaccounts get-token infinispan-monitoringCopy to Clipboard Copied! Toggle word wrap Toggle overflow 以下の例のように、
spec.datasources.secureJsonData.httpHeaderValue1フィールドにトークンが含まれるGrafanaDataSourceを定義します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow
GrafanaDataSourceを適用します。oc apply -f grafana-datasource.yaml
oc apply -f grafana-datasource.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
次のステップ
Grafana ダッシュボードを Data Grid Operator 設定プロパティーで有効にします。
14.4. Data Grid ダッシュボードの設定 リンクのコピーリンクがクリップボードにコピーされました!
Data Grid Operator は、Data Grid クラスターの Grafana ダッシュボードを設定できるようにするグローバル設定プロパティーを提供します。
Data Grid Operator の実行中にグローバル設定プロパティーを変更できます。
前提条件
- Data Grid Operator は、Grafana Operator が実行されている namespace を監視する必要があります。
手順
Data Grid Operator namespace に
infinispan-operator-configという名前のConfigMapを作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow Data Grid クラスターの namespace を
data.grafana.dashboard.namespaceプロパティーで指定します。注記このプロパティーの値を削除すると、ダッシュボードが削除されます。値を変更すると、Dashboard はその namespace に移動します。
-
data.grafana.dashboard.nameプロパティーでダッシュボードの名前を指定します。 -
必要な場合は、モニタリングキーを
data.grafana.dashboard.monitoring.keyプロパティーで指定します。 infinispan-operator-configを作成するか、設定を更新します。oc apply -f infinispan-operator-config.yaml
oc apply -f infinispan-operator-config.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 以下で入手可能な Grafana UI を開きます。
oc get routes grafana-route -o jsonpath=https://"{.spec.host}"oc get routes grafana-route -o jsonpath=https://"{.spec.host}"Copy to Clipboard Copied! Toggle word wrap Toggle overflow
14.5. Data Grid クラスターに対する JMX リモートポートの有効化 リンクのコピーリンクがクリップボードにコピーされました!
JMX リモートポートを有効にして、Data Grid MBean を公開し、Data Grid を Cryostat などの外部監視システムと統合します。
Data Grid クラスターに対して JMX を有効にすると、以下が発生します。
-
各 Data Grid Server Pod が、Operator ユーザー認証情報を含む "admin" セキュリティーレルムを利用して、認証された JMX エンドポイントをポート
9999で公開します。 -
<cluster-name>-adminサービスがポート9999を公開します。
JMX を有効または無効にできるのは、Infinispan CR の作成中のみです。CR インスタンスが作成されると、JMX 設定を変更することはできません。
手順
InfinispanCR で JMX を有効にします。Copy to Clipboard Copied! Toggle word wrap Toggle overflow Operator ユーザー認証情報を取得して、クライアント JMX 接続を認証します。
oc get secret infinispan-generated-operator-secret -o jsonpath="{.data.identities\.yaml}" | base64 --decodeoc get secret infinispan-generated-operator-secret -o jsonpath="{.data.identities\.yaml}" | base64 --decodeCopy to Clipboard Copied! Toggle word wrap Toggle overflow
関連情報
14.6. Cryostat を使用した JFR レコーディングのセットアップ リンクのコピーリンクがクリップボードにコピーされました!
OpenShift 上で実行される Data Grid クラスターの JDK Flight Recorder (JFR) モニタリングを有効にします。
Cryostat を使用した JFR レコーディング
JFR は、JVM のパフォーマンスのさまざまな側面に関する洞察を提供し、クラスターの検査とデバッグを容易にします。要件に応じて、Cryostat が提供する統合ツールを使用してレコーディングを保存および分析したり、レコーディングを外部監視アプリケーションにエクスポートしたりできます。
前提条件
- Cryostat Operator をインストールしている。Operator Lifecycle Manager (OLM) を使用して、OpenShift プロジェクトに Cryostat Operator をインストールできます。
- Data Grid クラスターで JMX を有効にしている。クラスターをデプロイした後は JMX 設定を変更できないため、デプロイする前に JMX を有効にする必要があります。
手順
InfinispanCR と同じ名前空間に Cryostat CR を作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注記Cryostat Operator では、トラフィック暗号化のために cert-manager が必要です。cert-manager が有効になっていてもインストールされていない場合、デプロイメントは失敗します。詳細は、Cryostat のインストール を参照してください。
CryostatCR の準備が完了するまで待機します。oc wait -n <namespace> --for=condition=MainDeploymentAvailable cryostat/cryostat-sample
oc wait -n <namespace> --for=condition=MainDeploymentAvailable cryostat/cryostat-sampleCopy to Clipboard Copied! Toggle word wrap Toggle overflow Cryostat
status.applicationUrlを開きます。oc -n <namespace> get cryostat cryostat-sample
oc -n <namespace> get cryostat cryostat-sampleCopy to Clipboard Copied! Toggle word wrap Toggle overflow Operator ユーザー認証情報を取得して、Cryostat UI でクライアント JMX 接続を認証します。
oc get secret infinispan-generated-operator-secret -o jsonpath="{.data.identities\.yaml}" | base64 --decodeoc get secret infinispan-generated-operator-secret -o jsonpath="{.data.identities\.yaml}" | base64 --decodeCopy to Clipboard Copied! Toggle word wrap Toggle overflow - Cryostat UI で、Security メニューに移動します。
- Store Credentials ウィンドウで、Add ボタンをクリックします。Store Credentials ウィンドウが開きます。
Match Expression フィールドに、一致式の詳細を次の形式で入力します。
target.labels['infinispan_cr'] == '<cluster_name>'
target.labels['infinispan_cr'] == '<cluster_name>'Copy to Clipboard Copied! Toggle word wrap Toggle overflow
第15章 anti-affinity による可用性の保証 リンクのコピーリンクがクリップボードにコピーされました!
Kubernetes には、単一障害点からワークロードを保護する anti-affinity 機能が含まれます。
15.1. anti-affinity ストラテジー リンクのコピーリンクがクリップボードにコピーされました!
クラスターの各 Data Grid ノードは、クラスターの OpenShift ノードで実行される Pod で実行されます。各 Red Hat OpenShift ノードは、物理ホストシステムで実行されます。anti-affinity は、OpenShift ノード全体に Data Grid ノードを分散することで機能し、ハードウェア障害が発生した場合でも、Data Grid クラスターを引き続き使用できるようにします。
Data Grid Operator は、2 つの anti-affinity ストラテジーを提供します。
kubernetes.io/hostname- Data Grid レプリカ Pod は、さまざまな OpenShift ノードでスケジュールされます。
topology.kubernetes.io/zone- Data Grid レプリカ Pod は、複数のゾーンにまたがってスケジュールされます。
フォールトトレランス
anti-affinity ストラテジーは、さまざまな方法でクラスターの可用性を保証します。
以下のセクションの式は、OpenShift ノードまたはゾーンの数が Data Grid ノードの数よりも大きい場合にのみ適用されます。
さまざまな OpenShift ノードでの Pod のスケジュール
以下のタイプのキャッシュに対して、x ノードの障害に対する耐性を提供します。
-
Replicated:
x = spec.replicas - 1 -
Distributed:
x = num_owners - 1
複数ゾーンにまたがる Pod のスケジューリング
以下のタイプのキャッシュに対して x ゾーンが存在する場合、x ゾーンの障害に対する耐性を提供します。
-
Replicated:
x = spec.replicas - 1 -
Distributed:
x = num_owners - 1
spec.replicas- 各 Data Grid クラスターの Pod 数を定義します。
num_owners- キャッシュ内の各エントリーのレプリカの数を定義するキャッシュ設定属性です。
15.2. anti-affinity の設定 リンクのコピーリンクがクリップボードにコピーされました!
OpenShift が、Data Grid クラスターの Pod をスケジュールする場所を指定し、可用性を確保します。
手順
-
spec.affinityブロックをInfinispanCR に追加します。 - 必要に応じて anti-affinity ストラテジーを設定します。
-
InfinispanCR を適用します。
15.2.1. anti-affinity ストラテジーの設定 リンクのコピーリンクがクリップボードにコピーされました!
Infinispan CR で anti-affinity ストラテジーを設定し、OpenShift が Data Grid レプリカ Pod をスケジュールする場所を制御します。
| トポロジーキー | 説明 |
|---|---|
|
| Data Grid のレプリカ Pod を複数のゾーンにまたがってスケジュールします。 |
|
| さまざまな OpenShift ノードで Data Grid レプリカ Pod をスケジュールします。 |
さまざまな OpenShift ノードでの Pod のスケジュール
以下は、Infinispan CR に spec.affinity フィールドを設定しない場合に、Data Grid Operator が使用する anti-affinity ストラテジーです。
さまざまなノードが必要
以下の例では、さまざまなノードを利用できない場合、OpenShift は Data Grid Pod をスケジュールしません。
さまざまな OpenShift ノードで Data Grid レプリカ Pod をスケジュールできるようにするには、利用可能な OpenShift ノードの数は spec.replicas の値よりも大きくなければなりません。
複数の OpenShift ゾーンにまたがった Pod のスケジュール
以下の例では、Pod のスケジュール時に複数のゾーンを優先しますが、ゾーンをまたいでスケジュールできない場合は、さまざまな OpenShift ノードで Data Grid レプリカ Pod をスケジュールします。
複数のゾーンが必要
以下の例では、Data Grid レプリカ Pod をスケジュールする場合にのみ、ゾーンストラテジーを使用します。
第16章 自動スケーリング リンクのコピーリンクがクリップボードにコピーされました!
Kubernetes には、指定されたメトリクスに基づいて StatefulSet または Deployment を自動的にスケールアップまたはスケールダウンできる HorizontalPodAutoscaler が含まれています。Infinispan CR は .status.scale サブリソースを公開し、これにより HorizontalPodAutoscaler リソースが Infinispan CR をターゲットにできるようになります。
HorizontalPodAutoscaler 設定を定義する前に、定義する Data Grid キャッシュのタイプを考慮してください。分散キャッシュと複製キャッシュのスケーリング要件は大きく異なるため、これらのキャッシュタイプの組み合わせを実行するサーバーに対して HorizontalPodAutoscaler を定義しても、メリットがない可能性があります。たとえば、メモリー使用量が特定のパーセンテージに達したときにスケーリングする HorizontalPodAutoscaler を定義すると、キャッシュエントリーが Pod 全体に分散されるため、分散キャッシュを定義するときに全体的なキャッシュ容量を増やすことができますが、すべての Pod がすべてのキャッシュエントリーをホストするため、複製されたキャッシュでは機能しません。逆に、CPU 使用率に基づいて HorizontalPodAutoscaler を設定すると、複製されたキャッシュを持つクラスターではより有益になります。これは、すべての Pod にすべてのキャッシュエントリーが含まれており、読み取り要求を追加のノードに分散することで、より多くの要求を同時に処理できるためです。
16.1. HorizontalPodAutoscaler の設定 リンクのコピーリンクがクリップボードにコピーされました!
Infinispan CR をターゲットとする HorizontalPodAutoscaler リソースを作成します。
手順
InfinispanCR と同じ名前空間にHorizontalPodAutoscalerリソースを定義します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
InfinispanCR の名前
cpu または memory タイプのメトリクスリソースを使用する場合は、Infinispan CR でこのリソースのリクエスト/制限を設定する必要があります。
Data Grid クラスターをアップグレードするときは、自動スケーリングによりアップグレードプロセスが予期しない状態になり、Operator がクラスターを 0 Pod にスケールダウンする必要があるため、HorizontalPodAutoscaler を削除する必要があります。
第17章 Data Grid Operator を使用したキャッシュの作成 リンクのコピーリンクがクリップボードにコピーされました!
Cache CR を使用して、Data Grid Operator でキャッシュ設定を追加し、Data Grid がデータを保存する方法を制御します。
17.1. Data Grid キャッシュ リンクのコピーリンクがクリップボードにコピーされました!
キャッシュ設定はデータストアの特性および機能を定義し、Data Grid スキーマで有効である必要があります。Data Grid は、キャッシュ設定を定義する XML または JSON 形式のスタンドアロンファイルを作成することを推奨します。検証を容易にし、Java などのクライアント言語で XML スニペットを維持する必要がある状況を回避するために、Data Grid 設定をアプリケーションコードから分離する必要があります。
OpenShift で実行されている Data Grid クラスターでキャッシュを作成するには、以下を行う必要があります。
-
CacheCR を OpenShift フロントエンドでキャッシュを作成するためのメカニズムとして使用します。 -
BatchCR を使用して、スタンドアロン設定ファイルから一度に複数のキャッシュを作成します。 - Data Grid コンソールにアクセスし、XML または JSON 形式でキャッシュを作成します。
Hot Rod または HTTP クライアントを使用できますが、特定のユースケースでプログラムによるリモートキャッシュの作成が必要でない限り、Data Grid は Cache CR または Batch CR を推奨します。
キャッシュ CR
-
CacheCR は Data Grid サービス Pod にのみ適用されます。 -
各
CacheCR は、Data Grid クラスター上の単一のキャッシュに対応します。
17.2. Cache CR を使用したキャッシュの作成 リンクのコピーリンクがクリップボードにコピーされました!
XML または YAML 形式の有効な設定を使用して、Data Grid サービスクラスターにキャッシュを作成するには、次の手順を実行します。
手順
-
metadata.nameフィールドに一意の値を使用してCacheCR を作成します。 -
ターゲット Data Grid クラスターを
spec.clusterNameフィールドで指定します。 spec.nameフィールドで、キャッシュに名前を付けます。注記キャッシュ設定の
name属性は有効になりません。spec.nameフィールドで名前を指定しない場合、キャッシュはmetadata.nameフィールドの値を使用します。-
spec.templateフィールドを使用してキャッシュ設定を追加します。 CacheCR を適用します。以下に例を示します。oc apply -f mycache.yaml cache.infinispan.org/mycachedefinition created
oc apply -f mycache.yaml cache.infinispan.org/mycachedefinition createdCopy to Clipboard Copied! Toggle word wrap Toggle overflow
CR の例をキャッシュする
XML
YAML
17.3. Cache CR を使用したキャッシュの更新 リンクのコピーリンクがクリップボードにコピーされました!
Data Grid Operator が Cache CR のキャッシュ設定の変更を処理する方法を制御できます。
Data Grid Operator は、実行時に Data Grid Server のキャッシュ設定を更新しようとします。更新に失敗すると、Data Grid Operator は以下のストラテジーのいずれかを使用します。
- 保持ストラテジー
-
Operator は
CacheCR のステータスをReady=Falseに更新します。CacheCR を手動で削除し、新しいキャッシュ設定を作成できます。これはデフォルトのストラテジーです。 - 再作成ストラテジー
Operator は Data Grid クラスターからキャッシュを削除し、
CacheCR から最新のspec.template値で新しいキャッシュを作成します。重要デプロイメントがデータ損失を許容できる場合にのみ
recreateストラテジーを設定します。
前提条件
-
有効な
CacheCR があること。
手順
spec.updates.strategyフィールドを使用してCacheCR ストラテジーを設定します。mycache.yaml
spec: updates: strategy: recreatespec: updates: strategy: recreateCopy to Clipboard Copied! Toggle word wrap Toggle overflow 変更を
CacheCR に適用します。以下に例を示します。oc apply -f mycache.yaml
oc apply -f mycache.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
17.4. 永続キャッシュストアの追加 リンクのコピーリンクがクリップボードにコピーされました!
永続キャッシュストアを Data Grid サービス Pod に追加して、データを永続ボリュームに保存できます。
Data Grid は、/opt/infinispan/server/data ディレクトリーに単一ファイルキャッシュストア (.dat ファイル) を作成します。
手順
以下の例のように、
<file-store/>要素を Data Grid キャッシュのpersistence設定に追加します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow
第18章 バッチ操作の実行 リンクのコピーリンクがクリップボードにコピーされました!
Data Grid Operator は、Data Grid リソースを一括で作成できる Batch CR を提供します。Batch CR は、Data Grid コマンドラインインターフェイス (CLI) をバッチモードで使用して、操作のシーケンスを実行します。
Batch CR インスタンスを変更しても効果はありません。バッチ操作は、Data Grid リソースを変更する "one-time" イベントです。CR の .spec フィールドを更新するには、またはバッチ操作が失敗した場合には、Batch CR の新規インスタンスを作成する必要があります。
18.1. インラインバッチ操作の実行 リンクのコピーリンクがクリップボードにコピーされました!
別の設定アーティファクトを必要としない場合は、バッチ操作を Batch CR に直接追加します。
手順
BatchCR を作成します。-
バッチ操作を
spec.clusterフィールドの値として実行する Data Grid クラスターの名前を指定します。 各 CLI コマンドを追加して、
spec.configフィールドの行で実行します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow
-
バッチ操作を
BatchCR を適用します。oc apply -f mybatch.yaml
oc apply -f mybatch.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow BatchCR が成功するまで待ちます。oc wait --for=jsonpath='{.status.phase}'=Succeeded Batch/mybatchoc wait --for=jsonpath='{.status.phase}'=Succeeded Batch/mybatchCopy to Clipboard Copied! Toggle word wrap Toggle overflow
18.2. バッチ操作の ConfigMap の作成 リンクのコピーリンクがクリップボードにコピーされました!
Data Grid キャッシュ設定などの追加のファイルがバッチ操作で使用できるように ConfigMap を作成します。
前提条件
デモンストレーションの目的で、手順を開始する前に、ホストファイルシステムにいくつかの設定アーティファクトを追加する必要があります。
一部のファイルを追加できる
/tmp/mybatchディレクトリーを作成します。mkdir -p /tmp/mybatch
mkdir -p /tmp/mybatchCopy to Clipboard Copied! Toggle word wrap Toggle overflow Data Grid キャッシュ設定を作成します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
手順
実行するすべてのコマンドが含まれる
batchファイルを作成します。たとえば、以下の
batchファイルは、"mycache" という名前のキャッシュを作成し、2 つのエントリーをこれに追加します。create cache mycache --file=/etc/batch/mycache.xml put --cache=mycache hello world put --cache=mycache hola mundo
create cache mycache --file=/etc/batch/mycache.xml put --cache=mycache hello world put --cache=mycache hola mundoCopy to Clipboard Copied! Toggle word wrap Toggle overflow 重要ConfigMapは、/etc/batchの Data Grid Pod にマウントされます。バッチ操作のすべての--file=ディレクティブの前に、そのパスを付ける必要があります。バッチ操作が必要とするすべての設定アーティファクトが、
batchファイルと同じディレクトリーにあることを確認します。ls /tmp/mybatch batch mycache.xml
ls /tmp/mybatch batch mycache.xmlCopy to Clipboard Copied! Toggle word wrap Toggle overflow ディレクトリーから
ConfigMapを作成します。oc create configmap mybatch-config-map --from-file=/tmp/mybatch
oc create configmap mybatch-config-map --from-file=/tmp/mybatchCopy to Clipboard Copied! Toggle word wrap Toggle overflow
18.3. ConfigMap を使用したバッチ操作の実行 リンクのコピーリンクがクリップボードにコピーされました!
設定アーティファクトを含むバッチ操作を実行します。
前提条件
-
バッチ操作が必要とするファイルを含む
ConfigMapを作成している。
手順
-
Data Grid クラスターの名前を
spec.clusterフィールドの値として指定するBatchCR を作成します。 spec.configMapフィールドでbatchファイルおよび設定アーティファクトを含むConfigMapの名前を設定します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow BatchCR を適用します。oc apply -f mybatch.yaml
oc apply -f mybatch.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow BatchCR が成功するまで待ちます。oc wait --for=jsonpath='{.status.phase}'=Succeeded Batch/mybatchoc wait --for=jsonpath='{.status.phase}'=Succeeded Batch/mybatchCopy to Clipboard Copied! Toggle word wrap Toggle overflow
18.4. バッチステータスメッセージ リンクのコピーリンクがクリップボードにコピーされました!
Batch CR の status.Phase フィールドで、バッチ操作を確認し、トラブルシューティングします。
| フェーズ | 説明 |
|---|---|
|
| すべてのバッチ操作が正常に完了しました。 |
|
| バッチ操作はキューに入れられ、リソースは初期化されています。 |
|
| バッチ操作を開始する準備ができました。 |
|
| バッチ操作が進行中です。 |
|
| 1 つ以上のバッチ操作に失敗しました。 |
失敗した操作
バッチ操作はアトミックではありません。batch スクリプトのコマンドが失敗しても、他の操作に影響を与えたり、ロールバックしたりすることはありません。
バッチ操作にサーバーまたは構文エラーがある場合は、status.Reason フィールドの Batch CR でログメッセージを表示できます。
18.5. バッチ操作の例 リンクのコピーリンクがクリップボードにコピーされました!
これらのバッチ操作の例を、Batch CR で Data Grid リソースを作成および変更する際の開始点として使用します。
設定ファイルは、ConfigMap を介してのみ、Data Grid Operator に渡すことができます。
ConfigMap は、/etc/batch の Data Grid Pod にマウントされるため、すべての --file= ディレクティブの前にそのパスを追加する必要があります。
18.5.1. キャッシュ リンクのコピーリンクがクリップボードにコピーされました!
- 設定ファイルから複数のキャッシュを作成します。
- ファイルからテンプレートを作成してから、テンプレートからキャッシュを作成します。
18.5.2. カウンター リンクのコピーリンクがクリップボードにコピーされました!
Batch CR を使用して、オブジェクトの数を記録するためにインクリメントおよびデクリメントできる複数のカウンターを作成します。
カウンターを使用して、識別子を生成したり、レートリミッターとして機能したり、リソースがアクセスされた回数を追跡したりできます。
18.5.3. Protobuf スキーマ リンクのコピーリンクがクリップボードにコピーされました!
Protobuf スキーマを登録して、キャッシュ内の値をクエリーします。Protobuf スキーマ (.proto files) は、カスタムエンティティーに関するメタデータを提供し、フィールドのインデックス作成を制御します。
18.5.4. タスク リンクのコピーリンクがクリップボードにコピーされました!
org.infinispan.tasks.ServerTask を実装するタスク、または javax.script スクリプト API と互換性のあるスクリプトをアップロードします。
第19章 Data Grid クラスターのバックアップおよび復元 リンクのコピーリンクがクリップボードにコピーされました!
Data Grid Operator を使用すると、障害復旧およびクラスター間で Data Grid リソースを移行するために、Data Grid クラスターの状態をバックアップおよび復元できます。
19.1. Backup CR および Restore CR リンクのコピーリンクがクリップボードにコピーされました!
Backup CR および Restore CR は、ランタイム時にインメモリーデータを保存し、Data Grid クラスターを簡単に再作成できるようにします。
Backup CR または Restore CR を適用すると、Data Grid クラスターにゼロ容量メンバーとして参加する新しい Pod を作成します。つまり、参加するためにクラスターのリバランスまたは状態遷移は必要ありません。
バックアップ操作の場合、Pod はキャッシュエントリーおよびその他のリソースを繰り返し処理し、永続ボリューム (PV) の /opt/infinispan/backups ディレクトリーにアーカイブ (.zip) を作成します。
Data Grid クラスターの他の Pod は、キャッシュエントリーを繰り返し処理するときにバックアップ Pod に応答するだけでよいため、バックアップの実行がパフォーマンスに大きな影響を与えることはありません。
復元操作の場合、Pod は PV のアーカイブから Data Grid リソースを取得し、それらを Data Grid クラスターに適用します。
バックアップまたは復元操作が完了すると、Pod はクラスターを離れ、終了します。
調整
Data Grid Operator は Backup CR および Restore CR を調整しません。これは、バックアップと復元操作は "one-time" イベントであることを意味します。
既存の Backup CR または Restore CR インスタンスを変更しても、操作は実行されず、効果もありません。.spec フィールドを更新する場合は、Backup CR または Restore CR の新規インスタンスを作成する必要があります。
19.2. Data Grid クラスターのバックアップ リンクのコピーリンクがクリップボードにコピーされました!
Data Grid クラスターの状態を永続ボリュームに保存するバックアップファイルを作成します。
前提条件
-
spec.service.type: DataGridでInfinispanCR を作成します。 Data Grid クラスターへのアクティブなクライアント接続がないことを確認します。
Data Grid のバックアップは、スナップショットの分離を提供しません。また、キャッシュがバックアップされた後、データの変更はアーカイブに書き込まれません。
クラスターの正確な状態をアーカイブするには、バックアップする前に、クライアントを常に切断する必要があります。
手順
-
metadata.nameフィールドでBackupCR に名前を付けます。 -
spec.clusterフィールドでバックアップする Data Grid クラスターを指定します。 spec.volume.storageおよびspec.volume.storage.storageClassNameフィールドで、バックアップアーカイブを永続ボリューム (PV) に追加する永続ボリューム要求を設定します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 任意で
spec.resourcesフィールドを含めて、バックアップを作成する Data Grid リソースを指定します。spec.resourcesフィールドを含めない場合、BackupCR はすべての Data Grid リソースが含まれるアーカイブを作成します。spec.resourcesフィールドを指定した場合、BackupCR はそれらのリソースのみが含まれるアーカイブを作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 以下の例のように
*ワイルドカード文字を使用することもできます。Copy to Clipboard Copied! Toggle word wrap Toggle overflow BackupCR を適用します。oc apply -f my-backup.yaml
oc apply -f my-backup.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
検証
status.phaseフィールドにBackupCR のSucceededのステータスがあり、Data Grid ログに以下のメッセージがあることを確認します。ISPN005044: Backup file created 'my-backup.zip'
ISPN005044: Backup file created 'my-backup.zip'Copy to Clipboard Copied! Toggle word wrap Toggle overflow 以下のコマンドを実行して、バックアップが正常に作成されていることを確認します。
oc describe Backup my-backup
oc describe Backup my-backupCopy to Clipboard Copied! Toggle word wrap Toggle overflow
19.3. Data Grid クラスターの復元 リンクのコピーリンクがクリップボードにコピーされました!
バックアップアーカイブから Data Grid クラスターの状態を復元します。
前提条件
-
ソースクラスターに
BackupCR を作成します。 Data Grid サービス Pod のターゲット Data Grid クラスターを作成します。
注記既存のキャッシュを復元する場合、操作はキャッシュ内のデータを上書きしますが、キャッシュ設定は上書きしません。
たとえば、ソースクラスターに
mycacheという名前の分散キャッシュをバックアップします。次に、すでに複製されたキャッシュとして存在するターゲットクラスターでmycacheを復元します。この場合、ソースクラスターからのデータは復元され、mycacheはターゲットクラスターで複製された設定を維持します。復元するターゲットの Data Grid クラスターにアクティブなクライアント接続がないことを確認します。
バックアップから復元したキャッシュエントリーは、最近のキャッシュエントリーを上書きする可能性があります。
たとえば、クライアントがcache.put(k=2)操作を実行してから、k=1を含むバックアップを復元します。
手順
-
metadata.nameフィールドでRestoreCR に名前を付けます。 -
spec.backupフィールドで使用するBackupCR を指定します。 spec.clusterフィールドで復元する Data Grid クラスターを指定します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 任意で
spec.resourcesフィールドを追加して、特定のリソースのみを復元します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow RestoreCR を適用します。oc apply -f my-restore.yaml
oc apply -f my-restore.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
検証
status.phaseフィールドにRestoreCR のSucceededのステータスがあり、Data Grid ログに以下のメッセージがあることを確認します。ISPN005045: Restore 'my-backup' complete
ISPN005045: Restore 'my-backup' completeCopy to Clipboard Copied! Toggle word wrap Toggle overflow
その後、Data Grid コンソールを開くか、CLI 接続を確立して、データおよび Data Grid リソースが予想通りに復元されていることを確認します。
19.4. バックアップおよび復元のステータス リンクのコピーリンクがクリップボードにコピーされました!
Backup および Restore CR には、操作の各フェーズのステータスを提供する status.phase フィールドが含まれます。
| ステータス | 説明 |
|---|---|
|
| システムは要求を受け入れ、コントローラーは Pod を作成する基礎となるリソースを準備しています。 |
|
| コントローラーは、すべての基礎となるリソースを正常に準備しました。 |
|
| Pod が作成され、Data Grid クラスターで操作が進行中です。 |
|
| Data Grid クラスターで操作が正常に完了し、Pod が終了しています。 |
|
| 操作が正常に完了せず、Pod は終了しました。 |
|
| コントローラーは Pod のステータスを取得したり、操作の状態を判別したりすることはできません。この条件は通常、Pod との一時的な通信エラーを示しています。 |
19.4.1. 失敗したバックアップおよび復元操作の処理 リンクのコピーリンクがクリップボードにコピーされました!
Backup CR または Restore CR の status.phase フィールドが Failed の場合、再度操作を試行する前に Pod ログを確認して根本原因を判別する必要があります。
手順
失敗した操作を実行した Pod のログを確認します。
Pod は終了しますが、
BackupCR またはRestoreCR を削除するまでそのまま利用できます。oc logs <backup|restore_pod_name>
oc logs <backup|restore_pod_name>Copy to Clipboard Copied! Toggle word wrap Toggle overflow - Pod ログによって示されるエラー状態またはその他の障害の原因を解決します。
-
BackupCR またはRestoreCR の新規インスタンスを作成し、操作を再度試みます。
第20章 Data Grid へのカスタムコードのデプロイ リンクのコピーリンクがクリップボードにコピーされました!
スクリプトやイベントリスナーなどのカスタムコードを Data Grid クラスターに追加します。
カスタムコードを Data Grid クラスターにデプロイする前に、これを利用可能にする必要があります。これを行うには、永続ボリューム (PV) からアーティファクトをコピーするか、HTTP または FTP サーバーからアーティファクトをダウンロードします。あるいは、両方の方法を使用することができます。
20.1. Data Grid クラスターへのコードアーティファクトのコピー リンクのコピーリンクがクリップボードにコピーされました!
アーティファクトを永続ボリューム (PV) に追加してから、これらを Data Grid Pod にコピーします。
この手順では、以下を実行する永続ボリューム要求 (PVC) をマウントする一時的な Pod を使用する方法を説明します。
- コードのアーティファクトを PV に追加できます (書き込み操作を実行します)。
- Data Grid Pod が PV からコードアーティファクトをロードできるようにします (読み取り操作を実行します)。
これらの読み取りおよび書き込み操作を実行するには、特定の PV アクセスモードが必要です。ただし、さまざまな PVC アクセスモードのサポートはプラットフォームに依存します。
さまざまなプラットフォームで PVC を作成する方法は、このドキュメントでは扱いません。分かりやすくするため、以下の手順では ReadWriteMany アクセスモードの PVC を示しています。
場合によっては、ReadOnlyMany または ReadWriteOnce アクセスモードのみを使用できます。同じ spec.volumeName の PVC を回収し、再利用することで、これらのアクセスモードの組み合わせを使用できます。
ReadWriteOnce アクセスモードを使用すると、クラスター内のすべての Data Grid Pod が同じ OpenShift ノードにスケジュールされます。
手順
Data Grid クラスターの namespace に変更します。
oc project rhdg-namespace
oc project rhdg-namespaceCopy to Clipboard Copied! Toggle word wrap Toggle overflow 以下のように、カスタムコードアーティファクトの PVC を作成します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow PVC を適用します。
oc apply -f datagrid-libs.yaml
oc apply -f datagrid-libs.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 以下のように、PVC をマウントする Pod を作成します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Pod を Data Grid namespace に追加し、準備ができるまで待機します。
oc apply -f datagrid-libs-pod.yaml oc wait --for=condition=ready --timeout=2m pod/datagrid-libs-pod
oc apply -f datagrid-libs-pod.yaml oc wait --for=condition=ready --timeout=2m pod/datagrid-libs-podCopy to Clipboard Copied! Toggle word wrap Toggle overflow コードのアーティファクトを Pod にコピーし、それらが PVC に読み込まれるようにします。
たとえば、ローカルの
libsディレクトリーからコードアーティファクトをコピーするには、以下を実行します。oc cp --no-preserve=true libs datagrid-libs-pod:/tmp/
oc cp --no-preserve=true libs datagrid-libs-pod:/tmp/Copy to Clipboard Copied! Toggle word wrap Toggle overflow Pod を削除します。
oc delete pod datagrid-libs-pod
oc delete pod datagrid-libs-podCopy to Clipboard Copied! Toggle word wrap Toggle overflow 永続ボリュームを
InfinispanCR のspec.dependencies.volumeClaimNameで指定してから、変更を適用します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow
永続ボリュームでカスタムコードを更新する場合は、変更を読み込むことができるように、Data Grid クラスターを再起動する必要があります。
20.2. コードアーティファクトのダウンロード リンクのコピーリンクがクリップボードにコピーされました!
アーティファクトを HTTP または FTP サーバーに追加し、Data Grid Operator が各 Data Grid ノードの {lib_path} ディレクトリーにアーティファクトをダウンロードできるようにします。
ファイルのダウンロード時に、Data Grid Operator はファイルタイプを自動的に検出できます。Data Grid Operator は、ダウンロード完了後に zip または tgz などのアーカイブファイルもファイルシステムにデプロイメントします。
org.postgresql:postgresql:42.3.1 などの groupId:artifactId:version 形式を使用して Maven アーティファクトをダウンロードすることもできます。
Data Grid Operator が Data Grid ノードを作成するたびに、アーティファクトをノードにダウンロードします。
前提条件
- コードアーティファクトを HTTP または FTP サーバーでホストするか、maven リポジトリーに公開しておく。
手順
-
spec.dependencies.artifactsフィールドをInfinispanCR に追加します。 次のいずれかを行います。
-
HTTPまたはFTP経由でダウンロードするファイルの場所をspec.dependencies.artifacts.urlフィールドの値として指定します。 -
ダウンロードする Maven アーティファクトを、
spec.dependencies.artifacts.mavenフィールドの値としてgroupId:artifactId:version形式で提供します。
-
オプションで、
spec.dependencies.artifacts.hashフィールドでダウンロードの整合性を検証するチェックサムを指定します。hashフィールドでは、値が<algorithm>:<checksum>の形式で指定する必要があります。ここで、<algorithm>はsha1|sha224|sha256|sha384|sha512|md5になります。Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 変更を適用します。
第21章 リモートクライアント接続の確立 リンクのコピーリンクがクリップボードにコピーされました!
Data Grid Console、コマンドラインインターフェイス (CLI)、およびリモートクライアントから Data Grid クラスターに接続します。
21.1. クライアント接続の詳細 リンクのコピーリンクがクリップボードにコピーされました!
Data Grid へのクライアント接続には、次の情報が必要です。
- ホスト名
- ポート
- 認証用の認証情報 (必要な場合)
- 暗号化を使用する場合の TLS 証明書
ホスト名
使用するホスト名は、クライアントが Data Grid と同じ OpenShift クラスターで実行されているかどうかによって異なります。
同じ OpenShift クラスターで実行されているクライアントアプリケーションは、Data Grid クラスターの内部サービス名を使用します。
metadata: name: infinispan
metadata:
name: infinispan
別の OpenShift または OpenShift の外部で実行されているクライアントアプリケーションは、Data Grid がネットワーク上でどのように公開されているかに依存するホスト名を使用します。
LoadBalancer サービスは、ロードバランサーの URL を使用します。NodePort サービスは、ノードのホスト名を使用します。Red Hat OpenShift Route は、定義したカスタムホスト名またはシステムが生成したホスト名のいずれかを使用します。
ポート
OpenShift および LoadBalancer サービス経由のクライアント接続はポート 11222 を使用します。
NodePort サービスは、30000 から 60000 の範囲のポートを使用します。ルートは、ポート 80 (暗号化なし) または 443 (暗号化あり) を使用します。
21.2. リモートシェルを使用した Data Grid クラスターへの接続 リンクのコピーリンクがクリップボードにコピーされました!
Data Grid クラスターへのリモートシェルセッションを開始し、コマンドラインインターフェイス (CLI) を使用して Data Grid リソースと連携して管理操作を実行します。
前提条件
-
PATHにkubectl-infinispanがあること。 - 有効な Data Grid 認証情報があること。
手順
infinispan shellコマンドを実行して、Data Grid クラスターに接続します。oc infinispan shell <cluster_name>
oc infinispan shell <cluster_name>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注記認証シークレットにアクセスでき、Data Grid ユーザーが 1 つしかない場合には、
kubectl-infinispanプラグインは認証情報を自動的に検出して Data Grid に対して認証します。デプロイメントに複数の Data Grid 認証情報がある場合は、--username引数を使用してユーザーを指定し、プロンプトが表示されたら、対応するパスワードを入力します。必要に応じて CLI 操作を実行します。
ヒントTab キーを押すか、
--help引数を使用して、利用可能なオプションとヘルプテキストを表示します。-
quitコマンドを使用して、リモートシェルセッションを終了します。
21.3. Data Grid コンソールへのアクセス リンクのコピーリンクがクリップボードにコピーされました!
コンソールにアクセスして、キャッシュの作成、管理操作の実行、および Data Grid クラスターの監視を行います。
前提条件
-
ブラウザーからコンソールにアクセスできるように、ネットワーク上で Data Grid を公開している。
たとえば、LoadBalancerサービスを設定するか、Routeを作成します。
手順
$HOSTNAME:$PORTにある任意のブラウザーからコンソールにアクセスします。$HOSTNAME:$PORTを、Data Grid が使用可能なネットワークの場所に置き換えます。
Data Grid コンソールへのアクセスは、OpenShift サービス経由またはポート 11222 を公開する OpenShift Route 経由でのみ行ってください。
21.4. Hot Rod クライアント リンクのコピーリンクがクリップボードにコピーされました!
Hot Rod は、Data Grid がリモートクライアントで高性能データ転送機能を提供するバイナリー TCP プロトコルです。
クライアントのインテリジェンス
Hot Rod プロトコルには、クライアントにキャッシュトポロジーの最新のビューを提供するメカニズムが含まれています。クライアントインテリジェンスは、読み取りおよび書き込み操作のネットワークホップ数を減らすことにより、パフォーマンスを向上させます。
同じ OpenShift クラスターで実行されているクライアントは、Data Grid Pod の内部 IP アドレスにアクセスできるため、任意のクライアントインテリジェンスを使用できます。
HASH_DISTRIBUTION_AWARE は、デフォルトのインテリジェンスメカニズムであり、クライアントがリクエストをプライマリーオーナーにルーティングできるようにします。これにより、Hot Rod クライアントに最高のパフォーマンスが提供されます。
別の OpenShift または OpenShift の外部で実行されているクライアントは、LoadBalancer、NodePort、または OpenShift Route を使用して Data Grid にアクセスできます。
OpenShift Route を介した Hot Rod クライアント接続には暗号化が必要です。SNI を使用して TLS を設定する必要があります。そうしないと、Hot Rod 接続に失敗します。
暗号化されていない Hot Rod クライアント接続の場合は、LoadBalancer サービスまたは NodePort サービスを使用する必要があります。
Hot Rod クライアントは、次の状況で BASIC インテリジェンスを使用する必要があります。
-
LoadBalancerサービス、NodePortサービス、または OpenShiftRoute経由で Data Grid に接続します。 - クロスサイトレプリケーションの使用時に別の OpenShift クラスターにフェイルオーバーする。
OpenShift クラスター管理者は、Data Grid へのトラフィックを制限するネットワークポリシーを定義できます。場合によっては、ネットワーク分離ポリシーにより、クライアントが同じ OpenShift クラスターで実行されているが namespace が異なる場合でも、BASIC インテリジェンスを使用する必要があります。
21.4.1. Hot Rod クライアント設定 API リンクのコピーリンクがクリップボードにコピーされました!
ConfigurationBuilder インターフェイスを使用して、Hot Rod クライアント接続をプログラムで設定できます。
次の例の $SERVICE_HOSTNAME を、Data Grid クラスターの内部サービス名に置き換えます。
metadata: name: infinispan
metadata:
name: infinispan
OpenShift の場合
ConfigurationBuilder
hotrod-client.properties
OpenShift の外部
ConfigurationBuilder
hotrod-client.properties
21.4.2. 証明書認証用の Hot Rod クライアントの設定 リンクのコピーリンクがクリップボードにコピーされました!
クライアント証明書認証を有効にすると、Data Grid との接続をネゴシエートする際に、クライアントは有効な証明書を提示する必要があります。
検証ストラテジー
Validate ストラテジーを使用する場合、署名済み証明書を提示できるように、キーストアでクライアントを設定する必要があります。また、Data Grid の認証情報と適切な認証メカニズムを使用してクライアントを設定する必要もあります。
認証ストラテジー
Authenticate ストラテジーを使用する場合、識別名 (DN) の一部として署名済み証明書および有効な Data Grid 認証情報が含まれるキーストアでクライアントを設定する必要があります。Hot Rod クライアントは、EXTERNAL 認証メカニズムも使用する必要があります。
セキュリティー承認を有効にする場合、クライアント証明書から Common Name(CN) に適切なパーミッションを持つロールに割り当てる必要があります。
以下の例は、Authenticate ストラテジーを使用したクライアント証明書認証用の Hot Rod クライアント設定を示しています。
21.4.3. Hot Rod クライアントからのキャッシュの作成 リンクのコピーリンクがクリップボードにコピーされました!
Hot Rod クライアントを使用して、OpenShift で実行される Data Grid クラスターでキャッシュをリモートで作成できます。ただし、Data Grid は、Hot Rod クライアントではなく、Data Grid コンソール、CLI、または Cache CR を使用してキャッシュを作成することを推奨します。
プログラムでのキャッシュの作成
以下の例は、キャッシュ設定を ConfigurationBuilder に追加してから、RemoteCacheManager を使用して作成する方法を示しています。
この例は、XMLStringConfiguration() メソッドを使用して、CacheWithXMLConfiguration という名前のキャッシュを作成し、キャッシュ設定を XML として渡す方法を示しています。
Hot Rod クライアントプロパティーの使用
存在しない名前付きキャッシュの cacheManager.getCache() 呼び出しを呼び出すと、Data Grid は null を返す代わりに Hot Rod クライアントプロパティーからそれらを作成します。
以下の例のように、キャッシュ設定を hotrod-client.properties に追加します。
# Add cache configuration infinispan.client.hotrod.cache.my-cache.template_name=org.infinispan.DIST_SYNC infinispan.client.hotrod.cache.another-cache.configuration=<infinispan><cache-container><distributed-cache name=\"another-cache\"/></cache-container></infinispan> infinispan.client.hotrod.cache.my-other-cache.configuration_uri=file:/path/to/configuration.xml
# Add cache configuration
infinispan.client.hotrod.cache.my-cache.template_name=org.infinispan.DIST_SYNC
infinispan.client.hotrod.cache.another-cache.configuration=<infinispan><cache-container><distributed-cache name=\"another-cache\"/></cache-container></infinispan>
infinispan.client.hotrod.cache.my-other-cache.configuration_uri=file:/path/to/configuration.xml
21.5. REST API へのアクセス リンクのコピーリンクがクリップボードにコピーされました!
Data Grid は、HTTP クライアントを使用して対話できる RESTful インターフェイスを提供します。
前提条件
-
REST API にアクセスできるように、ネットワークで Data Grid を公開します。
たとえば、LoadBalancerサービスを設定するか、Routeを作成します。
手順
$HOSTNAME:$PORT/rest/v2にある任意の HTTP クライアントで REST API にアクセスします。$HOSTNAME:$PORTを、Data Grid がクライアント接続をリッスンするネットワークの場所に置き換えます。