如果我在3台支持Web套接字的机器上运行Web应用程序,并且客户端连接到其中一台机器,那么每个请求是否总是转到同一台机器,或者负载均衡器是否可以将它发送到不同的机器?
基本上,一旦Web浏览器通过Web套接字建立连接,负载均衡器是否可以将每个请求发送到不同的服务器?
如果是这样,哪个负载均衡器可以做到这一点?
另外,如果我使用类似氛围的框架来检测浏览器兼容性并选择适当的协议,那么这会如何影响负载平衡机会呢?
答案 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