首页 > 解决方案 > 将 Redis 作为 Redmine 的外部缓存服务器运行

问题描述

我有 2 个使用 Kubernetes 部署的 Redmine pod,由于这个问题,会话管理问题正在发生,所以一些用户因此无法登录,所以我想出了将两个 pod 的缓存存储在 Redis 服务器中的想法Kubernetes(集中式)。
我在位置的 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
}

但这并没有按预期工作。在我做错的地方需要帮助。

标签: rubykubernetesredisredmine

解决方案


Redmine 不会在其缓存中存储任何会话数据。因此,将您的两个 Redmine 配置为使用相同的缓存将无济于事。

默认情况下,Redmine 将用户会话存储在发送到用户浏览器的签名 cookie 中,而无需任何服务器本地会话存储。由于会话 cookie 使用私钥签名,因此您需要确保使用相同会话的所有安装也使用相同的应用程序机密(以及代码和数据库)。

根据您设置 Redmine 的方式,此密钥通常存储在config/initializers/secret_token.rbconfig/secrets.yml(相对于您的 Redmine 安装目录)。确保在您的两个 Redmine 上使用相同的秘密。


推荐阅读