【发布时间】:2017-12-26 01:52:00
【问题描述】:
我有一个部署在 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。
【问题讨论】:
-
问题解决了吗?
-
@Kostanos nope,仍在努力解决这个问题
-
@yzT 你有解决方法吗?我可以考虑运行迷你网络服务器来执行健康检查的替代方案,但是嗯......
-
@CyrilDuchon-Doris 我们不再使用 websockets,所以不知道 AWS 方面是否发生了变化。
标签: amazon-web-services amazon-elb