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 分钟。
有关限制的更多详细信息,请参阅 多站点部署方案 指南。
不同的指南介绍了必要的概念和构建模块。对于每个构建模块,蓝图都显示了如何设置一个功能齐全的示例。在准备生产环境时,仍然建议进行额外的性能调整和安全强化。