Google compute engine Google HTTP负载平衡器无法升级Web套接字连接

Google compute engine Google HTTP负载平衡器无法升级Web套接字连接,google-compute-engine,Google Compute Engine,我刚刚添加了一个HTTP负载平衡器,它指向运行Tornado web服务器的几个Google计算引擎实例。特别是,他们正在处理WebSocket 当我通过负载平衡器(在Chrome中)访问带有嵌入式websocket的页面时,我得到: 这是通过DNS以及访问负载平衡器的IP实现的 然而,当我点击一个单独的实例时,我能够成功地与websocket握手 当我通过负载平衡器获取页面时,我在Web服务器中没有看到任何400个日志,这进一步表明是负载平衡器没有让它通过 我可以做些什么来允许HTTP“升级”

我刚刚添加了一个HTTP负载平衡器,它指向运行Tornado web服务器的几个Google计算引擎实例。特别是,他们正在处理WebSocket

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

这是通过DNS以及访问负载平衡器的IP实现的

然而,当我点击一个单独的实例时,我能够成功地与websocket握手

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

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


编辑:我还可以通过“网络负载平衡器”与websocket握手,因此所有迹象都表明HTTP负载平衡器是问题所在。

您的实例在LB中是否显示正常?如果是这种情况,您可以执行tcpdump来查看您的实例如何在LB后面直接响应。确保LB的IP后面的响应来自您实例的公共IP,而不是私有IP


如果不健康,则需要仔细检查实例,并确保每次TCP连接都正确关闭。

您的实例在LB中是否显示健康?如果是这种情况,您可以执行tcpdump来查看您的实例如何在LB后面直接响应。确保LB的IP后面的响应来自您实例的公共IP,而不是私有IP


如果不正常,则需要仔细检查实例,并确保每次TCP连接都正确关闭。

尝试将负载平衡器设置为使用TCP或SSL,而不是HTTP或HTTPS。我在AWS负载平衡器上遇到了同样的问题,这个开关似乎解决了这个问题。我怀疑HTTP设置正在过滤websocket需要的一些数据包

尝试将负载平衡器设置为使用TCP或SSL,而不是HTTP或HTTPS。我在AWS负载平衡器上遇到了同样的问题,这个开关似乎解决了这个问题。我怀疑HTTP设置正在过滤websocket需要的一些数据包

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

GCP的解决方法是使用网络负载平衡器()

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

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

GCP的解决方法是使用网络负载平衡器()

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

这一问题现已解决(从2017年起) 应无需对您的终端进行任何更改即可使用。

此问题现已解决(自2017年起) 应该不需要对您的终端进行任何更改即可使用。

Google的外部负载平衡器支持Web套接字,但内部HTTP负载平衡器不支持Web套接字(这很奇怪)。Google的外部负载平衡器支持Web套接字,但内部HTTP负载平衡器不支持Web套接字(这很奇怪)。
Error during WebSocket handshake: Unexpected response code: 400