OpenShift での Data Grid の実行


Red Hat Data Grid 8.0

Data Grid のドキュメント

概要

OpenShift 上の 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 は以下のとおりです。

apiVersion: infinispan.org/v1
kind: Infinispan
metadata:
  name: 
1

spec:
  replicas: 
2
Copy to Clipboard Toggle word wrap
1
Data Grid クラスターに名前を付けます。
2
Data Grid クラスターのノード数を設定します。

2.2. Data Grid クラスターの作成

Data Grid Operator を使用して、2 つ以上の Data Grid ノードのクラスターを作成します。

手順

  1. Infinispan CR の spec.replicas で、クラスター内の Data Grid ノードの数を指定します。

    たとえば、以下のように cr_minimal.yaml ファイルを作成します。

    $ cat > cr_minimal.yaml<<EOF
    apiVersion: infinispan.org/v1
    kind: Infinispan
    metadata:
      name: example-rhdatagrid
    spec:
      replicas: 2
    EOF
    Copy to Clipboard Toggle word wrap
  2. Infinispan CR を適用します。

    $ oc apply -f cr_minimal.yaml
    Copy to Clipboard Toggle word wrap
  3. Data Grid Operator が Data Grid ノードを作成するのを監視します。

    $ oc get pods -w
    
    NAME                        READY  STATUS              RESTARTS   AGE
    example-rhdatagrid-1        0/1    ContainerCreating   0          4s
    example-rhdatagrid-2        0/1    ContainerCreating   0          4s
    example-rhdatagrid-3        0/1    ContainerCreating   0          5s
    infinispan-operator-0       1/1    Running             0          3m
    example-rhdatagrid-3        1/1    Running             0          8s
    example-rhdatagrid-2        1/1    Running             0          8s
    example-rhdatagrid-1        1/1    Running             0          8s
    Copy to Clipboard Toggle word wrap

次のステップ

replicas: の値の変更を試みてください。また、Data Grid Operator がクラスターをスケールアップまたはスケールダウンすることを監視してみてください。

2.3. Data Grid クラスターの検証

ログメッセージを確認し、Data Grid ノードがクラスター化されたビューを受信することを確認します。

