【问题标题】:Socket.io nodejs cluster hash loadbalancing with proxySocket.io nodejs集群散列负载平衡与代理
【发布时间】:2020-08-17 09:59:02
【问题描述】:

我构建了一个应用程序,人们通过 websocket 根据 URL 中房间的 id 连接到房间,例如 app.com/9l4CvjXFxn 。问题是我想运行多个节点实例以确保实例始终处于运行状态,以防其他实例崩溃,而且我听说负载平衡很好。我还提供静态 UI 内容。我只使用 socketio,没有 REST api。

我现在的计划是使用负载平衡和服务代理,例如 nginx 或 haproxy。我从来没有使用过它们中的任何一个。我还考虑过使用 PM2 轻松运行许多节点实例。该应用程序可能会部署在 AWS 上。

Websockets 通过 HTTP1 升级到 socketio 中的某个路径发生,我已将其设置为 root /。所以在最初的升级请求中我不能改变路径,但我可以把东西放到 url 查询或 cookie 头中。

因此,负载均衡器的主要要求是将某个房间的 websocket 升级始终指向一个特定的节点实例,因此我想到了哈希负载均衡,但我不知道如何做到这一点,以及这是否是正确的方法全部。 你能帮忙吗? 谢谢!

【问题讨论】:

  • 一些 OP 删除了我的点赞表情 :( 那个全能的 OP 是谁?
  • 过来帮忙 :D

标签: websocket socket.io load-balancing haproxy pm2


【解决方案1】:

无法解决它,这可能是一个“错误”的问题。这是因为我没有持久性,并且我将对象保存在节点中。如果我的节点实例是无状态的并使用 redis,我可以启动许多节点而不会出现这个问题。这是下一步,因为它仍然是一个早期的应用程序。结帐:quarantime.io :)

【讨论】:

    猜你喜欢
    • 2014-12-18
    • 1970-01-01
    • 2017-06-19
    • 2022-01-10
    • 2012-04-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多