多站点部署

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

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

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

何时使用多站点设置

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

  • 受限于单个 AWS 区域或等效低延迟设置。

  • 允许计划的维护停机。

  • 适合于定义的用户和请求数量。

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

测试过的配置

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

  • 两个位于同一 AWS 区域的 OpenShift 单 AZ 集群

    • 使用 Red Hat OpenShift Service on AWS (ROSA) 配置,使用 ROSA HCP。

    • 每个 OpenShift 集群的所有 worker 都位于单个可用区。

    • OpenShift 版本 4.16。

  • Amazon Aurora PostgreSQL 数据库

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

    • 版本 16.1

  • AWS 全球加速器,将流量发送到两个 ROSA 集群

  • 由 ROSA 的 Prometheus 和 Alert Manager 触发的 AWS Lambda 自动执行故障转移

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

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

测试过的负载

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

  • 100,000 个用户

  • 每秒 300 个请求

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

有关更多信息,请参阅 用于调整 CPU 和内存资源的方案 指南。

限制

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

  • 在升级 Keycloak 或 Infinispan 期间,两个站点都需要下线以完成升级。

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

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

  • 在某些切换情况下,停机时间可能长达 5 分钟。

有关限制的更多详细信息,请参阅 多站点部署方案 指南。

下一步

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

在本页上