我有 2 个使用 Kubernetes 部署的 Redmine pod,由于 session 管理问题正在发生,所以一些用户因此无法登录,所以我想出了将两个 pod 的缓存存储在带有 Kubernetes 的 Redis 服务器(集中式)。
我在 Redmine pod 内给出了以下配置。
/opt/bitnami/redmine/config/application.rb
配置
config.cache_store = :redis_store, {
host: "redis-headless.redis-namespace", #service name of redis
port: 6379,
db: 0,
password: "xyz",
namespace: "redis-namespace"
}, {
expires_in: 90.minutes
}
但这并没有按预期工作。在我做错的地方需要帮助。
最佳答案
Redmine 不会在其缓存中存储任何 session 数据。因此,将两个 Redmine 配置为使用相同的缓存不会有帮助。
默认情况下,Redmine 将用户 session 存储在发送到用户浏览器的签名 cookie 中,而无需任何服务器本地 session 存储。由于 session cookie 是使用私钥签名的,因此您需要确保使用相同 session 的所有安装也使用相同的应用程序 key (以及代码和数据库)。
根据您设置Redmine的方式,此 secret 通常存储在config/initializers/secret_token.rb
或config/secrets.yml
中(相对于您的Redmine 安装目录)。确保您在两个 Redmine 上使用相同的密码。
关于ruby - 运行 Redis 作为 Redmine 的外部缓存服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59268404/