2019年8月12日 Sebastian Łaskawiec 发布
几个月前,我们发表了一篇关于使用 JDBC_PING 协议进行集群的精彩文章。从那时起,我们为 Keycloak 容器镜像 引入了一些改进,可以简化设置。因此,在深入阅读这篇博客文章之前,我强烈建议您访问 Keycloak 集群设置 这篇文章。
可能最重要的变化是通过使用变量配置 JGroups 发现协议(请参阅 Pull Request)。一旦更改生效,我们就可以通过设置两个属性来配置 JGroups 发现
基于 JDBC_PING 的设置在所有场景中都能正常工作,在这些场景中,我们将所有 Keycloak 实例连接到同一个数据库。由于 JDBC_PING 可以配置为使用 JNDI 绑定获取数据库连接,因此它可以轻松连接到 Keycloak 数据库。我们只需要向我们的 Docker 镜像添加两个参数
在某些情况下,您可能需要额外的配置。所有其他设置都可以添加到 JGROUPS_DISCOVERY_PROPERTIES 中。这里有一些提示和您可能会遇到的常见问题
问题描述 | 可能的解决方案 |
初始化 SQL 需要调整 | 在这种情况下,您可能需要查看initialize_sqlJDBC_PING 属性 |
当 Keycloak 崩溃时,数据库不会被清除 | 开启remove_old_coords_on_view_change属性 |
当 Keycloak 崩溃时,数据库不会被清除 | 此外,当集群不太大时,您可以开启remove_all_data_on_view_change属性 |
有时,Keycloak 不会将其数据写入数据库 | 您可以降低info_writer_sleep_time和info_writer_max_writes_after_view属性值 |
玩得开心,别忘了使用 用户邮件列表 告诉我们您对这篇博客文章的看法。
Sebastian Łaskawiec 和 Keycloak 团队