【问题标题】:Does the ws websocket server library requires sticky session when it is used behind a load balancer?ws websocket 服务器库在负载均衡器后面使用时是否需要粘性会话?
【发布时间】:2017-04-28 17:38:12
【问题描述】:

我正在尝试在负载平衡器后面设置 websocket 服务器。起初,我使用socket.io 库。但我发现它在负载均衡器后面使用时需要sticky session

根据this website,它发送多个请求进行握手并建立连接。如果请求发送到不同的服务器,连接将失败。

经过进一步研究,我发现像SockJS这样的其他websocket服务器库也有同样的问题。它们都需要粘性会话才能在负载均衡器后面工作。

现在我正在检查 websocket 库 ws。但我找不到任何在负载均衡器后面使用它的例子。

ws 库是否需要粘性会话才能工作?

是否有任何其他 websocket 库可以在负载均衡器后面没有粘性会话的情况下工作?

【问题讨论】:

  • 我不这么认为。您需要在所有服务器上复制套接字会话,以避免粘性会话。

标签: node.js websocket socket.io load-balancing sticky-session


【解决方案1】:

您不能/不想依赖粘性会话是否有特定原因?

如果您想在多个主机之间分配套接字连接,您将需要一些解决方案,而粘性会话是一个非常好的解决方案。

您链接到的socket.io page on using multiple nodes 甚至描述了一种实现解决方案的方法,“通过 NginX 根据其原始地址路由客户端”。你试过这个发现不行吗?

Horizontally Scaling Node.js and WebSockets with Redis 上也有一篇非常好的文章,它描述了解决您遇到的粘性会话和自动故障转移的确切问题。

【讨论】:

    猜你喜欢
    • 2017-10-22
    • 1970-01-01
    • 2021-09-06
    • 2018-09-09
    • 1970-01-01
    • 2013-04-18
    • 2018-03-20
    • 1970-01-01
    • 2021-01-04
    相关资源
    最近更新 更多