搜索

8.3. 传输堆栈

download PDF

传输堆栈可确保集群中的分布式缓存节点以可靠的方式进行通信。红帽构建的 Keycloak 支持广泛的传输堆栈:

  • tcp
  • udp
  • kubernetes
  • ec2
  • azure
  • google

要应用特定的缓存堆栈,请输入以下命令:

bin/kc.[sh|bat] build --cache-stack=<stack>

启用分布式缓存时,默认堆栈设置为 udp

8.3.1. 可用的传输堆栈

下表显示了比使用 --cache-stack 构建选项的情况下可用的传输堆栈,而无需进一步配置:

堆栈名称传输协议Discovery(发现)

tcp

TCP

MPING (使用 UDP 多播)。

udp

UDP

UDP 多播

下表显示了使用 --cache-stack 构建选项和最小配置可用的传输堆栈:

堆栈名称传输协议Discovery(发现)

kubernetes

TCP

DNS_PING (需要 -Djgroups.dns.query=<headless-service-FQDN >)添加到 JAVA_OPTS 或 JAVA_OPTS_APPEND 环境变量中。

8.3.2. 其他传输堆栈

下表显示了红帽构建的 Keycloak 支持的传输堆栈,但需要一些额外的步骤才能工作。请注意,这些堆栈都不是 Kubernetes / OpenShift 堆栈,因此如果您希望在 Google Kubernetes 引擎之上运行红帽构建的 Keycloak,则不需要启用 google 堆栈。在这种情况下,使用 kubernetes 堆栈。相反,当您在 AWS EC2 实例上运行分布式缓存设置时,您需要将堆栈设置为 ec2,因为 ec2 不支持默认的发现机制,如 UDP。

堆栈名称传输协议Discovery(发现)

ec2

TCP

NATIVE_S3_PING

google

TCP

GOOGLE_PING2

azure

TCP

AZURE_PING

特定于云供应商的堆栈具有红帽构建的 Keycloak 的额外依赖项。有关这些依赖项的存储库的更多信息和链接,请参阅 Infinispan 文档

要为红帽构建的 Keycloak 提供依赖项,请在 供应商 目录中放置相应的 JAR,并通过输入以下命令构建红帽 Keycloak 构建:

bin/kc.[sh|bat] build --cache-stack=<ec2|google|azure>

8.3.3. 自定义传输堆栈

如果部署没有可用的传输堆栈,您可以更改您的缓存配置文件并定义您自己的传输堆栈。

如需了解更多详细信息,请参阅 使用内联 JGroups 堆栈

定义自定义传输堆栈

<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 选项不用于自定义更改生效。

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.