手順

  • 以下のいずれかを行います。

    • ログからクラスタービューを取得します。

      $ oc logs example-rhdatagrid-0 | grep ISPN000094
      
      INFO  [org.infinispan.CLUSTER] (MSC service thread 1-2) \
      ISPN000094: Received new cluster view for channel infinispan: \
      [example-rhdatagrid-0|0] (1) [example-rhdatagrid-0]
      
      INFO  [org.infinispan.CLUSTER] (jgroups-3,{example_crd_name-0) \
      ISPN000094: Received new cluster view for channel infinispan: \
      [example-rhdatagrid-0|1] (2) [example-rhdatagrid-0, example-rhdatagrid-1]
      Copy to Clipboard Toggle word wrap
    • Data Grid Operator の Infinispan CR を取得します。

      $ oc get infinispan -o yaml
      Copy to Clipboard Toggle word wrap

      応答は、Data Grid Pod がクラスター化されたビューを受け取ったことを示します。

      conditions:
          - message: 'View: [example-rhdatagrid-0, example-rhdatagrid-1]'
            status: "True"
            type: wellFormed
      Copy to Clipboard Toggle word wrap
ヒント

自動スクリプトには、wellFormed 条件で oc wait を使用します。

$ oc wait --for condition=wellFormed --timeout=240s infinispan/example-rhdatagrid
Copy to Clipboard Toggle word wrap

第3章 Data Grid サービスの作成

Data Grid サービスは、柔軟で堅牢なインメモリーデータストレージを提供するステートフルアプリケーションです。

3.1. キャッシュサービス

キャッシュサービスは、アプリケーションの応答速度を大幅に向上させる揮発性の低レイテンシーデータストアを提供します。

キャッシュサービスノード:

  • 一貫性を確保するために、データをクラスター全体に同期的に分散します。
  • キャッシュエントリーの単一コピーを維持し、サイズを小さくします。
  • キャッシュエントリーを off-heap に保存し、JVM の効率化のためにエビクションを使用します。
  • デフォルトのパーティション処理設定とデータの一貫性を確保します。
重要

キャッシュサービスを使用して複数のキャッシュ定義を作成できますが、デフォルト設定のコピーとしてのみ作成できます。

Infinispan CR でキャッシュサービスノードを更新するか、バージョンを更新すると、キャッシュ内のすべてのデータが失われます。

3.1.1. キャッシュ設定

キャッシュサービスノードは以下のキャッシュ設定を使用します。

<distributed-cache name="default" 
1

                   mode="SYNC" 
2

                   owners="1"> 
3

   <memory>
    <off-heap eviction="MEMORY" 
4

              strategy="REMOVE"/> 
5

   </memory>
   <partition-handling when-split="ALLOW_READ_WRITES" 
6

                       merge-policy="REMOVE_ALL"/> 
7

</distributed-cache>
Copy to Clipboard Toggle word wrap
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
Copy to Clipboard Toggle word wrap
重要

Data Grid クラスターの作成後に .spec.service.type を変更することはできません。

たとえば、キャッシュサービスノードのクラスターを作成する場合は、サービスタイプを Data Grid サービスに変更することはできません。この場合は、別の OpenShift namespace で Data Grid サービスノードで新しいクラスターを作成する必要があります。

3.3.1. キャッシュサービスリソース

apiVersion: infinispan.org/v1
kind: Infinispan
metadata:
  name: example-rhdatagrid 
1

spec:
  replicas: 4 
2

  service:
    type: Cache 
3

  security:
    endpointSecretName: endpoint-identities 
4

    endpointEncryption: 
5

        type: secret
        certSecretName: tls-secret
  container: 
6

    extraJvmOpts: "-XX:NativeMemoryTracking=summary"
    cpu: "2000m"
    memory: 1Gi
  logging: 
7

    categories:
      org.infinispan: trace
      org.jgroups: trace
  expose: 
8

    type: LoadBalancer
Copy to Clipboard Toggle word wrap
1
Data Grid クラスターに名前を付けます。
2
クラスター内のノード数を指定します。
3
キャッシュサービスクラスターを作成します。
4
ユーザー認証情報で認証シークレットを追加します。
5
セキュアな接続用のカスタム暗号化シークレットを追加します。
6
リソースをノードに割り当てます。
7
ロギングを設定します。
8
外部トラフィックのサービスを設定します。

3.3.2. Data Grid サービスリソース

apiVersion: infinispan.org/v1
kind: Infinispan
metadata:
  name: example-rhdatagrid 
1

spec:
  replicas: 6 
2

  service:
    type: DataGrid 
3

    container:
      storage: 2Gi 
4

    sites: 
5

      local:
        expose:
          type: LoadBalancer
      locations:
      - name: azure
        url: openshift://api.azure.host:6443
        secretName: azure-identities
      - name: aws
        url: openshift://api.aws.host:6443
        secretName: aws-identities
  security:
    endpointSecretName: endpoint-identities 
6

    endpointEncryption: 
7

        type: secret
        certSecretName: tls-secret
  container: 
8

    extraJvmOpts: "-XX:NativeMemoryTracking=summary"
    cpu: "1000m"
    memory: 1Gi
  logging: 
9

    categories:
      org.infinispan: debug
      org.jgroups: debug
  expose: 
10

    type: LoadBalancer
Copy to Clipboard Toggle word wrap
1
Data Grid クラスターに名前を付けます。
2
クラスター内のノード数を指定します。
3
Data Grid サービスクラスターを作成します。
4
永続ボリュームのサイズを設定します。
5
バックアップの場所の接続情報を提供します。
6
ユーザー認証情報で認証シークレットを追加します。
7
セキュアな接続用のカスタム暗号化シークレットを追加します。
8
リソースをノードに割り当てます。
9
ロギングを設定します。
10
外部トラフィックのサービスを設定します。

第4章 Data Grid サービスの停止および起動

Data Grid クラスターを正常にシャットダウンして、データの損失を回避します。

キャッシュ設定

キャッシュサービスおよび Data Grid サービスの両方が永続的なキャッシュ定義を永続ボリュームに保存し、クラスターの再起動後に引き続き利用できるようにします。

データ

Data Grid サービスノードは、キャッシュストアを追加すると、クラスターのシャットダウン中にすべてのキャッシュエントリーを永続ストレージに書き込むことができます。

重要

永続ボリュームがすべてのデータを保持できるように、Data Grid サービスノードのストレージサイズを設定する必要があります。

利用可能なコンテナーストレージが Data Grid サービスノードで利用可能なメモリー量より少ない場合、Data Grid は例外をログに書き込み、シャットダウン中にデータ損失が発生します。

4.1. Data Grid クラスターの正常なシャットダウン

  • replicas の値を 0 に設定し、変更を適用します。
spec:
  replicas: 0
Copy to Clipboard Toggle word wrap

4.2. Data Grid クラスターの再起動

  • spec.replicas の値を、シャットダウンする前にクラスターに含まれていたノード数に設定します。

たとえば、6 つのノードで設定されるクラスターをシャットダウンします。クラスターを再起動する際に、以下を設定する必要があります。

spec:
  replicas: 6
Copy to Clipboard Toggle word wrap

これにより、Data Grid はクラスター全体でのデータの分散を復元できます。クラスターの全ノードが実行されている場合、ノードを追加または削除できます。

第5章 コンテナー仕様の調整

CPU およびメモリーリソースを割り当て、JVM オプションを指定し、Data Grid ノードのストレージを設定できます。

5.1. JVM、CPU、およびメモリーリソース

spec:
  ...
  container:
    extraJvmOpts: "-XX:NativeMemoryTracking=summary" 
1

    cpu: "1000m" 
2

    memory: 1Gi 
3
Copy to Clipboard Toggle word wrap
1
JVM オプションを指定します。
2
ホスト CPU リソースをノードに割り当てます (CPU ユニットで測定)。
3
ホストメモリーリソースをノードに割り当てます (バイト単位で測定)。

Data Grid Operator が Data Grid クラスターを作成すると、spec.container.cpu および spec.container.memory を使用して以下を行います。

  • OpenShift に Data Grid ノードを実行するのに十分な容量があることを確認します。デフォルトでは、Data Grid Operator は OpenShift スケジューラーから 512Mimemoryと、0.5CPU を要求します。
  • ノードリソースの使用を制限します。Data Grid Operator は、cpu および memory の値をリソース制限として設定します。

ガベージコレクションのロギング

デフォルトでは、Data Grid Operator はガベージコレクション (GC) メッセージをログに記録しません。必要に応じて、以下の JVM オプションを追加して、GC メッセージを stdout に転送することができます。

extraJvmOpts: "-Xlog:gc*:stdout:time,level,tags"
Copy to Clipboard Toggle word wrap

5.2. ストレージリソース

spec:
  ...
  service:
    type: DataGrid
    container:
      storage: 2Gi 
1
Copy to Clipboard Toggle word wrap
1
Data Grid サービスノードのストレージサイズを設定します。

デフォルトでは、Data Grid Operator はキャッシュサービスと Data Grid サービスノードの両方にストレージに 1Gi を割り当てます。ストレージサイズは、Data Grid サービスノードに対してのみ設定できます。

永続性

Data Grid サービスを使用すると、データ永続性に Single File キャッシュストアを設定できます。

<persistence>
    <file-store />
</persistence>
Copy to Clipboard Toggle word wrap

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
Copy to Clipboard Toggle word wrap

手順

  • 内部サービスが以下のように利用できることを確認します。

    $ oc get services
    
    NAME               TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)
    example-rhdatagrid ClusterIP   192.0.2.0        <none>        11222/TCP
    Copy to Clipboard Toggle word wrap

