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