2013-07-04 53 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等)的專用服務器。 –

相關問題