我想设置sidekiq,使其在我的rails应用程序的单独主机上运行,以避免在运行内存密集型后台任务时压低Web服务器的负担。
我需要查看哪些配置细节?
是否有针对此的已知最佳做法或配置?
编辑:
为了澄清,我的意思是,我如何配置rails,以便sidekiq API调用(MyWorker.perform_async
)在sidekiq进程不在本地运行时运行?
答案 0 :(得分:18)
编辑以澄清
在其他所有事情之前,您应该了解当您运行perform_async
时,它只会将Jobs粘贴到Redis队列中。 Sidekiq监视这个队列并在他们进来时运行工作。所以只要你的应用程序和你的Sidekiq正在查看相同的Redis服务器(当然还有相同的数据库),事情就会起作用。
原始回答
首先,正如您可能猜到的那样,它需要重复检查您的代码才能运行。没什么大不了的。
其次,它需要访问另一个盒子上的数据库和redis服务器。这意味着确保这些端口在另一台服务器上打开。这可能会变得棘手,b / c你理想情况下不希望那些暴露在开放互联网上的人。通常,对于多盒设置,您只能将一个盒子暴露给开放的Internet。它通过私有IP与其余的盒子进行通信:
公共网络服务器
运行Apache / Nginx,也许是您的应用服务器。
私有应用服务器(可选)
如果您的应用服务器未在公共服务器上运行,则运行它们。连接到您的数据库和Redis服务器。
私人Sidekiq服务器(可选)
运行Sidekiq。连接到您的数据库和Redis服务器。
私有数据库/ Redis服务器
运行数据库和Redis。当然,如果需要,他们可以拆分到不同的服务器。