Rails 4.2 使用nginx redis和sidekiq进行负载均衡
Rails 4.2 load balancing with nginx redis and sidekiq
嗨,我刚刚启动了一个 rails 4 应用程序,它使用 nginx 作为负载均衡器,在 2 个端口上提供精简服务 rails。此外,我使用 redis 作为缓存,sidekiq 也在使用它。
我想知道如何使用另一台机器进行扩展以便 运行 两个 rails 应用程序在那里。我的想法只是 运行 在另一台机器上再安装两个 rails 应用程序,但令人头疼的是 redis,因为 sidekiq 正在大量使用它。我的第一个想法是拥有另一个在第二台机器上只读的 redis 从机。但这可能容易出错,因为我有很多写入 redis 以检查工作队列。
下面的场景让我有点困惑。 Web 应用程序发出请求并触发 sidekiq,后者执行一个长 运行ning 操作,它不断更新 redis 中的状态。 Web 客户端每秒轮询一次应用程序以获取状态。现在有可能请求被重定向到第二台机器,其中 redis 从属尚未更新。所以我想知道最好的设置是什么,只使用一个考虑延迟的redis实例或运行一个redis slave?
您有两台机器:
- MachineA 运行 瘦身和 sidekiq。
- MachineB 运行 瘦身和 sidekiq。
现在您在 MachineA 上安装 redis,并将 Sidekiq 指向 MachineA for Redis。两个 Sidekiq 都将与 MachineA 上的 Redis 对话。有关详细信息,请参阅 Using Redis。
旁注:redis 从属对 read-only 调试很有用,但对扩展 Sidekiq 没有用。
嗨,我刚刚启动了一个 rails 4 应用程序,它使用 nginx 作为负载均衡器,在 2 个端口上提供精简服务 rails。此外,我使用 redis 作为缓存,sidekiq 也在使用它。
我想知道如何使用另一台机器进行扩展以便 运行 两个 rails 应用程序在那里。我的想法只是 运行 在另一台机器上再安装两个 rails 应用程序,但令人头疼的是 redis,因为 sidekiq 正在大量使用它。我的第一个想法是拥有另一个在第二台机器上只读的 redis 从机。但这可能容易出错,因为我有很多写入 redis 以检查工作队列。
下面的场景让我有点困惑。 Web 应用程序发出请求并触发 sidekiq,后者执行一个长 运行ning 操作,它不断更新 redis 中的状态。 Web 客户端每秒轮询一次应用程序以获取状态。现在有可能请求被重定向到第二台机器,其中 redis 从属尚未更新。所以我想知道最好的设置是什么,只使用一个考虑延迟的redis实例或运行一个redis slave?
您有两台机器:
- MachineA 运行 瘦身和 sidekiq。
- MachineB 运行 瘦身和 sidekiq。
现在您在 MachineA 上安装 redis,并将 Sidekiq 指向 MachineA for Redis。两个 Sidekiq 都将与 MachineA 上的 Redis 对话。有关详细信息,请参阅 Using Redis。
旁注:redis 从属对 read-only 调试很有用,但对扩展 Sidekiq 没有用。