负载平衡Web套接字和长轮询

时间:2013-08-12 08:28:38

标签: http nginx websocket load-balancing haproxy

如果我在3台支持Web套接字的机器上运行Web应用程序,并且客户端连接到其中一台机器,那么每个请求是否总是转到同一台机器,或者负载均衡器是否可以将它发送到不同的机器?

基本上,一旦Web浏览器通过Web套接字建立连接,负载均衡器是否可以将每个请求发送到不同的服务器?

如果是这样,哪个负载均衡器可以做到这一点?

另外,如果我使用类似氛围的框架来检测浏览器兼容性并选择适当的协议,那么这会如何影响负载平衡机会呢?

2 个答案:

答案 0 :(得分:3)

如在basic description of websockets protocol on Wikipedia中通过HTTP协议进行握手后所述,其他通信是通过持久 TCP连接与确切的服务器进行的。

因此,通常的HTTP意义上没有“请求”,只有2个端点(服务器和客户端)交换数据。这就是为什么不能实现通常意义上的负载平衡(并且通常不需要,因为服务器能够同时处理很多同时的TCP连接 - 关于这一点的良好讨论here)。这就是为什么通过websocket发送的数据将始终由正确的服务器机器(期望它的那台)接收。

如果您真的需要这个,可以使用L3负载均衡器,如上文所述。

答案 1 :(得分:0)

“基本上,一旦网络浏览器通过网络套接字建立连接,负载均衡器是否可以将每个请求发送到不同的服务器?”

如果那是你想要的动作,是的。

Riverbed有一个可以实现此目的的软件负载均衡器。 https://splash.riverbed.com/docs/DOC-1451