【问题标题】:How to run Resque workers on different servers but polling jobs from one redis server如何在不同的服务器上运行 Resque 工作人员,但从一台 redis 服务器轮询作业
【发布时间】:2013-07-02 10:41:59
【问题描述】:

如何在不同的服务器上运行 Resque 工作程序,但从一个 Redis 服务器轮询作业?

由于 resque 使用 redis 来获取所有作业,我正在寻找一种将参数传递给 worker 类的方法,以便 worker 可以连接到其他 redis 服务器。

我需要这个,因为一台服务器没有足够的资源来运行所有工作人员。

【问题讨论】:

  • 关于在不同的服务器上运行 resque worker 我很不喜欢有一种方法,因为 worker 需要 rails 环境和 Redis 一起支持它(可以移动 redis,但是什么 abt 环境)如果你能做到这一切就好了

标签: ruby redis resque


【解决方案1】:

您只需配置 Resque 以连接到特定的 Redis 实例。默认情况下,Resque 尝试在 localhost 上连接。只需按照here 的描述创建或修改config/resque.yml。它可能需要包含以下内容:

production: my-one-and-only-redis-instance-address.com:6379

您可能希望确保 redis 服务器只接受来自您的 resque 工作人员在操作系统级别使用 IP 过滤的服务器的连接。

【讨论】:

  • 只是一个问题,因为 OP 打算在不同的服务器上运行 resque worker,resque worker 将如何考虑 rails 环境
  • 默认情况下 resque 会尝试连接到 localhost,所以运行在服务器 A 和 B 上的 resque 会尝试分别连接到服务器 A 和 B 上的 redis。但是,如果它们都配置为指向服务器 C,那么它们都将连接到同一个远程 redis 实例而不是本地实例。这允许您让多个服务器处理来自同一个工作队列的工作。
  • 澄清一下,整个 Rails 应用程序需要部署到您希望工作人员运行的每台服务器上。包含 redis 实例的服务器不一定需要 rails 应用程序,除非您也希望工作人员也直接在其上运行。如果您要让许多服务器运行 resque worker,最好的方法是让 redis 服务器它们都指向只运行 redis。大多数大型 Rails 应用程序都有多个应用程序服务器(提供 Web 内容)、多个后台工作服务器和用于数据服务的专用服务器(redis、mysql、mongo 等)。
  • 如果没有每个服务器中的 rails 应用程序,我要求你的那个人不能做到这一点,这被认为是 OP 不想我相信
  • 再次阅读 OP 的问题后,读起来好像他在处理所有 resque 后台作业的单个服务器时遇到了问题,所以他想添加额外的后台工作人员并让他们在同一个工作队列中工作, “从一台 Redis 服务器轮询作业”。我没有看到任何关于将环境部署到多台服务器的限制。但是,OP 似乎忘记了,所以我们可能永远无法确定。
猜你喜欢
  • 2011-07-24
  • 2011-12-10
  • 2015-03-24
  • 2015-12-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-10-15
  • 1970-01-01
相关资源
最近更新 更多