【问题标题】:Unicorn multiple machines setup [closed]独角兽多机设置[关闭]
【发布时间】:2013-01-03 09:19:02
【问题描述】:

我对 Unicorn 配置和 Nginx 的结合有很好的经验,经过优化和调优程序后效果非常好。但现在我有一个问题,使用 Unicorns 将负载分散到多台机器的最佳方法是什么。

问题是你有 3 台机器(Nginx 负载均衡器,2 台带有 Unicorns 的 APP 服务器),你如何管理 Unicorns 的负载均衡并提供静态资产。

您现在通过 TCP 连接到 Unicorn 是否有任何缺点(超时、连接丢失),是否有任何其他方法可以通过网络进行上游套接字连接(可能通过 SSH 进行端口转发)? Unicorn 设计为无状态,但您如何管理边缘情况?

我不想从平衡器节点提供静态服务,所以可以在每个 APP 服务器上设置 Nginx 并在它们前面设置哑 Nginx 平衡器吗?

附:我当前的配置已经过良好测试,可以在Github 上找到,但是在同一台机器上使用 Nginx+Unicorn 的设置已经成为瓶颈。

更新:开发完全取决于具体的服务器配置。瓶颈的发生不仅是因为开发人员的决定,还因为他运行它的环境。 Stackoverlow 充满了高度标记的问答,这些问答与关于特定配置的难以了解的细节有关。下面回答的 Alex 与 Github 合作,非常感谢有这样有资格的人回复!

【问题讨论】:

  • 可能将静态资产上传到 CDN 和 TCP 连接到 Unicorns 是最好的解决方案?

标签: nginx unicorn high-availability


【解决方案1】:

不要通过 TCP/网络访问 Unicorns。

您的设置似乎很好,您可以简单地在 APP 服务器前添加一个负载均衡器,但我建议 Keepalived (LVS ftw) 作为负载均衡器而不是 Nginx。

您可以让它们通过套接字平衡与运行 Nginx+Unicorns 的 APP 服务器的连接。

【讨论】:

  • 为什么不通过 TCP 访问它们?我多年来一直这样做,这很好。 Nginx 智能地检测到机器何时停机并停止路由一段时间,然后重试。负载均衡可以更智能,但听起来keepalived反正也不做基于负载的均衡……
猜你喜欢
  • 2012-05-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-12-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-04-12
相关资源
最近更新 更多