请教下pm2 管理nodejs 使用集群模式,无法正常代理websocket的问题
发布于 4 年前 作者 WindTrace 4708 次浏览 来自 问答

上次做了一个项目,使用了websocket通讯, 项目环境及使用的一些主要模块有 nodejs v6.9.1 express v4.14.0 redis v2.6.3 socket.io v1.7.2 socket.io-redis v2.0.1 服务器是Ubuntu系统,使用的nginx做反向代理,在单个服务器下使用pm2开多进程也没问题,但是扩展到多服务器集群websocket就不能好好工作了,有知道怎么解决这个问题的吗?

9 回复

普通http访问正常么

websocket 连接涉及两个请求, 第一个 upgrade req, 第二个才是连接, 两个需要打到同一个节点 http://socket.io/docs/using-multiple-nodes/

配合 pm2 的话, 只能用 nginx ip_hash, pm2 cluster 起的都是 worker, sticky session 需要在 master 中使用, 根据 ip 做路由

@magicdawn 使用upstream ip_hash 还是会出现报错的情况,不稳定,好在现在业务量不大,暂时只用了一台服务器在跑。

pm2 不用 cluster , 全部 fork, 起多个端口

线上有在跑的…

策略的问题吧,没种到同一个服务上

@magicdawn 现在用的就是fork模式四个进程,不过是websocket和主程序共享80端口

@magicdawn 我现在试不了,先前是用的两个云服务器集群,现在没什么业务退了一个,就一个服务服websocket怎么跑都没问题,以后有环境了我再研究研究,多谢 ^_^

回到顶部