Nginx,HAproxy,Unicorn,Rails和Node设置

我们的应用程序目前只是一个“常规”的networking应用程序,没有喜欢streamHTTP或Websockets的花哨的东西。 它主要是一个Rails应用程序,由less数(20台机器上的20台) Unicorn工作服务器处理,由负责均衡的古老的nginx服务器代理。

过去一年来,这一切都非常顺利,现在每天在任何时候都可以提供400到800个请求

我们很快就会发布两个新的API,这两个API都是由一个Node应用程序提供的:一个是websocket,另一个是长轮询HTTP 。 (喜欢Twitterstream媒体API,HTTP连接永远不会结束)。 他们都使用节点上的同一个端口,由于节点应用是无状态的,所以我们当然可以部署其中的一些来处理stream量。

应用程序(节点)现在部署在5个实例中,现在正在侦听同一主机上的5个不同的“专用”端口。 我们需要在它们之前放置一些负载均衡,但也有一些能够处理套接字(websocket或HTTPstream式传输)的东西,这些套接字可以保持数天。

那么问题是:什么? 我在某处读到HAProxy比Nginx做得更好。 你有什么build议?

Nginx根本不支持WebSocket,所以你需要使用另一个负载平衡器。 我对HAProxy有很好的经验。 看看这个StackOverflow线程的示例configuration: https : //stackoverflow.com/questions/2419346/can-nginx-be-used-as-a-reverse-proxy-for-a-backend-websocket-server

更好的是,在它前面没有任何东西。 DNS负载平衡+redirect。 无论如何,您最终需要智能节点关联,并且您可以从redirect中获取此信息。 DNS负载平衡在短期内并不是很好,但从长远来看,它可以作为平衡传入连接的良好种子。

或者朱利安,你可以和像我这样的人一起工作,为你这样的人解决这个问题。 ;)