17

我想设置 sidekiq 以便它在与我的 rails 应用程序不同的主机上运行,​​以避免在运行内存密集型后台任务时加重 Web 服务器的负担。

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

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

编辑:

MyWorker.perform_async澄清一下,我要问的是,如果 sidekiq 进程不在本地运行,我如何配置 rails 以便 sidekiq API 调用 ( ) 运行?

4

1 回答 1

24

编辑以澄清

首先,您应该了解,当您运行时perform_async,它只是将 Jobs 粘贴到 Redis 队列中。Sidekiq 监视此队列并在它们进入时运行作业。因此,只要您的应用程序和您的 Sidekiq 正在查看相同的 Redis 服务器(当然还有相同的数据库),一切都会正常工作。

原始答案

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

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

公共网络服务器

运行 Apache/Nginx 和你的应用服务器。

私有应用服务器(可选)

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

私人 Sidekiq 服务器(可选)

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

私有数据库/Redis 服务器

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

于 2013-08-16T04:17:36.027 回答