2019 年 8 月 12 日 由 Sebastian Łaskaiwec
几个月前,我们有一篇关于使用 JDBC_PING 协议进行集群的文章。从那时起,我们为 Keycloak 容器镜像 引入了一些改进,可以简化设置。因此,在深入研究这篇博文之前,我强烈建议您访问 Keycloak 集群设置 文章。
可能最重要的变化是使用变量配置 JGroups 发现协议(参见 拉取请求)。一旦更改生效,我们可以通过设置两个属性来配置 JGroups 发现
基于 JDBC_PING 的设置在所有场景中都运行良好,我们将在所有场景中将所有 Keyclaok 实例连接到同一个数据库。由于 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 团队