【发布时间】:2013-11-27 10:06:57
【问题描述】:
我正在尝试设置一个弹性负载均衡器,以将请求路由到运行 Primus.io 并使用 sockjs 管理实时通信的 node.js 服务器集群。
我已将负载均衡器设置为使用以下配置进行侦听:
- HTTPS 8084 -> HTTPS 8084(我的 node.js 服务器上使用的端口)
- SSL 443 -> TCP 80
我的理解是让websockets通过ELB工作的唯一方法是通过SSL->TCP,因此上面的配置。
我已正确启用 ELB 的新代理协议,如下所述:
http://docs.aws.amazon.com/ElasticLoadBalancing/latest/DeveloperGuide/enable-proxy-protocol.html
当尝试从客户端连接到服务器时,最初会发送一个 HTTPS 请求,然后根据我所能收集到的信息,它应该升级到 websockets。但是当我将请求发送到负载均衡器地址时,请求就失败了。
如果我将初始 Primus 连接请求发送到单个 nodejs 服务器的 ip,如下所示:
var primus = new Primus('https://ip.address.of.single.server:8084');
请求正确返回并正确升级为websockets。
当我将 IP 地址切换到平衡器的 IP 地址时,它会失败,并且对 node.js 服务器的初始 https 请求没有返回任何内容。我认为这意味着无法建立 websocket 传输,但老实说,我在这方面的经验很少,因此可能完全错误。
有人知道我做错了什么吗?
提前致谢
【问题讨论】:
标签: amazon-web-services websocket load-balancing amazon-elb