在Amazon Application Load Balancer上托管的套接字连接上有400错误的请求

时间:2018-12-04 16:14:43

标签: amazon-web-services docker socket.io sails.js amazon-alb

背景

我正在kong admin上与kong api gateway连接

我正在使用kong管理员提供的docker file

问题

docker容器在我的本地计算机上运行良好,并且UI已按预期加载

enter image description here

但是,当我尝试访问Amazon ecs上托管的同一docker时,它不起作用。它只是不断显示加载程序。

enter image description here

基础结构

docker容器托管在亚马逊负载均衡器后面,并在端口80上侦听。 然后将端口80上的流量转发到docker容器内的端口1337

负载均衡器网址-http://staging.host.internal

错误

请求

Request URL: http://staging.host.internal/socket.io/?__sails_io_sdk_version=0.13.8&__sails_io_sdk_platform=browser&__sails_io_sdk_language=javascript&EIO=3&transport=polling&t=MTvxlu9&sid=lH69C1E52B3aGVIwAANl
Request Method: GET
Status Code: 400 Bad Request
Remote Address: xx.xx.xx.xx:xx
Referrer Policy: no-referrer-when-downgrade
Access-Control-Allow-Origin: *
Connection: keep-alive
Content-Type: application/json
Date: Tue, 04 Dec 2018 15:56:05 GMT
Transfer-Encoding: chunked
Accept: */*
Accept-Encoding: gzip, deflate
Accept-Language: en-GB,en-US;q=0.9,en;q=0.8
Connection: keep-alive
Cookie: io=lH69C1E52B3aGVIwAANl

回复

{"code":1,"message":"Session ID unknown"}

我在控制台中遇到错误

WebSocket connection to 'ws://staging.host.internal/socket.io/?__sails_io_sdk_version=0.13.8&__sails_io_sdk_platform=browser&__sails_io_sdk_language=javascript&EIO=3&transport=websocket&sid=j-RcLmqGi5bZoQ4YAAPF' failed: WebSocket is closed before the connection is established.

DEBUG = socket.io。* 在服务器上的日志,我得到以下日志

Tue, 04 Dec 2018 15:07:26 GMT socket.io-parser encoding packet
{
    "type": 0,
    "nsp": "/"
}

任何人都可以指向正确的方向进行调试。我没有起点。

1 个答案:

答案 0 :(得分:0)

我必须在ALB上启用粘性会话,因为我在负载均衡器后面托管了多个Docker容器

问题是,没有粘性会话,我登录到一台具有websocket会话ID的服务器上,并且读取请求在另一台服务器上进行,因为由于服务器负载均衡,因此我获得了持续的成功和失败响应。

https://www.looklinux.com/enable-sticky-session-application-load-balancer-aws/