【发布时间】: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