10.3. 传输堆栈
传输堆栈确保集群中的分布式缓存节点以可靠的方式进行通信。Red Hat build of Keycloak 支持各种传输堆栈:
- tcp
- udp
- kubernetes
- ec2
- azure
要应用特定的缓存堆栈,请输入以下命令:
bin/kc.[sh|bat] start --cache-stack=<stack>
bin/kc.[sh|bat] start --cache-stack=<stack>
启用分布式缓存时,默认堆栈设置为 udp
。
10.3.1. 可用的传输堆栈 复制链接链接已复制到粘贴板!
下表显示了不使用使用- cache-stack
构建选项的进一步配置的传输堆栈:
堆栈名称 | 传输协议 | Discovery(发现) |
---|---|---|
tcp | TCP | MPING (使用 UDP 多播)。 |
udp | UDP | UDP 多播 |
下表显示了使用- cache-stack
运行时选项和最低配置可用的传输堆栈:
堆栈名称 | 传输协议 | Discovery(发现) |
---|---|---|
kubernetes | TCP |
DNS_PING (需要 |
10.3.2. 其他传输堆栈 复制链接链接已复制到粘贴板!
下表显示了红帽构建的 Keycloak 支持的传输堆栈,但需要一些额外的步骤才能工作。请注意,这些堆栈都不是 Kubernetes / OpenShift 堆栈,因此如果 Google Kubernetes 引擎之上运行红帽构建的 Keycloak,则无需启用 google
堆栈。在这种情况下,使用 kubernetes
堆栈。相反,当您在 AWS EC2 实例上运行分布式缓存设置时,您需要将堆栈设置为 ec2
,因为 ec2 不支持默认的发现机制,如 UDP。
堆栈名称 | 传输协议 | Discovery(发现) |
---|---|---|
ec2 | TCP | NATIVE_S3_PING |
| TCP | GOOGLE_PING2 |
azure | TCP | AZURE_PING |
特定于云供应商的堆栈有其他依赖项用于红帽构建的 Keycloak。有关这些依赖项的更多信息和存储库链接,请参阅 Infinispan 文档。
要为红帽构建的 Keycloak 提供依赖项,请将对应的 JAR 置于 供应商
目录中,并输入以下命令构建红帽构建的 Keycloak:
bin/kc.[sh|bat] start --cache-stack=<ec2|google|azure>
bin/kc.[sh|bat] start --cache-stack=<ec2|google|azure>
10.3.3. 自定义传输堆栈 复制链接链接已复制到粘贴板!
如果任何可用的传输堆栈都不够部署,您可以更改缓存配置文件并定义您自己的传输堆栈。
如需了解更多详细信息,请参阅 使用内联 JGroups 堆栈。
使用 UDP 定义带有加密的自定义堆栈
当环境中没有 IP 多播(或 UDP)时,使用静态 IP 地址列表配置 Red Hat build of Keycloak,如下例所示。
定义没有多播发现的自定义堆栈
- 1
initial_hosts
是以逗号分开的 IP 和端口列表,格式为IP[PORT]
。
默认情况下,设置为 cache-stack
选项的值优先于您在缓存配置文件中定义的传输堆栈。如果要定义自定义堆栈,请确保 cache-stack
选项不用于自定义更改生效。