Helm を使用した Data Grid クラスターのビルドおよびデプロイ
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章 Helm チャートリリースとしての Data Grid クラスターのデプロイメント
Helm を使用して Data Grid クラスターのビルド、設定、およびデプロイを行います。Data Grid は、OpenShift で Data Grid クラスターを実行するためのリソースをパッケージ化する Helm チャートを提供します。
Data Grid チャートをインストールして、Helm リリースを作成します。これにより、OpenShift プロジェクトで Data Grid クラスターがインスタンス化されます。
1.1. OpenShift コンソールを使用した Data Grid チャートのインストール
OpenShift Web コンソールを使用して、Red Hat 開発者カタログから Data Grid チャートをインストールします。チャートをインストールすると、Data Grid クラスターをデプロイする Helm リリースが作成されます。
前提条件
- OpenShift にアクセスできる。
手順
- OpenShift Web コンソールにログインします。
- Developer パースペクティブを選択します。
- Add ビューを開き、Helm Chart を選択して Red Hat 開発者カタログを参照します。
- Data Grid チャートを探し、選択します。
- チャートの名前を指定し、バージョンを選択します。
Data Grid チャートの以下のセクションで値を定義します。
- Images は、Data Grid クラスターの Pod を作成する際に使用するコンテナーイメージを設定します。
Deploy は Data Grid クラスターを設定します。
ヒント各値の説明を見つけるには、YAML ビュー オプションを選択し、スキーマにアクセスします。yaml 設定を編集して、Data Grid チャートをカスタマイズします。
- Install を選択します。
検証
- Developer パースペクティブで Helm ビューを選択します。
- 作成した Helm リリースを選択して、詳細、リソース、およびその他の情報を表示します。
1.2. コマンドラインでの Data Grid チャートのインストール
コマンドラインを使用して OpenShift に Data Grid チャートをインストールし、Data Grid クラスターをインスタンス化します。チャートをインストールすると、Data Grid クラスターをデプロイする Helm リリースが作成されます。
前提条件
-
helm
クライアントをインストールしている。 - OpenShift Helm チャートリポジトリー を追加している。
- OpenShift クラスターにアクセスできる。
-
oc
クライアントがある。
手順
Data Grid クラスターを設定する values ファイルを作成します。
たとえば、以下の values ファイルは、2 つのノードで設定されるクラスターを作成します。
$ cat > infinispan-values.yaml<<EOF #Build configuration images: server: registry.redhat.io/datagrid/datagrid-8-rhel8:latest initContainer: registry.access.redhat.com/ubi8-micro #Deployment configuration deploy: #Add a user with full security authorization. security: batch: "user create admin -p changeme" #Create a cluster with two pods. replicas: 2 #Specify the internal Kubernetes cluster domain. clusterDomain: cluster.local EOF
Data Grid チャートをインストールし、values ファイルを指定します。
$ helm install infinispan openshift-helm-charts/redhat-data-grid --values infinispan-values.yaml
--set
フラグを使用して、デプロイメントの設定値を上書きします。たとえば、3 つのノードで設定されるクラスターを作成するには、以下のように設定します。
--set deploy.replicas=3
検証
Pod を監視して、Data Grid クラスターのすべてのノードが正常に作成されていることを確認します。
$ oc get pods -w
1.3. Data Grid Helm リリースのアップグレード
Helm リリースをアップグレードして、実行時に Data Grid クラスター設定を変更します。
前提条件
- Data Grid チャートをデプロイしている。
-
helm
クライアントがある。 -
oc
クライアントがある。
手順
- 適宜、Data Grid デプロイメントの values ファイルを変更します。
helm
クライアントを使用して変更を適用します。以下に例を示します。$ helm upgrade infinispan openshift-helm-charts/redhat-data-grid --values infinispan-values.yaml
検証
Pod の再ビルドを監視して、すべての変更が Data Grid クラスターに正常に適用されているのを確認します。
$ oc get pods -w
1.4. Data Grid Helm リリースのアンインストール
Data Grid チャートのリリースをアンインストールし、Pod およびその他のデプロイメントアーティファクトを削除します。
この手順では、コマンドラインで Data Grid デプロイメントをアンインストールする方法を説明しますが、代わりに OpenShift Web コンソールを使用することもできます。特定の手順は、OpenShift のドキュメントを参照してください。
前提条件
- Data Grid チャートをデプロイしている。
-
helm
クライアントがある。 -
oc
クライアントがある。
手順
インストールされている Data Grid Helm リリースをリスト表示します。
$ helm list
helm
クライアントを使用してリリースをアンインストールし、Data Grid クラスターを削除します。$ helm uninstall <helm_release_name>
oc
クライアントを使用して、生成されたシークレットを削除します。$ oc delete secret <helm_release_name>-generated-secret
1.5. デプロイメント設定の値
デプロイメント設定の値により、Data Grid クラスターをカスタマイズできます。
Data Grid チャートの README で、フィールドおよび値の説明を確認することもできます。
フィールド | 説明 | デフォルト値 |
---|---|---|
| 内部 Kubernetes クラスタードメインを指定します。 |
|
| Pod を作成する Data Grid クラスター内のノードの数を指定します。 |
|
| JVM オプションを Data Grid Server に渡します。 | デフォルト値はありません。 |
| サーバー起動前にダウンロードするライブラリー。URL または Maven 座標として表される複数のアーティファクトをスペースで区切って指定します。.tar、.tar.gz、または .zip 形式のアーカイブアーティファクトが抽出されます。 | デフォルト値はありません。 |
| ストレージが一時的または永続的であるかどうかを定義します。 |
デフォルト値は |
| 各 Data Grid Pod に割り当てられるストレージの量を定義します。 | 1Gi |
|
永続ボリューム要求 (PVC) に使用する |
デフォルト値はありません。デフォルトでは、永続ボリューム要求は |
| 各 Data Grid Pod の CPU の制限を CPU 単位で定義します。 | 500 m |
| 各 Data Grid Pod のメモリーの最大量をバイト単位で定義します。 | 512 Mi |
| 各 Data Grid Pod について、最大の CPU リクエストを CPU 単位で指定します。 | 500 m |
| 各 Data Grid Pod について、最大のメモリー要求をバイト単位で指定します。 | 512 Mi |
| 認証情報を作成し、セキュリティー承認を設定するシークレットの名前を指定します。 |
デフォルト値はありません。カスタムのセキュリティーシークレットを作成する場合、 |
| 起動時に認証情報を作成しセキュリティー承認を設定する、Data Grid コマンドラインインターフェイス (CLI) のバッチファイルを指定します。 | デフォルト値はありません。 |
| ネットワークに Hot Rod および REST エンドポイントを公開し、Data Grid コンソールなどの Data Grid クラスターへのアクセスを提供するサービスを指定します。 |
|
| 30000 から 32767 のデフォルト範囲で、ノードポートサービスのネットワークポートを指定します。 | 0 ポートを指定しないと、プラットフォームは利用可能なポートを選択します。 |
| オプションとして、Route が公開されるホスト名を指定します。 | デフォルト値はありません。 |
| ネットワークに Data Grid を公開するサービスにアノテーションを追加します。 | デフォルト値はありません。 |
| Data Grid クラスターのログカテゴリーおよびレベルを設定します。 | デフォルト値はありません。 |
| 作成する各 Data Grid Pod にラベルを追加します。 | デフォルト値はありません。 |
| 作成する各サービスにラベルを追加します。 | デフォルト値はありません。 |
| Pod およびサービスを含むすべての Data Grid リソースにラベルを追加します。 | デフォルト値はありません。 |
|
各 Data Grid Server ノードの |
|
| StatefulSet Pod で使用される securityContext を設定します。 |
|
|
|
|
| すべての Data Grid クラスターリソースの名前を指定します。 | Helm チャートのリリース名。 |
| クラスターの StatefulSet で使用される nodeAffinity ポリシーを定義します。 |
|
| クラスターの StatefulSet で使用される podAffinity ポリシーを定義します。 |
|
| クラスターの StatefulSet で使用される podAntiAffinity ポリシーを定義します。 |
preferredDuringSchedulingIgnoredDuringExecution: - podAffinityTerm: labelSelector: matchLabels: clusterName: {{ tpl include "infinispan-helm-charts.name" . }} app: infinispan-pod topologyKey: kubernetes.io/hostname weight: 100 |
| Data Grid Server の設定。 | Data Grid は、デフォルトのサーバー設定を提供します。サーバーインスタンスの設定に関する詳細は Data Grid Server の設定値 を参照してください。 |
第2章 Data Grid Server の設定
カスタム Data Grid Server 設定をデプロイメントに適用します。
2.1. Data Grid Server 設定のカスタマイズ
カスタムの deploy.infinispan
値を適用する Data Grid クラスターは、Cache Manager およびセキュリティーレルムまたは Hot Rod および REST エンドポイントなどの基礎となるサーバーメカニズムを設定します。
deploy.infinispan
値を変更する場合は、常にすべての Data Grid Server 設定を指定する必要があります。
Data Grid クラスターのモニタリング機能を使用する場合は、デフォルトの "metrics" 設定を変更または削除しないでください。
手順
必要に応じて Data Grid Server 設定を変更します。
deploy.infinispan.cacheContainer
フィールドで、Cache Manager の設定値を指定します。たとえば、任意の Data Grid 設定で起動時にキャッシュを作成したり、キャッシュテンプレートを追加し、それを使用してオンデマンドでキャッシュを作成したりできます。
-
deploy.infinispan.cacheContainer.security.authorization
フィールドで、ユーザーロールとパーミッションを制御するセキュリティー承認を設定します。 -
デフォルトの JGroups スタックのいずれかを選択するか、
deploy.infinispan.cacheContainer.transport
フィールドでクラスタートランスポートを設定します。 -
deploy.infinispan.server.endpoints
フィールドで、Data Grid Server エンドポイントを設定します。 -
deploy.infinispan.server.interfaces
フィールドおよびdeploy.infinispan.server.socketBindings
フィールドで、Data Grid Server のネットワークインターフェイスおよびポートを設定します。 -
deploy.infinispan.server.security
フィールドで、Data Grid Server のセキュリティーメカニズムを設定します。
2.2. Data Grid Server の設定値
Data Grid Server の設定値で、Cache Manager をカスタマイズし、OpenShift Pod で実行するサーバーインスタンスを変更できます。
Data Grid Server の設定
deploy: infinispan: cacheContainer: # [USER] Add cache, template, and counter configuration. name: default # [USER] Specify `security: null` to disable security authorization. security: authorization: {} transport: cluster: ${infinispan.cluster.name:cluster} node-name: ${infinispan.node.name:} stack: kubernetes server: endpoints: # [USER] Hot Rod and REST endpoints. - securityRealm: default socketBinding: default # [METRICS] Metrics endpoint for cluster monitoring capabilities. - connectors: rest: restConnector: authentication: mechanisms: BASIC securityRealm: metrics socketBinding: metrics interfaces: - inetAddress: value: ${infinispan.bind.address:127.0.0.1} name: public security: credentialStores: - clearTextCredential: clearText: secret name: credentials path: credentials.pfx securityRealms: # [USER] Security realm for the Hot Rod and REST endpoints. - name: default # [USER] Comment or remove this properties realm to disable authentication. propertiesRealm: groupProperties: path: groups.properties groupsAttribute: Roles userProperties: path: users.properties # [METRICS] Security realm for the metrics endpoint. - name: metrics propertiesRealm: groupProperties: path: metrics-groups.properties relativeTo: infinispan.server.config.path groupsAttribute: Roles userProperties: path: metrics-users.properties plainText: true relativeTo: infinispan.server.config.path socketBindings: defaultInterface: public portOffset: ${infinispan.socket.binding.port-offset:0} socketBinding: # [USER] Socket binding for the Hot Rod and REST endpoints. - name: default port: 11222 # [METRICS] Socket binding for the metrics endpoint. - name: metrics port: 11223
Data Grid キャッシュの設定
deploy: infinispan: cacheContainer: distributedCache: name: "mycache" mode: "SYNC" owners: "2" segments: "256" capacityFactor: "1.0" statistics: "true" encoding: mediaType: "application/x-protostream" expiration: lifespan: "5000" maxIdle: "1000" memory: maxCount: "1000000" whenFull: "REMOVE" partitionHandling: whenSplit: "ALLOW_READ_WRITES" mergePolicy: "PREFERRED_NON_NULL" #Provide additional Cache Manager configuration. server: #Provide configuration for server instances.
キャッシュテンプレート
deploy: infinispan: cacheContainer: distributedCacheConfiguration: name: "my-dist-template" mode: "SYNC" statistics: "true" encoding: mediaType: "application/x-protostream" expiration: lifespan: "5000" maxIdle: "1000" memory: maxCount: "1000000" whenFull: "REMOVE" #Provide additional Cache Manager configuration. server: #Provide configuration for server instances.
クラスタートランスポート
deploy: infinispan: cacheContainer: transport: #Specifies the name of a default JGroups stack. stack: kubernetes #Provide additional Cache Manager configuration. server: #Provide configuration for server instances.
第3章 認証および承認の設定
認証情報を追加し、異なるパーミッションを持つロールを割り当てて、Data Grid クラスターへのアクセスを制御します。
3.1. デフォルトの認証情報
Data Grid は、デフォルトの認証情報を <helm_release_name>-generated-secret
シークレットに追加します。
ユーザー名 | 説明 |
---|---|
|
Data Grid リソースへのフルアクセスを持つ |
|
ポート |
関連情報
3.1.1. 認証情報の取得
認証シークレットから Data Grid の認証情報を取得します。
前提条件
- Data Grid Helm チャートをインストールしている。
-
oc
クライアントがある。
手順
以下のコマンドを使用して、
<helm_release_name>-generated-secret
からデフォルトの認証情報を取得するか、別のシークレットからカスタムの認証情報を取得します。$ oc get secret <helm_release_name>-generated-secret \ -o jsonpath="{.data.identities-batch}" | base64 --decode
3.2. カスタムのユーザー認証情報またはクレデンシャルストアの追加
Data Grid ユーザー認証情報を作成し、クラスターアクセスのセキュリティー承認を付与するロールを割り当てます。
手順
deploy.security.batch
フィールドにuser create
コマンドを指定して、認証情報を作成します。暗黙的な承認を持つユーザー
deploy: security: batch: 'user create admin -p changeme'
特定のロールを持つユーザー
deploy: security: batch: 'user create personone -p changeme -g deployer'
3.2.1. ユーザーロールとパーミッション
Data Grid はロールベースのアクセス制御を使用して、ユーザーがクラスターリソースおよびデータにアクセスするのを承認します。セキュリティーを強化するには、認証情報を追加する際に Data Grid ユーザーに適切なロールを付与する必要があります。
Role | パーミッション | 説明 |
---|---|---|
| すべて | Cache Manager ライフサイクルの制御など、すべてのパーミッションを持つスーパーユーザー。 |
| ALL_READ、ALL_WRITE、LISTEN、EXEC、MONITOR、CREATE |
|
| ALL_READ、ALL_WRITE、LISTEN、EXEC、MONITOR |
|
| ALL_READ、MONITOR |
|
| MONITOR | Data Grid クラスターの統計を表示できます。 |
関連情報
3.2.2. クレデンシャルストアの追加
サーバー設定の ConfigMap でパスワードがクリアテキストで公開されるのを防ぐために、Data Grid クレデンシャルストアを作成します。ユースケースについては、「TLS 暗号化の有効化」 を参照してください。
手順
deploy.security.batch
フィールドにcredentials add
コマンドを指定して、クレデンシャルストアを作成します。ストアへのパスワードの追加
deploy: security: batch: 'credentials add keystore -c password -p secret --path="credentials.pfx"'
次に、クレデンシャルストアをサーバー設定に追加する必要があります。
クレデンシャルストアの設定
deploy: infinispan: server: security: credentialStores: - name: credentials path: credentials.pfx clearTextCredential: clearText: "secret"
3.2.3. 認証シークレットを使用した複数の認証情報の追加
認証シークレットを使用して、複数の認証情報を Data Grid クラスターに追加します。
前提条件
-
oc
クライアントがある。
手順
認証情報を追加するコマンドが含まれる
identities-batch
ファイルを作成します。apiVersion: v1 kind: Secret metadata: name: connect-secret type: Opaque stringData: # The "monitor" user authenticates with the Prometheus ServiceMonitor. username: monitor # The password for the "monitor" user. password: password # The key must be 'identities-batch'. # The content is "user create" commands for the Data Grid CLI. identities-batch: |- user create user1 -p changeme -g admin user create user2 -p changeme -g deployer user create monitor -p password --users-file metrics-users.properties --groups-file metrics-groups.properties credentials add keystore -c password -p secret --path="credentials.pfx"
identities-batch
ファイルから認証シークレットを作成します。$ oc apply -f identities-batch.yaml
deploy.security.SecretName
フィールドに認証シークレットを指定します。deploy: security: authentication: true secretName: 'connect-secret'
- Data Grid Helm リリースをインストールまたはアップグレードします。
3.3. 認証の無効化
ユーザーが Data Grid クラスターにアクセスでき、認証情報を提供せずにデータを操作できるようにします。
OpenShift クラスターの外部からエンドポイントにアクセスできる場合は、認証を無効にしないでください。開発環境の認証のみを無効にする必要があります。
手順
-
"default" セキュリティーレルムから
propertiesRealm
フィールドを削除します。 - Data Grid Helm リリースをインストールまたはアップグレードします。
3.4. セキュリティー承認の無効化
Data Grid ユーザーがロールに関係なく任意の操作を実行できるようにします。
手順
null
をdeploy.infinispan.cacheContainer.security
フィールドの値として設定します。ヒントhelm
クライアントで--set deploy.infinispan.cacheContainer.security=null
引数を使用します。- Data Grid Helm リリースをインストールまたはアップグレードします。
第4章 暗号化の設定
Data Grid の暗号化を設定します。
4.1. TLS 暗号化の有効化
暗号化は、エンドポイントとクラスタートランスポートに対して個別に有効にできます。
前提条件
- 証明書またはキーストアを含むシークレット。エンドポイントとクラスターで別々のシークレットを使用してください。
- キーストアにアクセスするために必要なパスワードを含むクレデンシャルキーストア。クレデンシャルキーストアの追加 を参照してください。
手順
デプロイ設定でシークレット名を設定します。
キーストアを含むシークレットの名前を指定します。
deploy: ssl: endpointSecretName: "tls-secret" transportSecretName: "tls-transport-secret"
クラスタートランスポートの TLS を有効にします。
deploy: infinispan: cacheContainer: transport: urn:infinispan:server:15.0:securityRealm: > "cluster-transport" 1 server: security: securityRealms: - name: cluster-transport serverIdentities: ssl: keystore: 2 alias: "server" path: "/etc/encrypt/transport/cert.p12" credentialReference: 3 store: credentials alias: keystore truststore: 4 path: "/etc/encrypt/transport/cert.p12" credentialReference: 5 store: credentials alias: truststore
エンドポイントの TLS を有効にします。
deploy: infinispan: server: security: securityRealms: - name: default serverIdentities: ssl: keystore: path: "/etc/encrypt/endpoint/keystore.p12" 1 alias: "server" 2 credentialReference: store: credentials 3 alias: keystore 4
関連情報
第5章 ネットワークアクセスの設定
Data Grid デプロイメントのネットワークアクセスを設定し、内部ネットワークサービスを確認します。
5.1. ネットワークへの Data Grid クラスターの公開
Data Grid コンソールならびに REST および Hot Rod エンドポイントにアクセスできるように、ネットワークで Data Grid クラスターが利用できるようにします。デフォルトでは、Data Grid チャートはルートを介してデプロイメントを公開しますが、ロードバランサーまたはノードポートを介してクラスターを公開するように設定できます。また、デプロイメントをネットワークに公開せず、内部的に OpenShift クラスターだけが利用できるように Data Grid チャートを設定することもできます。
手順
deploy.expose.type
フィールドに、以下のいずれかを指定します。オプション 説明 Route
ルートを使用して Data Grid を公開します。これはデフォルト値です。
LoadBalancer
ロードバランサーサービスを介して Data Grid を公開します。
NodePort
ノードポートサービスを介して Data Grid を公開します。
""
(空の値)ネットワークに Data Grid を公開するのを無効にします。
-
ルートを介して Data Grid を公開する場合は、オプションとして
deploy.expose.host
フィールドでホスト名を指定します。 -
ノードポートサービスを介して Data Grid を公開する場合は、オプションとして
deploy.expose.nodePort
フィールドでポートを指定します。 - Data Grid Helm リリースをインストールまたはアップグレードします。
5.2. ネットワークサービスの詳細の取得
Data Grid クラスターに接続できるように、ネットワークサービスの詳細を取得します。
前提条件
- ネットワークに Data Grid クラスターを公開している。
-
oc
クライアントがある。
手順
以下のコマンドのいずれかを使用して、ネットワークサービスの詳細を取得します。
ルートを使用して Data Grid を公開する場合:
$ oc get routes
ロードバランサーまたはノードポートサービスを介して Data Grid を公開する場合:
$ oc get services
5.3. ネットワークサービス
Data Grid のチャートは、内部アクセス用のデフォルトのネットワークサービスを作成します。
サービス | ポート | Protocol | 説明 |
---|---|---|---|
|
| TCP | Data Grid Hot Rod および REST エンドポイントへのアクセスを提供します。 |
|
| TCP | Data Grid メトリックへのアクセスを提供します。 |
|
| TCP | Data Grid Pod 同士が相互に検出し、クラスターを形成できるようにします。 |
以下のように、内部ネットワークサービスの詳細を取得できます。
$ oc get services NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) infinispan ClusterIP 192.0.2.0 <none> 11222/TCP,11223/TCP infinispan-ping ClusterIP None <none> 8888/TCP
第6章 Data Grid クラスターへの接続
Data Grid クラスターの設定およびデプロイ後に、Data Grid コンソール、コマンドラインインターフェイス (CLI)、Hot Rod クライアント、または REST API を使用してリモート接続を確立できます。
6.1. Data Grid コンソールへのアクセス
コンソールにアクセスして、キャッシュの作成、管理操作の実行、および Data Grid クラスターの監視を行います。
前提条件
- ネットワークに Data Grid クラスターを公開している。
- ネットワークサービスの詳細を取得している。
手順
$SERVICE_HOSTNAME:$PORT
で任意のブラウザーから Data Grid コンソールにアクセスします。$SERVICE_HOSTNAME:$PORT
を、ネットワーク上で Data Grid を使用できるホスト名とポートに置き換えます。
6.2. コマンドラインインターフェイス (CLI) を使用した接続
Data Grid CLI を使用してクラスターに接続し、キャッシュの作成、データの操作、管理操作を行います。
前提条件
- ネットワークに Data Grid クラスターを公開している。
- ネットワークサービスの詳細を取得している。
- Data Grid ソフトウェアダウンロード から、ネイティブ Data Grid CLI ディストリビューションをダウンロードします。
-
ネイティブ Data Grid CLI ディストリビューションの
.zip
アーカイブをホストファイルシステムにデプロイメントします。
手順
-c
引数の値としてネットワークサービスを指定して、Data Grid CLI を起動します。以下に例を示します。$ {native_cli} -c http://cluster-name-myroute.hostname.net/
- プロンプトが表示されたら、Data Grid の認証情報を入力します。
必要に応じて CLI 操作を実行します。
ヒントTab キーを押すか、
--help
引数を使用して、利用可能なオプションとヘルプテキストを表示します。-
quit
コマンドを使用して CLI を終了します。
6.3. OpenShift で実行されている Hot Rod クライアントの接続
Data Grid クラスターと同じ OpenShift クラスターで実行している Hot Rod クライアントを使用して、リモートキャッシュにアクセスします。
前提条件
- ネットワークサービスの詳細を取得している。
手順
クライアント設定で、Data Grid クラスターの内部ネットワークサービスの詳細を指定します。
以下の設定例では、
$SERVICE_HOSTNAME:$PORT
は、Data Grid クラスターへのアクセスが許可されるホスト名およびポートを示します。- クライアントが Data Grid に対して認証できるように、認証情報を指定します。
必要に応じてクライアントのインテリジェンスを設定します。
OpenShift 上で実行される Hot Rod クライアントは、Data Grid Pod の内部 IP アドレスにアクセスできるため、任意のクライアントのインテリジェンスを使用できます。
デフォルトのインテリジェンスであるHASH_DISTRIBUTION_AWARE
が推奨されます。これにより、クライアントはリクエストをプライマリーオーナーにルーティングできるようになり、パフォーマンスが向上します。
プログラムによる設定
import org.infinispan.client.hotrod.configuration.ConfigurationBuilder; import org.infinispan.client.hotrod.configuration.SaslQop; import org.infinispan.client.hotrod.impl.ConfigurationProperties; ... ConfigurationBuilder builder = new ConfigurationBuilder(); builder.addServer() .host("$SERVICE_HOSTNAME") .port(ConfigurationProperties.DEFAULT_HOTROD_PORT) .security().authentication() .username("username") .password("changeme") .realm("default") .saslQop(SaslQop.AUTH) .saslMechanism("SCRAM-SHA-512");
Hot Rod クライアントプロパティー
# Connection infinispan.client.hotrod.server_list=$SERVICE_HOSTNAME:$PORT # Authentication infinispan.client.hotrod.use_auth=true 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=SCRAM-SHA-512
6.3.1. すべての Data Grid Pod の IP アドレスを取得する
実行中の Data Grid Pod の全 IP アドレスを含むリストを取得できます。
OpenShift で実行されている Hot Rod クライアントの接続 が推奨される方法です。利用可能ないずれかの Pod への初期接続が確保されるためです。
手順
次の方法で、実行中の Data Grid Pod の全 IP アドレスを取得します。
OpenShift API を使用する場合:
-
${APISERVER}/api/v1/namespaces/<chart-namespace>/endpoints/<helm-release-name>
にアクセスして、<helm-release-name>
サービスに関連付けられているendpoints
OpenShift リソースを取得します。
-
OpenShift DNS サービスを使用する場合:
-
DNS サービスに
<helm-release-name>-ping
という名前をクエリーして、クラスター内の全ノードの IP を取得します。
-
DNS サービスに
6.4. OpenShift の外部で実行されている Hot Rod クライアントの接続
Data Grid クラスターをデプロイしている OpenShift クラスターの外部で実行されている Hot Rod クライアントを使用して、リモートキャッシュにアクセスします。
前提条件
- ネットワークに Data Grid クラスターを公開している。
- ネットワークサービスの詳細を取得している。
手順
クライアント設定で、Data Grid クラスターの内部ネットワークサービスの詳細を指定します。
以下の設定例では、
$SERVICE_HOSTNAME:$PORT
は、Data Grid クラスターへのアクセスが許可されるホスト名およびポートを示します。- クライアントが Data Grid に対して認証できるように、認証情報を指定します。
-
BASIC
インテリジェンスを使用するようにクライアントを設定します。
プログラムによる設定
import org.infinispan.client.hotrod.configuration.ClientIntelligence; import org.infinispan.client.hotrod.configuration.ConfigurationBuilder; import org.infinispan.client.hotrod.configuration.SaslQop; ... ConfigurationBuilder builder = new ConfigurationBuilder(); builder.addServer() .host("$SERVICE_HOSTNAME") .port("$PORT") .security().authentication() .username("username") .password("changeme") .realm("default") .saslQop(SaslQop.AUTH) .saslMechanism("SCRAM-SHA-512"); builder.clientIntelligence(ClientIntelligence.BASIC);
Hot Rod クライアントプロパティー
# Connection infinispan.client.hotrod.server_list=$SERVICE_HOSTNAME:$PORT # Client intelligence infinispan.client.hotrod.client_intelligence=BASIC # Authentication infinispan.client.hotrod.use_auth=true 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=SCRAM-SHA-512
6.5. REST API へのアクセス
Data Grid は、HTTP クライアントを使用して対話できる RESTful インターフェイスを提供します。
前提条件
- ネットワークに Data Grid クラスターを公開している。
- ネットワークサービスの詳細を取得している。
手順
$SERVICE_HOSTNAME:$PORT/rest/v2
の任意の HTTP クライアントで REST API にアクセスします。$SERVICE_HOSTNAME:$PORT
を、ネットワーク上で Data Grid を使用できるホスト名とポートに置き換えます。
関連情報