0

我已经为此工作了几天,但我无法弄清楚出了什么问题。

其他一切正常,但我在 redis 上得到“ECONNREFUSED”。我有以下实例正在运行:

app01 ROLE: app
web01 ROLE: web
db01 ROLE:db:primary
redis01 ROLE:redis_master
redis02 ROLE:redis_slave
sidekiq01 ROLE:redis

这是生产日志中的错误:

Redis::CannotConnectError (Error connecting to Redis on localhost:6379 (ECONNREFUSED)):
app/models/user.rb:63:in `send_password_reset'
app/controllers/password_resets_controller.rb:10:in `create'

一切都是使用橡胶宝石设置的。

我试图删除所有实例并从头开始两次。我也尝试制定自定义安全规则,但我不知道我是否做得对。

请帮我!

4

1 回答 1

0

把这篇文章从死里复活,因为我今天在同样的问题上挣扎时发现了它。我通过执行以下操作解决了我的问题:

  1. 我将 redis_slave 或 redis_master 角色添加到使用cap rubber:add_role. 我发现这将添加指定的角色和通用的“redis”角色。假设您希望 redis01 在添加角色后成为唯一的 redis_master ,我希望您的环境具有:

    app01 ROLE: app
    web01 ROLE: web
    db01 ROLE:db:primary
    redis01 ROLE:redis_master
    redis01 ROLE:redis
    redis02 ROLE:redis_slave
    redis01 ROLE:redis
    sidekiq01 ROLE:redis_slave
    sidekiq01 ROLE:redis
    
  2. 设置角色后,我更新了服务器cap rubber:bootstrap

  3. 我的环境中,我从 git 部署代码,因此我必须提交这些更改并运行cap -s branch="branch_name_or_sha" deploy以在具有新角色的服务器上获取 Rubber/deploy-redis.rb 并执行它。

完成所有这些之后,redis 在我的所有节点上运行,而不会Redis::CannotConnectError (Error connecting to Redis on localhost:6379 (ECONNREFUSED))在其中任何一个节点上抛出错误。

祝你好运!

于 2014-02-08T17:41:54.657 回答