我有一个正在运行的 keycloak 8 的 docker,但每当我重新启动它时,所有非离线 session 都会消失。结果,每当我更新keycloak时,所有用户都被断开。
原因:
- 我已阅读 this thread在这里并理解为什么访问 token 不持久(主要是性能问题)。
作为解决方案,我想使用集群(建议 here ),并且我明白,核心部分只是很好地管理 Infinispan。
想法:
我首先想将 infinispan 存储在 docker 容器外部(在一个卷中),然后搜索 JBoss 将 Infinispan 保存在 docker 中的何处,但我没有找到任何内容。
其次,我考虑使用 SPI 来管理外部用户 session ,但这似乎不是正确的解决方案,因为 infinispan 已经做得很好了。
在 this article about Cross-Datacenter support in Keycloak 的帮助下设置集群和 this other one about Keycloak Cross Data Center Setup in AWS似乎是一个很好的起点,但我实际上仍在使用 docker,并且我不确定从这些教程构建 docker 镜像对我来说是否是一个更好的主意。
欢迎任何更多想法:)
最佳答案
我已经尝试过第二次使用 docker cluster,但现在使用 docker swarm 以及来自 here 的信息。 :
The PING discovery protocol is used by default in udp stack (which is used by default in standalone-ha.xml). Since the Keycloak image runs in clustered mode by default, all you need to do is to run it:
docker run jboss/keycloak
If you run two instances of it locally, you will notice that they form a cluster.
我使用 docker 堆栈以集群模式和外部数据库 (postgres) 部署了非常简单的 3 个 keycloak 实例,并且运行良好。
更简单地说,keycloak docker 在使用集群时已经处理了这个用例。
有关集群用例的更多信息,请参阅本教程,了解如何 setup Keycloak Cluster
关于docker - Keycloak docker重启后如何保持infinispan session ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60809539/