问题:使用 AWS Application Load Balancer 的 Websocket 超时

尝试使用 Elastic Beanstalk 环境中的 Application Load Balancer 专门为 websocket 使用端口时,网关超时。

Web 应用程序和 websocket 服务器保存在 Docker 容器中,应用程序运行良好,但是 wss://domain.com:8080 将超时。

这是负载均衡器侦听器,使用 wss 的 SSL 证书。 应用负载均衡器监听器

它指向的目标组是接受 HTTP 的“协议”(我尝试过 HTTPS)并转发到 8080 到 EC2 实例上。或者..应该是。 (似乎不是应用程序负载均衡器上的 TCP 选项)。

我查看了 Application Load Balancer 日志,看起来它到达了目标组,但是在它与 EC2 实例的连接之间超时,我不知道为什么。

暂时所有的AWS安全组都打开了所有流量,我检查了主机,发现端口是开放的并且被Nginx监听,它将路由到正确的端口到docker容器:EC2主机实例开放端口

docker ps还给我看:docker ps

一旦进入容器,我可以看到 Websocket 服务器正在监听该端口:在此处输入图像描述

所以它不可能是 EC2 实例本身,对吗?通过 ALB 中的端口路由 websocket 是否存在问题?

\ - 编辑 -

ALB 的当前 SG:

ALB

EC2 实例 SG:EC2

解答

Websocket 需要双向通信,确保附加到所有资源(EC2 和 ALB)的安全组允许在所需端口上进行入站和出站通信。

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