8.3. トランスポートスタック
トランスポートスタックにより、クラスター内の分散キャッシュノードは信頼できる方法で通信できます。Red Hat build of Keycloak は、幅広いトランスポートスタックをサポートしています。
- tcp
- udp
- kubernetes
- ec2
- azure
特定のキャッシュスタックを適用するには、次のコマンドを入力します。
bin/kc.[sh|bat] build --cache-stack=<stack>
分散キャッシュが有効な場合、デフォルトのスタックが udp
に設定されます。
8.3.1. 利用可能なトランスポートスタック
次の表は、--cache-stack
ビルドオプションを使用する以外の設定を行わずに使用できるトランスポートスタックを示しています。
スタック名 | トランスポートプロトコル | 検出 |
---|---|---|
tcp | TCP | MPING (UDP マルチキャストを使用)。 |
udp | UDP | UDP マルチキャスト |
次の表は、--cache-stack
ビルドオプションと最小の設定で使用できるトランスポートスタックを示しています。
スタック名 | トランスポートプロトコル | 検出 |
---|---|---|
kubernetes | TCP |
DNS_PING ( |
8.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] build --cache-stack=<ec2|google|azure>
8.3.3. カスタムのトランスポートスタック
使用可能なトランスポートスタックがデプロイメントに適切ではない場合、キャッシュ設定ファイルを変更して、独自のトランスポートスタックを定義できます。
詳細は、Using inline JGroups stacks を参照してください。
カスタムのトランスポートスタックを定義する
<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>
デフォルトでは、cache-stack
オプションに設定された値は、キャッシュ設定ファイルで定義したトランスポートスタックよりも優先されます。カスタムスタックを定義する場合は、カスタムの変更を有効にするために cache-stack
オプションを使用していないことを確認してください。