2013-07-04 39 views
1

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

作为resis使用redis来扫描所有作业,我正在寻找一种方法将参数传递给worker类,以便工作人员可以连接到其他redis服务器。

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

+0

关于在不同的服务器上运行resque worker我很高兴,因为工作人员需要rails环境与Redis一起支持(可以移动redis,但是可以移动环境)如果你能做到这一点,很好 – Viren

回答

4

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

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

你可能只想从你resque工人在操作系统级别使用IP过滤服务器确保Redis的服务器接受连接。

+0

只是一个问题,如何重新工作人员考虑rails环境,因为OP打算在不同服务器上运行resque worker – Viren

+0

默认情况下,resque尝试在localhost上连接,因此在服务器A和B上运行的resque将尝试连接到分别在服务器A和B上进行redis。但是,如果它们都被配置为指向服务器C,那么它们都将连接到相同的远程redis实例而不是本地。这使您可以从同一个工作队列中处理许多服务器。 –

+2

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

相关问题