我正在尝试在负载均衡器后面设置websocket服务器 . 起初,我使用了socket.io库 . 但我发现在负载均衡器后面使用它需要 sticky session
.
根据this website,它发送多个请求以执行握手并 Build 连接 . 如果请求发送到不同的服务器,则连接将失败 .
经过进一步研究,我发现像SockJS这样的其他websocket服务器库也有同样的问题 . 它们都需要粘性会话才能在负载均衡器后面工作 .
现在我正在检查websocket库ws . 但我找不到任何在负载均衡器后面使用它的例子 .
ws
库是否需要粘性会话才能工作?
是否有任何其他websocket库可以在负载均衡器后面没有粘性会话的情况下工作?
1 回答
是否有特定原因导致您不能/不想依赖粘性会话?
如果要在多个主机上分配套接字连接,则需要 some 解决方案,而粘性会话则非常好 .
您链接的socket.io page on using multiple nodes甚至描述了通过NginX实现解决方案的方法"by routing clients based on their originating address" . 你试过这个并发现它不起作用吗?
在Horizontally Scaling Node.js and WebSockets with Redis上还有一篇非常好的文章,它描述了解决粘性会话和自动故障转移的确切问题 .