参照資料

6.2. Data Grid の外部クライアントへの公開

外部サービスを使用して OpenShift の外部で実行されているクライアントに Data Grid クラスターを公開します。

手順

  • Infinispan CR の spec.expose.type で外部サービスタイプを指定し、変更を適用します。

    spec:
      ...
      expose: 
    1
    
        type: LoadBalancer 
    2
    
        nodePort: 30000 
    3
    Copy to Clipboard Toggle word wrap
    1
    外部サービスを公開します。
    2
    LoadBalancer または NodePort サービスのリソースタイプを指定します。
    3
    外部サービスが公開されるポートを定義します。ポートを定義しておらず、サービスタイプが NodePort の場合、プラットフォームは使用するポートを選択します。サービスタイプが LoadBalancer の場合、公開されるポートはデフォルトで 11222 になります。
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
Copy to Clipboard Toggle word wrap

参照資料

第7章 認証の設定

アプリケーションユーザーは、Data Grid クラスターで認証する必要があります。Data Grid Operator はデフォルトの認証情報を生成するか、独自の認証情報を追加できます。

7.1. デフォルトの認証情報

Data Grid Operator は、example-rhdatagrid-generated-secretという名前の認証シークレットに保存される base64 でエンコードされたデフォルト認証情報を生成します。

