Keycloak 支持由多个 Keycloak 实例组成的部署,这些实例使用其 Infinispan 缓存相互连接;负载均衡器可以将负载均匀地分配到这些实例上。这些设置适用于单站点上的透明网络。
Keycloak 高可用性指南更进一步地描述了跨多个站点的设置。虽然这种设置增加了额外的复杂性,但对于某些环境来说,可能需要这种额外的高可用性。
我们定期使用以下配置测试 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 分钟的停机时间。
有关局限性的更多详细信息,请参阅 多站点部署的概念 指南。