多站点部署

连接不同站点的多个 Keycloak 部署以提高整体可用性

Keycloak 支持由多个 Keycloak 实例组成的部署,这些实例使用其 Infinispan 缓存相互连接;负载均衡器可以将负载均匀地分配到这些实例上。这些设置适用于单站点上的透明网络。

Keycloak 高可用性指南更进一步地描述了跨多个站点的设置。虽然这种设置增加了额外的复杂性,但对于某些环境来说,可能需要这种额外的高可用性。

何时使用多站点设置

Keycloak 的多站点部署功能针对以下用例:

  • 限制在单个 AWS 区域或等效的低延迟设置中。

  • 允许计划内的维护停机。

  • 符合定义的用户和请求计数。

  • 可以接受周期性停机的影响。

已测试的配置

我们定期使用以下配置测试 Keycloak

  • 两个 OpenShift 单 AZ 集群,在同一 AWS 区域中

    • 使用 ROSA HCP 通过 Red Hat OpenShift Service on AWS (ROSA) 进行配置。

    • 每个 OpenShift 集群的所有工作节点都在单个可用区中。

    • OpenShift 版本 4.17。

  • Amazon Aurora PostgreSQL 数据库

    • 高可用性,主数据库实例在一个可用区,同步复制的读取器在第二个可用区

    • 版本 16.1

  • AWS Global Accelerator,将流量发送到两个 ROSA 集群

  • AWS Lambda 由 ROSA 的 Prometheus 和 Alert Manager 触发,以自动化故障转移

虽然等效的设置应该可以工作,但您需要验证环境的性能和故障行为。我们在 Keycloak Benchmark Project 中提供了功能测试、故障测试和负载测试。

构建模块多站点部署 指南中阅读有关每个项目的更多信息。

已测试的负载

我们定期使用以下负载测试 Keycloak

  • 100,000 用户

  • 每秒 300 个请求

虽然在我们的测试中没有看到这些值的硬性限制,但我们要求您使用水平和垂直扩展的 Keycloak 实例和数据库来测试更高的容量。

有关更多信息,请参阅 CPU 和内存资源调整的概念 指南。

局限性

即使有两个站点的额外冗余,仍然可能发生停机

  • 在升级 Keycloak 或 Infinispan 期间,两个站点都需要在升级期间脱机。

  • 在某些故障情况下,可能会有长达 5 分钟的停机时间。

  • 在某些故障情况下之后,可能需要手动干预才能通过将故障站点重新联机来恢复冗余。

  • 在某些切换场景中,可能会有长达 5 分钟的停机时间。

有关局限性的更多详细信息,请参阅 多站点部署的概念 指南。

下一步

不同的指南介绍了必要的概念和构建模块。对于每个构建模块,蓝图展示了如何设置一个功能齐全的示例。在准备生产环境时,仍然建议进行额外的性能调优和安全加固。

在本页