Expand
Username説明

developer

デフォルトのアプリケーションユーザー。

operator

Data Grid クラスターと対話する内部ユーザー。

7.2. Retrieving Credentials

Data Grid クラスターにアクセスするために、認証シークレットから認証情報を取得します。

手順

  • 以下の例のように、認証シークレットから認証情報を取得します。

    $ oc get secret example-rhdatagrid-generated-secret
    Copy to Clipboard Toggle word wrap

    Base64 でデコードされた認証情報。

    $ oc get secret example-rhdatagrid-generated-secret \
    -o jsonpath="{.data.identities\.yaml}" | base64 --decode
    
    credentials:
    - username: developer
      password: dIRs5cAAsHIeeRIL
    - username: operator
      password: uMBo9CmEdEduYk24
    Copy to Clipboard Toggle word wrap

7.3. カスタム認証情報の追加

カスタム認証情報を認証シークレットに追加します。

手順

  1. アプリケーションユーザーの認証情報および Data Grid Operator の operator ユーザーの認証情報が含まれる identities.yaml ファイルを作成します。以下に例を示します。

    credentials:
    - username: testuser
      password: testpassword
    - username: operator
      password: supersecretoperatorpassword
    Copy to Clipboard Toggle word wrap
  2. 以下のように identities.yaml を使用して認証シークレットを作成します。

    $ oc create secret generic --from-file=identities.yaml connect-secret
    Copy to Clipboard Toggle word wrap
  3. Infinispan CR の spec.security.endpointSecretName で認証シークレットを指定し、変更を適用します。

    spec:
      ...
      security:
        endpointSecretName: connect-secret 
    1
    Copy to Clipboard Toggle word wrap
    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 設定を設定し、変更を適用します。

    spec:
      ...
      security:
        endpointEncryption:
          type: service
          certServiceName: service.beta.openshift.io 
    1
    
          certSecretName: example-rhdatagrid-cert-secret 
    2
    Copy to Clipboard Toggle word wrap
1
Red Hat OpenShift Service を指定します。
2
Data Grid Operator がサービス証明書およびキーを保存するシークレットの名前を指定します。

Data Grid Operator は、以下のように、Data Grid クラスター名の接頭辞が付けられた -cert-secret という名前のシークレットに保存します。

metadata:
  name: example-rhdatagrid
Copy to Clipboard Toggle word wrap

上記のクラスター名は、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
Copy to Clipboard Toggle word wrap

8.2. カスタム TLS 証明書の使用

カスタムの PKCS12 キーストアまたは TLS 証明書/キーのペアを使用して、クライアントと Data Grid クラスターとの間の接続を暗号化します。

前提条件

キーストアまたは証明書シークレットを作成します。参照:

手順

  1. 暗号化シークレットを OpenShift namespace に追加します。以下に例を示します。

    $ oc apply -f tls_secret.yaml
    Copy to Clipboard Toggle word wrap
  2. Infinispan CR の spec.security.endpointEncryption で暗号化シークレットを指定し、変更を適用します。

    spec:
      ...
      security:
        endpointEncryption: 
    1
    
                type: secret 
    2
    
                certSecretName: tls-secret 
    3
    Copy to Clipboard Toggle word wrap
    1
    Data Grid エンドポイントとの間のトラフィックを暗号化します。
    2
    暗号化証明書が含まれるシークレットを使用するように Data Grid を設定します。
    3
    暗号化シークレットに名前を付けます。

8.2.1. 証明書シークレット

apiVersion: v1
kind: Secret
metadata:
  name: tls-secret
type: Opaque
data:
    tls.key:  "LS0tLS1CRUdJTiBQUk ..." 
1

    tls.crt: "LS0tLS1CRUdJTiBDRVl ..." 
2
Copy to Clipboard Toggle word wrap
1
base64 でエンコードされた TLS キーを追加します。
2
base64 でエンコードされた TLS 証明書を追加します。

8.2.2. キーストアシークレット

apiVersion: v1
kind: Secret
metadata:
  name: tls-secret
type: Opaque
stringData:
    alias: server 
