如何设置工人'服务器负责从其他服务器运行作业

时间:2015-01-25 17:19:41

标签: ruby-on-rails ruby redis sidekiq

我们说我们有2台服务器。一个app服务器,http服务器,应用服务器和应用程序,它将为世界打开。另一台服务器worker应该只运行Sidekiq作业(有应用程序,Redis和Sidekiq)。

如何配置Sidekiq从app服务器中排队作业并在worker服务器中运行它们?

1 个答案:

答案 0 :(得分:3)

您的app服务器必须具有Sidekiq gem才能将作业排入队列,并且还可以访问位于worker服务器中的Redis数据库。我只会使用存在的任何Redis云服务,让app服务器和worker服务器都可以访问它。

无论哪种方式,您基本上都需要在appworker服务器中配置Sidekiqs,以便他们知道从哪里读取/写入作业(什么是Redis数据库地址)。

检查文档的这一部分:

https://github.com/mperham/sidekiq/wiki/Using-Redis

总而言之,您有两台共享同一Redis数据库的服务器。一个为它排队的工作,另一个运行它们。

另一个问题是,一旦工人完成工作,他们如何处理结果。在这种情况下,您有几个选项:将结果推送回Redis队列,通过HTTP将结果发送到app服务器......