2015-12-30 123 views
1

嗨,我剛剛推出了一個rails 4應用程序,它使用nginx作爲負載均衡器和2個端口上的精簡服務欄。另外我使用redis作爲緩存,它也被sidekiq使用。Rails 4.2使用nginx redis和sidekiq進行負載均衡

我想知道如何使用另一臺機器進行擴展,以便在那裏運行兩個更多的rails應用程序。我的想法是在另一臺機器上運行另外兩個rails應用程序,但由於sidekiq正在大量使用它,所以令人頭痛的是redis。我的第一個想法只是讓另一個只在第二臺機器上讀取的redis slave。但是這可能會出錯,因爲我有很多寫入redis以檢查工作隊列。

以下情景會讓我困惑。 Web應用程序發出請求並觸發執行長時間運行操作的sidekiq,它不斷更新redis中的狀態。 Web客戶端每秒輪詢應用程序以獲取狀態。現在有可能請求被重定向到第二臺機器,並且還沒有更新的redis slave。所以我想知道如何纔是最好的設置,只是使用一個Redis實例考慮延遲或運行Redis Slave?

回答

3

你有兩臺機器:

  1. MACHINEA運行薄sidekiq。 MachineB運行瘦和sidekiq

現在您在MachineA上安裝redis,並將Sidekiq指向Machine的Redis。兩個Sidekiqs都將在MachineA上與Redis交談。有關更多詳細信息,請參閱Using Redis

備註:redis slave對於只讀調試非常有用,但對縮放Sidekiq無用。

+0

哦,邁克我沒想到直接從你那裏得到答案。自從你知道的最好之後,這很棒;)其實你的解決方案也是我所想的。唯一讓我感到不舒服的是自從我運行vm以來的延遲。 – dc10