1

    password: password 
2

data:
    keystore.p12:  "MIIKDgIBAzCCCdQGCSqGSIb3DQEHA..." 
3
Copy to Clipboard Toggle word wrap
1
キーストアのエイリアスを指定します。
2
キーストアのパスワードを指定します。
3
base64 でエンコードされたキーストアを追加します。

第9章 Prometheus を使用した Data Grid の監視

Data Grid は、統計とイベントを Prometheus に提供するメトリックエンドポイントを公開します。

9.1. Prometheus の設定

Prometheus を設定して、Data Grid クラスターとの間で認証および監視できるようにします。

前提条件

  • Prometheus Operator をインストールします。
  • 実行中の Prometheus インスタンスを作成します。

手順

  1. 認証シークレットを Prometheus namespace に追加します。

    このシークレットにより、Prometheus は Data Grid クラスターで認証できます。Data Grid 認証情報は、Data Grid Operator namespace の認証シークレットで確認できます。

    apiVersion: v1
    stringData:
      username: developer 
    1
    
      password: dIRs5cAAsHIeeRIL 
    2
    
    kind: Secret
    metadata:
      name: basic-auth
    type: Opaque
    Copy to Clipboard Toggle word wrap
    1
    アプリケーションユーザーを指定します。developer はデフォルトのアプリケーションユーザーです。
    2
    対応するパスワードを指定します。
  2. Data Grid クラスターを監視するように Prometheus を設定するサービスモニターインスタンスを作成します。

    apiVersion: monitoring.coreos.com/v1
    kind: ServiceMonitor
    metadata:
      labels:
        k8s-app: prometheus
      name: datagrid-monitoring 
    1
    
      namespace: infinispan-monitoring 
    2
    
    spec:
      endpoints:
        - basicAuth:
            username:
              key: username
              name: basic-auth 
    3
    
            password:
              key: password
              name: basic-auth 
    4
    
          interval: 30s
          scheme: https 
    5
    
          tlsConfig:
            insecureSkipVerify: true
            serverName: certificate-CN 
    6
    
      namespaceSelector:
        matchNames:
          - infinispan 
    7
    
      selector:
        matchLabels:
          app: infinispan-service
          clusterName: cluster-name 
    8
    Copy to Clipboard Toggle word wrap
    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 クライアントが暗号化を使用するように設定する方法については、本書では扱いません。

手順

  1. Data Grid ノードにリモートシェルを開きます。以下に例を示します。

    $ oc rsh example-rhdatagrid
    Copy to Clipboard Toggle word wrap
  2. キャッシュサービスはデフォルトのキャッシュインスタンスを提供しますが、Data Grid サービスは提供しません。Data Grid サービスクラスターにデータを保存する前に、以下の例のようにキャッシュを作成する必要があります。

    $ curl -X POST \
      -u developer:$PASSWORD \
      $SERVICE_HOSTNAME:11222/rest/v2/caches/default
      ...
      < HTTP/1.1 200 OK
      ...
    Copy to Clipboard Toggle word wrap
  3. エントリーをキャッシュに配置します。

    $ curl -X POST \
      -u developer:$PASSWORD \
      -H 'Content-type: text/plain' -d 'world' \
      $SERVICE_HOSTNAME:11222/rest/v2/caches/default/hello
      ...
      < HTTP/1.1 204 No Content
    Copy to Clipboard Toggle word wrap
  4. エントリーを確認します。

    $ curl -X GET \
      -u developer:$PASSWORD \
      $SERVICE_HOSTNAME:11222/rest/v2/caches/default/hello/
      ...
      < HTTP/1.1 200 OK
      ...
      world
    Copy to Clipboard Toggle word wrap

10.2. Hot Rod クライアントの設定

Hot Rod Java クライアントを、Data Grid クラスターに接続するように設定します。

Hot Rod クライアント ConfigurationBuilder

import org.infinispan.client.hotrod.configuration.ConfigurationBuilder;

