1

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

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

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

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

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

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

4

1 回答 1

1

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

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

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

于 2013-01-01T22:52:13.863 回答