Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/redis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails Rails 4.2使用nginx redis和sidekiq实现负载平衡_Ruby On Rails_Redis_Sidekiq - Fatal编程技术网

Ruby on rails Rails 4.2使用nginx redis和sidekiq实现负载平衡

Ruby on rails Rails 4.2使用nginx redis和sidekiq实现负载平衡,ruby-on-rails,redis,sidekiq,Ruby On Rails,Redis,Sidekiq,您好,我刚刚启动了一个rails 4应用程序,它使用nginx作为负载平衡器,在2个端口上提供瘦服务rails。此外,我使用redis作为缓存,sidekiq也在使用它 我想知道如何使用另一台机器进行扩展,以便在那里运行两个以上的rails应用程序。我的想法是在另一台机器上运行两个以上的rails应用程序,但令人头痛的是redis,因为sidekiq正在大量使用它。我的第一个想法是让另一台redis从机在第二台机器上只读。但这可能容易出错,因为为了检查工作队列,我在redis中进行了大量写入操作

您好,我刚刚启动了一个rails 4应用程序,它使用nginx作为负载平衡器,在2个端口上提供瘦服务rails。此外,我使用redis作为缓存,sidekiq也在使用它

我想知道如何使用另一台机器进行扩展,以便在那里运行两个以上的rails应用程序。我的想法是在另一台机器上运行两个以上的rails应用程序,但令人头痛的是redis,因为sidekiq正在大量使用它。我的第一个想法是让另一台redis从机在第二台机器上只读。但这可能容易出错,因为为了检查工作队列,我在redis中进行了大量写入操作

下面的场景有点让我困惑。web应用程序发出请求并触发sidekiq,sidekiq执行长时间运行的操作,它会不断更新redis中的状态。web客户端每秒轮询一次应用程序以获取状态。现在,可能会将请求重定向到第二台带有redis从机的机器,而该机器尚未更新。所以我想知道,考虑到延迟,使用一个redis实例或运行一个redis从机是如何进行最佳设置的?

您有两台机器:

  • 机器运转得又细又细
  • 机器B运行得又瘦又侧
  • 现在在MachineA上安装redis,并将Sidekiq指向MachineA以获得redis。双方将在MachineA上与Redis对话。有关更多详细信息,请参阅


    旁注:redis从机对于只读调试很有用,但对于扩展Sidekiq却没用。

    噢,Mike,我没想到会直接从您那里得到答案。那太好了,因为你最了解;)事实上,你的解决方案也是我想到的。唯一让我感到不舒服的是延迟,因为我在虚拟机上运行。