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

Ove*_*esh 12 ruby-on-rails-3 sidekiq

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

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

是否有已知的最佳实践或配置?

编辑:

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

bio*_*net 20

编辑澄清

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

原始答案

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

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

公共Web服务器

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

私有应用服务器(可选)

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

私人Sidekiq服务器(可选)

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

专用数据库/ Redis服务器

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

  • 换句话说:不是在本地启动Sidekiq,而是创建了另一个主机,安装了Rails应用程序,将它的DB和Redis配置指向原始服务器,然后启动Sidekiq.做完了,就是这一切都改变了. (2认同)