yzT*_*yzT 5 amazon-web-services amazon-elb
我在 Docker Swarm 中部署了一个应用程序,它有两个可公开访问的服务,HTTP 和 WS。
我创建了两个目标组,每个服务一个,注册的实例是 Docker Swarm 的管理者。然后我创建了 ALB 并添加了两个 HTTPS 侦听器,每个侦听器都指向特定的目标组。
现在问题来了。HTTP健康检查通过没有问题,但是Websocket检查总是不健康,不知道为什么。根据http://docs.aws.amazon.com/elasticloadbalancing/latest/application/load-balancer-listeners.html,使用 HTTP/HTTPS 侦听器也应该适用于 WS/WSS。
在 WS 检查中,我尝试将路径/和应用程序实际使用的路径都作为路径/ws。他们都没有通过健康检查。
这也不是与防火墙相关的问题。安全组是开放的,没有 iptables 规则,因此可以双向连接。
我从 Docker Swarm 中启动了 websocket 容器,只是为了测试它是否与 Swarm 相关(我很确定它不是,但地狱......为了测试),它也不起作用,所以现在我我有点不抱希望了。
我可能缺少什么配置,以便 HTTP 服务工作但 Websocket 服务不工作?。
更新
我又回到了这个问题,经过进一步研究,问题似乎出在目标组上,而不是 ALB 本身。通读文档http://docs.aws.amazon.com/elasticloadbalancing/latest/application/load-balancer-target-groups.html,我忘记启用粘性选项。但是,我只是这样做了,问题仍然存在。
更新 2
看起来 ELB 没有将连接从 HTTP 升级到 WebSocket。
ALB 不支持 websocket 运行状况检查:
https://docs.aws.amazon.com/elasticloadbalancing/latest/application/target-group-health-checks.html
“健康检查不支持 WebSocket。”
问题是,尽管 AWS 声称 ALB 支持 HTTP2,但实际上它会将所有内容下采样到 HTTP1,然后执行它的操作,然后再次将其升级到 HTTP2,这会破坏所有内容。
| 归档时间: |
|
| 查看次数: |
1281 次 |
| 最近记录: |