Data Grid Library Mode
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 Maven リポジトリーの設定 リンクのコピーリンクがクリップボードにコピーされました!
Data Grid Java ディストリビューションは Maven から入手できます。
顧客ポータルから Data Grid Maven リポジトリーをダウンロードするか、パブリック Red Hat Enterprise Maven リポジトリーから Data Grid 依存関係をプルできます。
1.1. Data Grid Maven リポジトリーのダウンロード リンクのコピーリンクがクリップボードにコピーされました!
パブリック Red Hat Enterprise Maven リポジトリーを使用しない場合は、ローカルファイルシステム、Apache HTTP サーバー、または Maven リポジトリーマネージャーに Data Grid Maven リポジトリーをダウンロードし、インストールします。
手順
- Red Hat カスタマーポータルにログインします。
- Software Downloads for Data Grid に移動します。
- Red Hat Data Grid 8.1 Maven リポジトリーをダウンロードします。
- アーカイブされた Maven リポジトリーをローカルファイルシステムにデプロイメントします。
-
README.mdファイルを開き、適切なインストール手順に従います。
1.2. Red Hat Maven リポジトリーの追加 リンクのコピーリンクがクリップボードにコピーされました!
Red Hat GA リポジトリーを Maven ビルド環境に組み込み、Data Grid アーティファクトおよび依存関係を取得します。
手順
Red Hat GA リポジトリーを Maven 設定ファイル (通常は
~/.m2/settings.xml) に追加するか、プロジェクトのpom.xmlファイルに直接追加します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow
1.3. Data Grid POM の設定 リンクのコピーリンクがクリップボードにコピーされました!
Maven は、プロジェクトオブジェクトモデル (POM) ファイルと呼ばれる設定ファイルを使用して、プロジェクトを定義し、ビルドを管理します。POM ファイルは XML 形式であり、モジュールとコンポーネントの依存関係、ビルドの順序、および結果となるプロジェクトのパッケージ化と出力のターゲットを記述します。
手順
-
プロジェクト
pom.xmlを開いて編集します。 -
正しい Data Grid バージョンで
version.infinispanプロパティーを定義します。 dependencyManagementセクションにinfinispan-bomを含めます。BOM(Bill of Materials) は、依存関係バージョンを制御します。これにより、バージョンの競合が回避され、プロジェクトに依存関係として追加する Data Grid アーティファクトごとにバージョンを設定する必要がなくなります。
-
pom.xmlを保存して閉じます。
以下の例は、Data Grid のバージョンと BOM を示しています。
次のステップ
必要に応じて、Data Grid アーティファクトを依存関係として pom.xml に追加します。
第2章 ライブラリーモードでの Data Grid のインストール リンクのコピーリンクがクリップボードにコピーされました!
Data Grid を組み込みライブラリーとしてプロジェクトに追加します。
手順
-
以下のように、
infinispan-coreアーティファクトをpom.xmlの依存関係として追加します。
第3章 Data Grid を組み込みライブラリーとして実行 リンクのコピーリンクがクリップボードにコピーされました!
Data Grid を組み込みデータストアとしてプロジェクトで実行する方法を学びます。
手順
- デフォルトの Cache Manager を初期化し、以下のようにキャッシュ定義を追加します。
GlobalConfigurationBuilder global = GlobalConfigurationBuilder.defaultClusteredBuilder();
DefaultCacheManager cacheManager = new DefaultCacheManager(global.build());
ConfigurationBuilder builder = new ConfigurationBuilder();
builder.clustering().cacheMode(CacheMode.DIST_SYNC);
cacheManager.administration().withFlags(CacheContainerAdmin.AdminFlag.VOLATILE).getOrCreateCache("myCache", builder.build());
GlobalConfigurationBuilder global = GlobalConfigurationBuilder.defaultClusteredBuilder();
DefaultCacheManager cacheManager = new DefaultCacheManager(global.build());
ConfigurationBuilder builder = new ConfigurationBuilder();
builder.clustering().cacheMode(CacheMode.DIST_SYNC);
cacheManager.administration().withFlags(CacheContainerAdmin.AdminFlag.VOLATILE).getOrCreateCache("myCache", builder.build());
上記のコードは、デフォルトのクラスター化された Cache Manager を初期化します。Cache Manager にはキャッシュ定義が含まれ、キャッシュライフサイクルを制御します。
Data Grid はデフォルトのキャッシュ定義を提供しないため、デフォルトの Cache Manager を初期化した後に、少なくとも 1 つのキャッシュインスタンスを追加する必要があります。この例では、ConfigurationBuilder クラスを使用して、分散型同期キャッシュモードを使用するキャッシュ定義を作成します。次に、クラスターのすべてのノードで "myCache" という名前のキャッシュを作成するか、すでに存在する場合はこれを返す getOrCreateCache() メソッドを呼び出します。
次のステップ
キャッシュが作成された実行中の Cache Manager ができたので、必要に応じて、キャッシュ定義を追加したり、データをキャッシュに入れたり、Data Grid を設定したりできます。
第4章 Setting Up Data Grid Clusters リンクのコピーリンクがクリップボードにコピーされました!
Data Grid には、ノードがクラスターに自動的に参加および離脱できるように、トランスポート層が必要です。また、トランスポート層により、Data Grid ノードはネットワーク上でデータを複製または分散し、リバランスや状態遷移などの操作を実施することができます。
4.1. デフォルトスタックの使用開始 リンクのコピーリンクがクリップボードにコピーされました!
Data Grid は JGroups プロトコルスタックを使用するため、ノードは専用のクラスターチャネルに相互に送信できるようにします。
Data Grid は、UDP プロトコルおよび TCP プロトコルに事前設定された JGroups スタックを提供します。これらのデフォルトスタックは、ネットワーク要件向けに最適化されたカスタムクラスタートランスポート設定を構築する際の開始点として使用することができます。
手順
-
infinispan-core-11.0.9.Final-redhat-00001.jarファイル内のdefault-configsディレクトリーで、デフォルトの JGroups スタックdefault-jgroups-*.xmlを見つけます。 次のいずれかを行います。
infinispan.xmlファイルのstack属性を使用します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- クラスタートランスポートには
default-jgroups-udp.xmlを使用します。
addProperty()メソッドを使用して JGroups スタックファイルを設定します。GlobalConfiguration globalConfig = new GlobalConfigurationBuilder().transport() .defaultTransport() .clusterName("qa-cluster") .addProperty("configurationFile", "default-jgroups-udp.xml") .build();GlobalConfiguration globalConfig = new GlobalConfigurationBuilder().transport() .defaultTransport() .clusterName("qa-cluster") .addProperty("configurationFile", "default-jgroups-udp.xml")1 .build();Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- クラスタートランスポートに
default-jgroups-udp.xmlスタックを使用します。
Data Grid は、以下のメッセージをログに記録して、使用するスタックを示します。
[org.infinispan.CLUSTER] ISPN000078: Starting JGroups channel cluster with stack udp
[org.infinispan.CLUSTER] ISPN000078: Starting JGroups channel cluster with stack udp
参照資料
- JGroups cluster transport configuration for Data Grid 8.x (Red Hat ナレッジベースの記事)
4.1.1. デフォルトの JGroups スタック リンクのコピーリンクがクリップボードにコピーされました!
クラスタートランスポートを設定するデフォルトの JGroups スタックについて説明します。
| File name | スタック名 | 説明 |
|---|---|---|
|
|
| トランスポートに UDP を使用し、検出に UDP マルチキャストを使用します。(100 ノードを超える) 大規模なクラスター、またはレプリケートされたキャッシュまたは無効化モードを使用している場合に適しています。オープンソケットの数を最小限に抑えます。 |
|
|
|
トランスポートには TCP を使用し、検出には |
|
|
|
トランスポートに TCP を使用し、検出に |
|
|
|
トランスポートに TCP を使用し、検出に |
|
|
|
トランスポートに TCP を使用し、検出に |
|
|
|
トランスポートに TCP を使用し、検出に |
4.1.2. クラスタートラフィックの TCP および UDP ポート リンクのコピーリンクがクリップボードにコピーされました!
Data Grid は、クラスタートランスポートメッセージに以下のポートを使用します。
| デフォルトのポート | プロトコル | 説明 |
|---|---|---|
|
| TCP/UDP | JGroups クラスターバインドポート |
|
| UDP | JGroups マルチキャスト |
クロスサイトレプリケーション
Data Grid は、JGroups RELAY2 プロトコルに以下のポートを使用します。
7900- OpenShift で実行している Data Grid クラスターの向け。
7800- ノード間のトラフィックに UDP を使用し、クラスター間のトラフィックに TCP を使用する場合。
7801- ノード間のトラフィックに TCP を使用し、クラスター間のトラフィックに TCP を使用する場合。
4.2. JGroups スタックのカスタマイズ リンクのコピーリンクがクリップボードにコピーされました!
プロパティーを調整してチューニングし、ネットワーク要件に対応するクラスタートランスポート設定を作成します。
Data Grid は、設定を容易にするためにデフォルトの JGroups スタックを拡張する属性を提供します。他のプロパティーを組み合わせてデフォルトスタックからプロパティーの継承、削除、置き換えを行うことができます。
手順
infinispan.xmlファイルに新しい JGroups スタック宣言を作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- "my-stack" という名前のカスタム JGroups スタックを作成します。
extends属性を追加し、プロパティーを継承する JGroups スタックを指定します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- デフォルトの TCP スタックから継承します。
-
stack.combine属性を使用して、継承されたスタックに設定されたプロトコルのプロパティーを変更します。 stack.position属性を使用して、カスタムスタックの場所を定義します。たとえば、以下のようにデフォルトの TCP スタックで Gosssip ルーターと対称暗号化を使用して評価できます。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow スタック名を
transport設定のstack属性の値として指定します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- クラスタートランスポートに "my-stack" を使用するように Data Grid を設定します。
Data Grid ログをチェックして、スタックを使用していることを確認します。
[org.infinispan.CLUSTER] ISPN000078: Starting JGroups channel cluster with stack my-stack
[org.infinispan.CLUSTER] ISPN000078: Starting JGroups channel cluster with stack my-stackCopy to Clipboard Copied! Toggle word wrap Toggle overflow
参照資料
- JGroups cluster transport configuration for Data Grid 8.x (Red Hat ナレッジベースの記事)
4.2.1. 継承属性 リンクのコピーリンクがクリップボードにコピーされました!
JGroups スタックを拡張すると、継承属性により、拡張しているスタックでプロトコルやプロパティーを調整できます。
-
stack.positionは、変更するプロトコルを指定します。 stack.combineは、次の値を使用して JGroups スタックを拡張します。Expand 値 説明 COMBINEプロトコルプロパティーをオーバーライドします。
REPLACEプロトコルを置き換えます。
INSERT_AFTER別のプロトコルの後にプロトコルをスタックに追加します。挿入ポイントとして指定するプロトコルには影響しません。
JGroups スタックのプロトコルは、スタック内の場所を基にして相互に影響します。
NAKACK2がセキュリティーで保護されるように、たとえば、SYM_ENCRYPTプロトコルまたはASYM_ENCRYPTプロトコル後にNAKACK2などのプロトコルを置く必要があります。REMOVEスタックからプロトコルを削除します。
4.3. JGroups システムプロパティーの使用 リンクのコピーリンクがクリップボードにコピーされました!
起動時にシステムプロパティーを Data Grid に渡して、クラスターのトランスポートを調整します。
手順
-
-D<property-name>=<property-value>引数を使用して JGroups システムプロパティーを必要に応じて設定します。
たとえば、以下のようにカスタムバインドポートと IP アドレスを設定します。
java -cp ... -Djgroups.bind.port=1234 -Djgroups.bind.address=192.0.2.0
$ java -cp ... -Djgroups.bind.port=1234 -Djgroups.bind.address=192.0.2.0
クラスター化された Red Hat JBoss EAP アプリケーションに Data Grid クラスターを組み込むと、JGroups システムプロパティーは競合したり、互いに上書きしたりする可能性があります。
たとえば、Data Grid クラスターまたは Red Hat JBoss EAP アプリケーションのいずれかに一意のバインドアドレスを設定しないでください。この場合、Data Grid と Red Hat JBoss EAP アプリケーションの両方が JGroups のデフォルトプロパティーを使用し、同じバインドアドレスを使用してクラスターを形成しようとします。
4.3.1. JGroups スタックのシステムプロパティー リンクのコピーリンクがクリップボードにコピーされました!
JGroups クラスタートランスポートスタックを設定するシステムプロパティーを設定します。
| システムプロパティー | 説明 | Default Value | 必須/オプション |
|---|---|---|---|
|
| クラスタートランスポートのバインドアドレス。 |
| オプション |
|
| ソケットのバインドポート。 |
| オプション |
|
| マルチキャストの IP アドレス (検出およびクラスター間の通信の両方)。IP アドレスは、IP マルチキャストに適した有効なクラス D アドレスである必要があります。 |
| オプション |
|
| マルチキャストソケットのポート。 |
| オプション |
|
| IP マルチキャストパケットの Time-to-live (TTL)この値は、パケットが破棄される前にパケットが作成できるネットワークホップの数を定義します。 | 2 | オプション |
|
| スレッドプールの最小スレッド数 | 0 | オプション |
|
| スレッドプールの最大スレッド数 | 200 | オプション |
|
| 結合リクエストが正常に実行されるまで待機する最大時間 (ミリ秒単位)。 | 2000 | オプション |
|
| スレッドダンプがログに記録される前にスレッドプールが満杯である必要がある回数。 | 10000 | オプション |
Amazon EC3
以下のシステムプロパティーは default-jgroups-ec2.xml のみに適用されます。
| システムプロパティー | 説明 | Default Value | 必須/オプション |
|---|---|---|---|
|
| S3 バケットの Amazon S3 アクセスキー。 | デフォルト値はありません。 | オプション |
|
| S3 バケットに使用される Amazon S3 シークレットキー。 | デフォルト値はありません。 | オプション |
|
| Amazon S3 バケットの名前。名前は存在し、一意でなければなりません。 | デフォルト値はありません。 | オプション |
Kubernetes
以下のシステムプロパティーは default-jgroups-kubernetes.xml のみに適用されます。
| システムプロパティー | 説明 | Default Value | 必須/オプション |
|---|---|---|---|
|
| クラスターメンバーを返す DNS レコードを設定します。 | デフォルト値はありません。 | 必須 |
Google Cloud Platform
以下のシステムプロパティーは default-jgroups-google.xml のみに適用されます。
| システムプロパティー | 説明 | Default Value | 必須/オプション |
|---|---|---|---|
|
| Google Compute Engine バケットの名前。名前は存在し、一意でなければなりません。 | デフォルト値はありません。 | 必須 |
4.4. インライン JGroups スタックの使用 リンクのコピーリンクがクリップボードにコピーされました!
完全な JGroups スタックの定義を infinispan.xml ファイルに挿入することができます。
4.5. 外部 JGroups スタックの使用 リンクのコピーリンクがクリップボードにコピーされました!
infinispan.xml ファイルでカスタム JGroups スタックを定義する外部ファイルを参照します。
4.6. クラスター検出プロトコル リンクのコピーリンクがクリップボードにコピーされました!
Data Grid は、ノードがネットワーク上でお互いを自動的に見つけてクラスターを形成できるようにするさまざまなプロトコルをサポートしています。
Data Grid が使用できる 2 種類の検出メカニズムがあります。
- ほとんどのネットワークで機能する汎用検出プロトコルで、外部サービスに依存しません。
-
Data Grid クラスターのトポロジー情報を保存し、取得するために外部サービスに依存する検出プロトコル。
たとえば、DNS_PING プロトコルは DNS サーバーレコードで検出を実行します。
ホスト型プラットフォームで Data Grid を実行するには、個別のクラウドプロバイダーが課すネットワーク制約に適合する検出メカニズムを使用する必要があります。
参照資料
- JGroups Discovery Protocols
- JGroups cluster transport configuration for Data Grid 8.x (Red Hat ナレッジベースの記事)
4.6.1. PING リンクのコピーリンクがクリップボードにコピーされました!
PING または UDPPING は、UDP プロトコルで動的なマルチキャストを使用する一般的な JGroups 検出メカニズムです。
結合時に、ノードは IP マルチキャストアドレスに PING 要求を送信し、Data Grid クラスターにある他のノードを検出します。各ノードは、コーディネーターノードのアドレスとその独自のアドレスが含まれるパケットで PING リクエストに応答します。C はコーディネーターのアドレスで、A は自分のアドレスです。ノードが PING 要求に応答すると、結合ノードは新しいクラスターのコーディネーターノードになります。
PING 設定の例
<config> <PING num_discovery_runs="3"/> ... </config>
<config>
<PING num_discovery_runs="3"/>
...
</config>
参照
4.6.2. TCPPING リンクのコピーリンクがクリップボードにコピーされました!
TCPPING は、クラスターメンバーの静的アドレスリストを使用する汎用 JGroups 検索メカニズムです。
TCPPING を使用すると、ノードが相互に動的に検出できるようにするのではなく、JGroups スタックの一部として Data Grid クラスター内の各ノードの IP アドレスまたはホスト名を手動で指定します。
TCPPING 設定の例
- 1
- 検出の信頼性を高めるために、Red Hat は
port-range=0を推奨します。
4.6.3. MPING リンクのコピーリンクがクリップボードにコピーされました!
MPING は IP マルチキャストを使用して Data Grid クラスターの初期メンバーシップを検出します。
MPING を使用して TCPPING 検出を TCP スタックに置き換え、初期ホストの静的リストの代わりに、検出にマルチキャストを使用できます。ただし、UDP スタックで MPING を使用することもできます。
MPING 設定の例
4.6.4. TCPGOSSIP リンクのコピーリンクがクリップボードにコピーされました!
gossip ルーターは、Data Grid クラスターが他のノードのアドレスを取得できるネットワーク上の集中的な場所を提供します。
以下のように、Gosssip ルーターのアドレス (IP:PORT) を Data Grid ノードに挿入します。
-
このアドレスをシステムプロパティーとして JVM に渡します (例:
-DGossipRouterAddress="10.10.2.4[12001]")。 - JGroups 設定ファイルのそのシステムプロパティーを参照します。
Gossip ルーター設定の例
4.6.5. JDBC_PING リンクのコピーリンクがクリップボードにコピーされました!
JDBC_PING は共有データベースを使用して Data Grid クラスターに関する情報を保存します。このプロトコルは、JDBC 接続を使用できるすべてのデータベースをサポートします。
ノードは IP アドレスを共有データベースに書き込むため、ノードに結合してネットワーク上の Data Grid クラスターを検索できます。ノードが Data Grid クラスターから離脱すると、そのノードの IP アドレスが共有データベースから削除されます。
JDBC_PING 設定の例
適切な JDBC ドライバーをクラスパスに追加して、Data Grid が JDBC_PING を使用できるようにします。
4.6.6. DNS_PING リンクのコピーリンクがクリップボードにコピーされました!
JGroups DNS_PING は DNS サーバーをクエリーし、OKD や Red Hat OpenShift などの Kubernetes 環境で Data Grid クラスターメンバーを検出します。
DNS_PING 設定の例
<config> <dns.DNS_PING dns_query="myservice.myproject.svc.cluster.local" /> ... </config>
<config>
<dns.DNS_PING dns_query="myservice.myproject.svc.cluster.local" />
...
</config>
参照
- JGroups DNS_PING
- DNS for Services and Pods (DNS エントリーを追加するための Kubernetes ドキュメント)
4.7. カスタム JChannels の使用 リンクのコピーリンクがクリップボードにコピーされました!
以下の例のように、カスタム JGroups JChannels を構築します。
Data Grid は、すでに接続されているカスタム JChannels を使用できません。
4.8. クラスタートランスポートの暗号化 リンクのコピーリンクがクリップボードにコピーされました!
ノードが暗号化されたメッセージと通信できるように、クラスタートランスポートを保護します。また、有効なアイデンティティーを持つノードのみが参加できるように、証明書認証を実行するように Data Grid クラスターを設定することもできます。
4.8.1. Data Grid クラスターのセキュリティー リンクのコピーリンクがクリップボードにコピーされました!
クラスタートラフィックのセキュリティーを保護するには、Data Grid ノードを設定し、シークレットキーで JGroups メッセージペイロードを暗号化します。
Data Grid ノードは、以下のいずれかから秘密鍵を取得できます。
- コーディネーターノード (非対称暗号化)
- 共有キーストア (対称暗号化)
コーディネーターノードからの秘密鍵の取得
非対称暗号化は、Data Grid 設定の JGroups スタックに ASYM_ENCRYPT プロトコルを追加して対称暗号化を設定します。これにより、Data Grid クラスターはシークレットキーを生成して配布できます。
非対称暗号化を使用する場合は、ノードが証明書認証を実行し、シークレットキーを安全に交換できるようにキーストアを提供する必要もあります。これにより、中間者 (MitM) 攻撃からクラスターが保護されます。
非対称暗号化は、以下のようにクラスタートラフィックのセキュリティーを保護します。
- Data Grid クラスターの最初のノードであるコーディネーターノードは、秘密鍵を生成します。
- 参加ノードは、コーディネーターとの証明書認証を実行して、相互に ID を検証します。
- 参加ノードは、コーディネーターノードに秘密鍵を要求します。その要求には、参加ノードの公開鍵が含まれています。
- コーディネーターノードは、秘密鍵を公開鍵で暗号化し、参加ノードに返します。
- 参加ノードは秘密鍵を復号してインストールします。
- ノードはクラスターに参加し、秘密鍵でメッセージを暗号化および復号化します。
共有キーストアからの秘密鍵の取得
対称暗号化は、Data Grid 設定の JGroups スタックに SYM_ENCRYPT プロトコルを追加して対称暗号化を設定します。これにより、Data Grid クラスターは、指定したキーストアから秘密鍵を取得できます。
- ノードは、起動時に Data Grid クラスパスのキーストアから秘密鍵をインストールします。
- ノードはクラスターに参加し、秘密鍵でメッセージを暗号化および復号化します。
非対称暗号化と対称暗号化の比較
証明書認証を持つ ASYM_ENCRYPT は、SYM_ENCRYPT と比較して、暗号化の追加の層を提供します。秘密鍵のコーディネーターノードへのリクエストを暗号化するキーストアを提供します。Data Grid は、そのシークレットキーを自動的に生成し、クラスタートラフィックを処理し、秘密鍵の生成時に指定します。たとえば、ノードが離れる場合に新規のシークレットキーを生成するようにクラスターを設定できます。これにより、ノードが証明書認証を回避して古いキーで参加できなくなります。
一方、SYM_ENCRYPT は ASYM_ENCRYPT よりも高速です。ノードがクラスターコーディネーターとキーを交換する必要がないためです。SYM_ENCRYPT への潜在的な欠点は、クラスターのメンバーシップの変更時に新規シークレットキーを自動的に生成するための設定がないことです。ユーザーは、ノードがクラスタートラフィックを暗号化するのに使用するシークレットキーを生成して配布する必要があります。
4.8.2. 非対称暗号化を使用したクラスタートランスポートの設定 リンクのコピーリンクがクリップボードにコピーされました!
Data Grid クラスターを設定し、JGroups メッセージを暗号化するシークレットキーを生成して配布します。
手順
- Data Grid がノードの ID を検証できるようにする証明書チェーンでキーストアを作成します。
クラスター内の各ノードのクラスパスにキーストアを配置します。
Data Grid Server の場合は、$RHDG_HOME ディレクトリーにキーストアを配置します。
以下の例のように、
SSL_KEY_EXCHANGEプロトコルおよびASYM_ENCRYPTプロトコルを Data Grid 設定の JGroups スタックに追加します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- Data Grid のデフォルト TCP スタックを拡張する "encrypt-tcp" という名前のセキュアな JGroups スタックを作成します。
- 2
- ノードが証明書認証を実行するために使用するキーストアに名前を付けます。
- 3
- キーストアのパスワードを指定します。
- 4
stack.combine属性とstack.position属性を使用して、デフォルトの TCP スタックのVERIFY_SUSPECTプロトコルの後にSSL_KEY_EXCHANGEを挿入します。- 5
- コーディネーターノードが生成する秘密鍵の長さを指定します。デフォルト値は
2048です。 - 6
- コーディネーターノードが秘密鍵の生成に使用する暗号化エンジンを指定します。デフォルト値は
RSAです。 - 7
- コーディネーターノードが変更されたときに新しい秘密鍵を生成して配布するように Data Grid を設定します。
- 8
- ノードが離脱するときに新しい秘密鍵を生成して配布するように Data Grid を設定します。
- 9
- 証明書認証に
SSL_KEY_EXCHANGEプロトコルを使用するように Data Grid ノードを設定します。 - 10
stack.combine属性とstack.position属性を使用して、デフォルトの TCP スタックのSSL_KEY_EXCHANGEプロトコルの後にASYM_ENCRYPTを挿入します。- 11
- セキュアな JGroups スタックを使用するように Data Grid クラスターを設定します。
検証
Data Grid クラスターを起動した際、以下のログメッセージは、クラスターがセキュアな JGroups スタックを使用していることを示しています。
[org.infinispan.CLUSTER] ISPN000078: Starting JGroups channel cluster with stack <encrypted_stack_name>
[org.infinispan.CLUSTER] ISPN000078: Starting JGroups channel cluster with stack <encrypted_stack_name>
Data Grid ノードは ASYM_ENCRYPT を使用している場合のみクラスターに参加でき、コーディネーターノードからシークレットキーを取得できます。それ以外の場合は、次のメッセージが Data Grid ログに書き込まれます。
[org.jgroups.protocols.ASYM_ENCRYPT] <hostname>: received message without encrypt header from <hostname>; dropping it
[org.jgroups.protocols.ASYM_ENCRYPT] <hostname>: received message without encrypt header from <hostname>; dropping it
参照資料
この手順の ASYM_ENCRYPT の設定例は、一般的に使用されるパラメーターを示しています。利用可能なパラメーターの完全なセットについては、JGroups のドキュメントを参照してください。
4.8.3. 対称暗号化を使用したクラスタートランスポートの設定 リンクのコピーリンクがクリップボードにコピーされました!
指定したキーストアからの秘密鍵を使用して JGroups メッセージを暗号化するように Data Grid クラスターを設定します。
手順
- シークレットキーが含まれるキーストアを作成します。
クラスター内の各ノードのクラスパスにキーストアを配置します。
Data Grid Server の場合は、$RHDG_HOME ディレクトリーにキーストアを配置します。
次の例のように、Data Grid 設定の JGroups スタックに
SYM_ENCRYPTプロトコルを追加します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- Data Grid のデフォルト TCP スタックを拡張する "encrypt-tcp" という名前のセキュアな JGroups スタックを作成します。
- 2
- ノードが秘密鍵を取得するキーストアに名前を付けます。
- 3
- キーストアのタイプを指定します。JGroups はデフォルトで JCEKS を使用します。
- 4
- キーストアのパスワードを指定します。
- 5
- 秘密鍵のパスワードを指定します。
- 6
- 秘密鍵のエイリアスを指定します。
- 7
stack.combine属性とstack.position属性を使用して、デフォルトの TCP スタックのVERIFY_SUSPECTプロトコルの後にSYM_ENCRYPTを挿入します。- 8
- セキュアな JGroups スタックを使用するように Data Grid クラスターを設定します。
検証
Data Grid クラスターを起動した際、以下のログメッセージは、クラスターがセキュアな JGroups スタックを使用していることを示しています。
[org.infinispan.CLUSTER] ISPN000078: Starting JGroups channel cluster with stack <encrypted_stack_name>
[org.infinispan.CLUSTER] ISPN000078: Starting JGroups channel cluster with stack <encrypted_stack_name>
Data Grid ノードは、SYM_ENCRYPT を使用し、共有キーストアからシークレットキーを取得できる場合に限りクラスターに参加できます。それ以外の場合は、次のメッセージが Data Grid ログに書き込まれます。
[org.jgroups.protocols.SYM_ENCRYPT] <hostname>: received message without encrypt header from <hostname>; dropping it
[org.jgroups.protocols.SYM_ENCRYPT] <hostname>: received message without encrypt header from <hostname>; dropping it
参照資料
この手順の SYM_ENCRYPT の設定例は、一般的に使用されるパラメーターを示しています。利用可能なパラメーターの完全なセットについては、JGroups のドキュメントを参照してください。