Amazon web services AWS ALB健康检查通过HTTP但不通过Websocket

Amazon web services AWS ALB健康检查通过HTTP但不通过Websocket,amazon-web-services,amazon-elb,Amazon Web Services,Amazon Elb,我在Docker Swarm中部署了一个应用程序,它有两个可公开访问的服务,HTTP和WS 我创建了两个目标组,每个服务一个,注册的实例是Docker Swarm的管理员。然后我创建了ALB并添加了两个HTTPS侦听器,每个侦听器都指向特定的目标组 现在问题来了。HTTP健康检查顺利通过,但Websocket检查总是不健康,我不知道为什么。根据,使用HTTP/HTTPS侦听器也应该适用于WS/WSS 在WS-check中,我尝试了路径/和应用程序实际使用的路径/WS。他们俩都没有通过健康检查 这

我在Docker Swarm中部署了一个应用程序,它有两个可公开访问的服务,HTTP和WS

我创建了两个目标组,每个服务一个,注册的实例是Docker Swarm的管理员。然后我创建了ALB并添加了两个HTTPS侦听器,每个侦听器都指向特定的目标组

现在问题来了。HTTP健康检查顺利通过,但Websocket检查总是不健康,我不知道为什么。根据,使用HTTP/HTTPS侦听器也应该适用于WS/WSS

在WS-check中,我尝试了路径
/
和应用程序实际使用的路径
/WS
。他们俩都没有通过健康检查

这也不是防火墙的问题。安全组是完全开放的,并且没有iptables规则,因此可以在两个方向上进行连接

我从Docker Swarm中启动了websocket容器,只是为了测试它是否与Swarm相关(我很确定它与Swarm无关,但为了测试起见,它也不起作用,所以现在我有点失去了希望

我可能缺少什么配置,使得HTTP服务可以工作,而Websocket服务不能工作

更新

我回到这个问题上,在进一步研究之后,问题似乎是目标群体,而不是ALB本身。在阅读文档时,我忘了启用粘滞选项。然而,我只是这样做了,问题依然存在

更新2


ELB似乎没有将连接从HTTP升级到WebSocket。

ALB不支持根据以下各项进行WebSocket运行状况检查:

“运行状况检查不支持WebSocket。”


问题是,尽管AWS声称ALB支持HTTP2,但事实上,它将所有内容都降采样到HTTP1,然后做它的事情,然后再次将其升级到HTTP2,这破坏了所有内容。

我也有类似的问题。当ALB检查WS-service时,它从中接收到HTTP状态101(交换协议)。而且,正如在其他答案中所指出的,对于ALB来说,这不是一个足够好的回答。我试图更改健康检查配置中的匹配器代码,但它不允许任何超出200-299范围的内容。
在我的设置中,我让Socket.io在Express.js上运行,因此我通过将Socket.io路径(不要将路径与名称空间混淆)更改为
/ws
,并让Express.js回答
/
的请求来解决这个问题。将健康检查指向
/
,成功了。

问题解决了吗?@Kostanos nope,仍在努力解决这个问题issue@yzT你有解决办法吗?我可以考虑运行一个迷你网络服务器来执行健康检查,但是我…@CyrilDuchon Doris我们不再使用WebSocket了,所以不知道AWS方面是否发生了变化。