Google HTTP负载均衡器无法升级Web套接字连接

Sam*_*lin 0 google-compute-engine

我刚刚添加了一个HTTP负载均衡器,指向运行Tornado Web服务器的几个Google Compute Engine实例.特别是,他们正在处理websockets.

当我通过负载均衡器(在Chrome中)访问带有嵌入式websocket的页面时,我得到:

Error during WebSocket handshake: Unexpected response code: 400
Run Code Online (Sandbox Code Playgroud)

这是通过DNS以及达到负载均衡器的IP.

但是,当我点击一个单独的实例时,我能够成功握手websocket.

当我通过负载均衡器获取页面时,我没有在Web服务器中看到任何400个日志,这进一步表明它是负载平衡器,没有让它通过.

我可以做些什么来允许HTTP'升级'?或者这在云平台HTTP负载均衡器中是不可能的.

编辑:我也可以通过'网络负载均衡器'握手websocket,所以所有迹象都指向HTTP负载均衡器是问题.

Mat*_* S. 5

截至今天(2015年7月),GCP的HTTP LB和AWS的ELB不支持Websockets.

GCP的解决方法是使用网络负载均衡器(https://cloud.google.com/compute/docs/load-balancing/network/).

ELB的解决方法是使用TCP/SSL而不是HTTP/HTTPS.