ws websocket 服务器库在负载均衡器后面使用时是否需要粘性会话?
Does the ws websocket server library requires sticky session when it is used behind a load balancer?
我正在尝试在负载均衡器后面设置 websocket 服务器。起初,我使用 socket.io 库。但我发现在负载均衡器后面使用时需要 sticky session
。
根据this website,它会发送多个请求来执行握手并建立连接。如果请求发送到不同的服务器,连接将失败。
进一步研究后,发现其他websocket服务器库如SockJS也有同样的问题。它们都需要粘性会话才能在负载均衡器后面工作。
现在我正在检查 websocket 库 ws。但是我找不到任何在负载均衡器后面使用它的例子。
ws
库是否需要粘性会话才能工作?
是否有任何其他 websocket 库可以在负载均衡器后面没有粘性会话的情况下工作?
是否有您不能/不想依赖粘性会话的具体原因?
如果你想在多个主机之间分配套接字连接,你将需要一些解决方案,粘性会话是一个非常好的解决方案。
socket.io page on using multiple nodes 你 link 甚至描述了一种通过 NginX 实施解决方案的方法,"by routing clients based on their originating address"。你有没有试过,发现它不起作用?
还有一篇关于 Horizontally Scaling Node.js and WebSockets with Redis 的非常好的文章,它描述了解决粘性会话和自动故障转移的确切问题。
我正在尝试在负载均衡器后面设置 websocket 服务器。起初,我使用 socket.io 库。但我发现在负载均衡器后面使用时需要 sticky session
。
根据this website,它会发送多个请求来执行握手并建立连接。如果请求发送到不同的服务器,连接将失败。
进一步研究后,发现其他websocket服务器库如SockJS也有同样的问题。它们都需要粘性会话才能在负载均衡器后面工作。
现在我正在检查 websocket 库 ws。但是我找不到任何在负载均衡器后面使用它的例子。
ws
库是否需要粘性会话才能工作?
是否有任何其他 websocket 库可以在负载均衡器后面没有粘性会话的情况下工作?
是否有您不能/不想依赖粘性会话的具体原因?
如果你想在多个主机之间分配套接字连接,你将需要一些解决方案,粘性会话是一个非常好的解决方案。
socket.io page on using multiple nodes 你 link 甚至描述了一种通过 NginX 实施解决方案的方法,"by routing clients based on their originating address"。你有没有试过,发现它不起作用?
还有一篇关于 Horizontally Scaling Node.js and WebSockets with Redis 的非常好的文章,它描述了解决粘性会话和自动故障转移的确切问题。