ConfigurationBuilder builder = new ConfigurationBuilder();
builder.addServer()
       //Connection
       .host("$SERVICE_HOSTNAME").port(11222)
       //Client intelligence
       //External clients can use `BASIC` intelligence only.
       .clientIntelligence(ClientIntelligence.BASIC)
       .security()
          //Authentication
          .authentication().enable()
            //Application user credentials.
            //The default username is developer.
            .username("developer")
            .password("$PASSWORD")
            .serverName("$CLUSTER_NAME")
            .saslQop(SaslQop.AUTH)
            .saslMechanism("DIGEST-MD5")
          //Encryption
          .ssl()
            .sniHostName("$SERVICE_HOSTNAME")
            //Path to the TLS certificate.
            //Clients automatically generate trust stores from certificates.
            .trustStorePath(tls.crt);
Copy to Clipboard Toggle word wrap

Hot Rod クライアントプロパティー

# Connection
infinispan.client.hotrod.server_list=$SERVICE_HOSTNAME:11222

# Client intelligence
# External clients can use `BASIC` intelligence only.
infinispan.client.hotrod.client_intelligence=BASIC

# Authentication
infinispan.client.hotrod.use_auth=true
# Application user credentials.
# The default username is developer.
infinispan.client.hotrod.auth_username=developer
infinispan.client.hotrod.auth_password=$PASSWORD
infinispan.client.hotrod.auth_server_name=$CLUSTER_NAME
infinispan.client.hotrod.sasl_properties.javax.security.sasl.qop=auth
infinispan.client.hotrod.sasl_mechanism=DIGEST-MD5

# Encryption
infinispan.client.hotrod.sni_host_name=$SERVICE_HOSTNAME
# Path to the TLS certificate.
# Clients automatically generate trust stores from certificates.
infinispan.client.hotrod.trust_store_path=tls.crt
Copy to Clipboard Toggle word wrap

第11章 Data Grid ログの監視

ロギングカテゴリーを異なるメッセージレベルに設定して、Data Grid クラスターの監視、デバッグ、およびトラブルシューティングを行います。

11.1. Data Grid ロギングの設定

手順

  1. Infinispan CR の spec.logging でロギング設定を指定してから、変更を適用します。

    spec:
      ...
      logging: 
    1
    
        categories: 
    2
    
          org.infinispan: debug 
    3
    
          org.jgroups: debug
    Copy to Clipboard Toggle word wrap
    1
    Data Grid ロギングを設定します。
    2
    ロギングカテゴリーを追加します。
    3
    ロギングカテゴリーとレベルに名前を付けます。
    注記

    ルートロギングカテゴリーは org.infinispan で、デフォルトでは INFO です。

  2. 必要に応じて、Data Grid ノードからログを取得します。

    $ oc logs -f $POD_NAME
    Copy to Clipboard Toggle word wrap

11.2. ログレベル

ログレベルは、メッセージの性質と重大度を示します。

Expand
ログレベル説明

trace

アプリケーションの実行状態に関する詳細情報を提供します。これは最も詳細なログレベルです。

debug

個々の要求またはアクティビティーの進捗を示します。

info

ライフサイクルイベントを含むアプリケーションの全体的な進捗状況を示します。

warn

エラーが発生したり、パフォーマンスが低下する可能性のある状況を示します。

error

操作またはアクティビティーの正常な実行を妨げる可能性がありますが、アプリケーションの実行は妨げないエラー状態を示します。

第12章 クロスサイトレプリケーションの設定

異なる場所で実行している Data Grid クラスター間のデータのバックアップ用に、クロスサイトレプリケーションを設定します。

たとえば、Data Grid Operator を使用して、ロンドン (LON) のデータセンターで Data Grid クラスターを管理します。ニューヨーク (NYC) の別のデータセンターでも、Data Grid Operator を使用して Data Grid クラスターを管理します。この場合は、LON および NYC をバックアップの場所として追加できます。

重要

現在、クロスサイトレプリケーション機能は テクノロジープレビュー です。詳細は、Red Hat のサポートにお問い合わせください。

前提条件

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 のトークンが含まれるシークレットも必要です。

