10.3. トランスポートスタック
トランスポートスタックにより、クラスター内の分散キャッシュノードは信頼できる方法で通信できます。Red Hat build of Keycloak は、幅広いトランスポートスタックをサポートしています。
- tcp
- udp
- kubernetes
- ec2
- azure
特定のキャッシュスタックを適用するには、次のコマンドを入力します。
bin/kc.[sh|bat] start --cache-stack=<stack>
分散キャッシュが有効な場合、デフォルトのスタックが udp に設定されます。
10.3.1. 利用可能なトランスポートスタック リンクのコピーリンクがクリップボードにコピーされました!
次の表は、--cache-stack ビルドオプションを使用する以外の設定を行わずに使用できるトランスポートスタックを示しています。
| スタック名 | トランスポートプロトコル | 検出 |
|---|---|---|
| tcp | TCP | MPING (UDP マルチキャストを使用)。 |
| udp | UDP | UDP マルチキャスト |
次の表は、--cache-stack ランタイムオプションと最小設定を使用して使用できるトランスポートスタックを示しています。
| スタック名 | トランスポートプロトコル | 検出 |
|---|---|---|
| kubernetes | TCP |
DNS_PING ( |
10.3.2. 追加のトランスポートスタック リンクのコピーリンクがクリップボードにコピーされました!
次の表は、Red Hat build of Keycloak でサポートされているトランスポートスタックを示しています。ただし、動作するには追加の手順が必要です。これらのスタックは、いずれも Kubernetes/OpenShift スタックでは ありません。そのため、Google Kubernetes エンジン上で Red Hat build of Keycloak を実行する場合は、google スタックを有効にする必要はありません。その場合は、kubernetes スタックを使用します。AWS EC2 インスタンスで実行されている分散キャッシュセットアップがある場合は、スタックを ec2 に設定する必要があります。これは、ec2 が UDP などのデフォルトの検出メカニズムをサポートしていないためです。
| スタック名 | トランスポートプロトコル | 検出 |
|---|---|---|
| ec2 | TCP | NATIVE_S3_PING |
| | TCP | GOOGLE_PING2 |
| azure | TCP | AZURE_PING |
クラウドベンダー固有のスタックには、Red Hat build of Keycloak に対する追加の依存関係があります。これらの依存関係のあるリポジトリーの詳細およびリンクに関する詳細は、Infinispan のドキュメント を参照してください。
Red Hat build of Keycloak の依存関係を提供するには、次のコマンドを入力して、それぞれの JAR を providers ディレクトリーに配置し、Red Hat build of Keycloak をビルドします。
bin/kc.[sh|bat] start --cache-stack=<ec2|google|azure>
10.3.3. カスタムのトランスポートスタック リンクのコピーリンクがクリップボードにコピーされました!
使用可能なトランスポートスタックがデプロイメントに適切ではない場合、キャッシュ設定ファイルを変更して、独自のトランスポートスタックを定義できます。
詳細は、Using inline JGroups stacks を参照してください。
UDP を使用した暗号化によるカスタムスタックの定義
<jgroups>
<stack name="my-encrypt-udp" extends="udp">
<SSL_KEY_EXCHANGE keystore_name="server.jks"
keystore_password="password"
stack.combine="INSERT_AFTER"
stack.position="VERIFY_SUSPECT2"/>
<ASYM_ENCRYPT asym_keylength="2048"
asym_algorithm="RSA"
change_key_on_coord_leave = "false"
change_key_on_leave = "false"
use_external_key_exchange = "true"
stack.combine="INSERT_BEFORE"
stack.position="pbcast.NAKACK2"/>
</stack>
</jgroups>
<cache-container name="keycloak">
<transport lock-timeout="60000" stack="my-encrypt-udp"/>
...
</cache-container>
お使いの環境で IP マルチキャスト(または UDP)が利用できない場合は、以下の例のように IP アドレスの静的リストを使用して Red Hat build of Keycloak を設定します。
マルチキャスト検出なしでカスタムスタックを定義する
<jgroups>
<stack name="tcpping" extends="tcp">
<TCPPING initial_hosts="192.168.1.1[7800],192.168.1.2[7800]"
stack.combine="REPLACE"
stack.position="MPING"/>
</stack>
</jgroups>
<cache-container name="keycloak">
<transport lock-timeout="60000" stack="tcpping"/>
...
</cache-container>
- 1
initial_hostsは、IP[PORT]形式を使用する IP およびポートのコンマ区切りリストです。
デフォルトでは、cache-stack オプションに設定された値は、キャッシュ設定ファイルで定義したトランスポートスタックよりも優先されます。カスタムスタックを定義する場合は、カスタムの変更を有効にするために cache-stack オプションを使用していないことを確認してください。