我正在开发一个使用 websocket 处理程序的 Tornado 应用程序。我正在使用 Supervisord 运行该应用程序的多个实例,但在负载平衡 websocket 连接时遇到了问题。
我知道 nginx 不支持开箱即用的 websockets 处理,但我按照http://www.letseehere.com/reverse-proxy-web-sockets此处的说明使用 nginx tcp_proxy 模块来反向代理 websocket 连接。但是,这不起作用,因为模块无法路由 websocket url(例如:ws://localhost:80/something)。所以它不适用于我在 Tornado 应用程序中定义的 URL 路由。
从我对网络的研究来看,HAProxy 似乎是对我的 websocket 连接进行负载平衡的方法。但是,我无法找到任何体面的指导来设置 HAProxy 以负载平衡 websocket 连接并且还能够处理 websocket URL 路由。
我真的很感激一些关于如何做到这一点的详细指导。我也对其他解决方案完全开放。