手順

  1. 各 OpenShift インスタンスにサービスアカウントを作成します。

    たとえば、以下のように LON にサービスアカウントを作成します。

    $ oc create sa lon
    serviceaccount/lon created
    Copy to Clipboard Toggle word wrap
  2. view ロールをサービスアカウントに追加します。

    たとえば、Data Grid クラスターが my-xsite namespace で実行されている場合は、以下のように LON のサービスアカウントに view ロールを追加します。

    $ oc policy add-role-to-user view system:serviceaccount:my-xsite:lon
    Copy to Clipboard Toggle word wrap
  3. 各サービスアカウントからトークンを取得します。

    以下の例は、LON のサービスアカウントトークンを示しています。

    $ oc sa get-token lon
    
    eyJhbGciOiJSUzI1NiIsImtpZCI6IiJ9...
    Copy to Clipboard Toggle word wrap
  4. バックアップの場所のサービスアカウントトークンを含むシークレットを作成します。

    1. NYC で OpenShift Container Platform にログインします。
    2. サービスアカウントトークンを lon-token シークレットに追加します。

      oc create secret generic lon-token --from-literal=token=eyJhbGciOiJSUzI1NiIsImtpZCI6IiJ9...
      Copy to Clipboard Toggle word wrap
    3. 上記の手順を繰り返して、LONnyc-token シークレットを作成します。

サービスアカウントトークンを各バックアップの場所に追加した後に、OpenShift インスタンスは相互に認証できるため、Data Grid クラスターがクロスサイトビューを形成できます。

12.3. Data Grid クラスターへのバックアップの場所の追加

Data Grid クラスターをバックアップの場所として設定し、データを複製するために専用の JGroups トランスポートチャネルを介して通信できるようにします。

手順

  1. 必要に応じて、Infinispan CR を使用して各サイトで Data Grid クラスターを設定します。

    たとえば、lon.yaml を作成して LON および nyc.yaml を設定して NYC を設定します。両方の設定には以下を含める必要があります。

    • .spec.service.sites.local は、Data Grid クラスターのローカルサイトに名前を付けます。
    • .spec.service.sites.locations はすべてのサイトマスターの場所を提供します。Data Grid ノードは、この情報を使用して相互に接続し、クロスサイトビューを形成します。
  2. 各サイトで Data Grid クラスターをインスタンス化します。以下に例を示します。

    1. LONInfinispan CR を適用します。

      $ oc apply -f lon.yaml
      Copy to Clipboard Toggle word wrap
    2. NYC で OpenShift Container Platform にログインします。
    3. NYCInfinispan CR を適用します。

      $ oc apply -f nyc.yaml
      Copy to Clipboard Toggle word wrap
  3. 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]
    Copy to Clipboard Toggle word wrap

12.3.1. クロスサイトレプリケーションリソース

spec:
  ...
  service:
    type: DataGrid 
1

    sites:
      local:
        name: LON 
2

        expose:
          type: LoadBalancer 
3

      locations: 
4

      - name: LON 
5

        url: openshift://api.site-a.devcluster.openshift.com:6443 
6

        secretName: lon-token 
7

      - name: NYC
        url: openshift://api.site-b.devcluster.openshift.com:6443
        secretName: nyc-token
Copy to Clipboard Toggle word wrap
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 エンドポイントへのアクセスを提供します。
Expand
サービスポートProtocol説明

$ClusterName

11222

TCP

Data Grid エンドポイントへの内部アクセス

$ClusterName-ping

8888

TCP

クラスターの検出

外部サービス

OpenShift の外部のクライアントから、または異なる namespace のクライアントから Data Grid エンドポイントへのアクセスを提供します。

注記

Data Grid Operator を使用して外部サービスを作成する必要があります。これはデフォルトでは利用できません。

Expand
サービスポートProtocol説明

$ClusterName-external

11222

TCP

Data Grid エンドポイントへの外部アクセス

クロスサイトサービス

Data Grid が、異なる場所にあるクラスター間でデータをバックアップできるようにします。

Expand
サービスポートProtocol説明

$NAME-sites

7900

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 StrategyAutomatic または Manual のいずれかの更新を選択します。これにより、Data Grid Operator によるクラスターのアップグレード方法が決まります。詳細は、Openshift ドキュメントを参照してください。

13.3. テクノロジープレビュー

テクノロジープレビュー機能は、Red Hat の実稼働環境でのサービスレベルアグリーメント (SLA) ではサポートされておらず、機能的に完全でない可能性があります。Red Hat は、実稼働環境での使用は推奨していません。これらの機能により、近日発表予定の製品機能をリリースに先駆けてご提供でき、お客様は開発プロセス時に機能をテストして、フィードバックをお寄せいただくことができます。

詳細は、テクノロジープレビュー機能のサポート範囲 を参照してください。

トップに戻る
Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

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

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

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

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

会社概要

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

Theme

© 2026 Red Hat