是否可以在rails主机的独立主机上运行sidekiq?

时间:2013-08-16 03:38:30

标签: ruby-on-rails-3 sidekiq

我想设置sidekiq,使其在我的rails应用程序的单独主机上运行,​​以避免在运行内存密集型后台任务时压低Web服务器的负担。

我需要查看哪些配置细节?

是否有针对此的已知最佳做法或配置?

编辑:

为了澄清,我的意思是,我如何配置rails,以便sidekiq API调用(MyWorker.perform_async)在sidekiq进程不在本地运行时运行?

1 个答案:

答案 0 :(得分:18)

编辑以澄清

在其他所有事情之前,您应该了解当您运行perform_async时,它只会将Jobs粘贴到Redis队列中。 Sidekiq监视这个队列并在他们进来时运行工作。所以只要你的应用程序和你的Sidekiq正在查看相同的Redis服务器(当然还有相同的数据库),事情就会起作用。

原始回答

首先,正如您可能猜到的那样,它需要重复检查您的代码才能运行。没什么大不了的。

其次,它需要访问另一个盒子上的数据库和redis服务器。这意味着确保这些端口在另一台服务器上打开。这可能会变得棘手,b / c你理想情况下不希望那些暴露在开放互联网上的人。通常,对于多盒设置,您只能将一个盒子暴露给开放的Internet。它通过私有IP与其余的盒子进行通信:

公共网络服务器

运行Apache / Nginx,也许是您的应用服务器。

私有应用服务器(可选)

如果您的应用服务器未在公共服务器上运行,则运行它们。连接到您的数据库和Redis服务器。

私人Sidekiq服务器(可选)

运行Sidekiq。连接到您的数据库和Redis服务器。

私有数据库/ Redis服务器

运行数据库和Redis。当然,如果需要,他们可以拆分到不同的服务器。