如何在不同的服务器上运行 Resque 工作者,但从一个 redis 服务器轮询作业

Kur*_*Liu 1 ruby resque redis

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

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

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

Car*_*auf 5

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

production: my-one-and-only-redis-instance-address.com:6379
Run Code Online (Sandbox Code Playgroud)

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

  • 只是为了澄清,整个 rails 应用程序需要部署到您希望工作人员运行的每台服务器上。包含 redis 实例的服务器不一定需要 rails 应用程序,除非您也希望工作人员也直接在其上运行。如果您要让许多服务器运行 resque Worker,最好的方法是让它们都指向的 redis 服务器只运行 redis。大多数大型 Rails 应用程序都有多个应用程序服务器(提供 Web 内容)、多个后台工作服务器和数据服务专用服务器(redis、mysql、mongo 等)。 (2认同)