Я настроил сервер на AWS Fargate и подключаюсь к Application Load Balancer через Socket.io.
Я включил журналы доступа к Application Load Balancer, и эти журналы выглядят следующим образом:
http 2018-12-25T04:00:15.787118Z app/EC2Co "GET http://ec2co.us-east-2.elb.amazonaws.com:28656/socket.io/?EIO=3&transport=polling&t=1545710415657-0 HTTP/1.1" "python-requests/2.20.0" - - arn:aws:elasticloadbalancing:us-east-2:735263141676:targetgroup/EC2Co-Defau-8X "Root=1-5c21ab4f-f26e11527cb2fa030ade3020" "-" "-" 0 2018-12-25T04:00:15.777000Z "forward" "-" "-"
ws 2018-12-25T04:00:14.548103Z app/EC2Co "GET http://ec2co.us-east-2.elb.amazonaws.com:28656/socket.io/?EIO=3&transport=websocket&sid=ils820o21XTc_rlnAAAA HTTP/1.1" "python-requests/2.20.0" - - arn:aws:elasticloadbalancing:us-east-2:735263141676:targetgroup/EC2Co-Defau-8X "Root=1-5c21ab27-560b3f40746e96c087a97ec0" "-" "-" 0 2018-12-25T03:59:35.646000Z "forward" "-" "-"
ws 2018-12-25T04:14:38.103181Z app/EC2Co "GET http://ec2co.us-east-2.elb.amazonaws.com:28656/socket.io/?EIO=3&transport=websocket&sid=lO2XYpIjTe_9p4s7AAAA HTTP/1.1" "python-requests/2.20.0" - - arn:aws:elasticloadbalancing:us-east-2:735263141676:targetgroup/EC2Co-Defau-8X "Root=1-5c21ab50-f024082cf6db65724f6384c0" "-" "-" 0 2018-12-25T04:00:16.360000Z "forward" "-" "-"
http 2018-12-25T04:14:39.359703Z app/EC2Co "GET http://ec2co.us-east-2.elb.amazonaws.com:28656/socket.io/?EIO=3&transport=polling&t=1545711279222-0 HTTP/1.1" "python-requests/2.20.0" - - arn:aws:elasticloadbalancing:us-east-2:735263141676:targetgroup/EC2Co-Defau-8X "Root=1-5c21aeaf-8a69112ff7361e029ddedf81" "-" "-" 0 2018-12-25T04:14:39.344000Z "forward" "-" "-"
Как видите, соединение корректно обновляется до websocket
, но понижается до polling
.
Я хотел знать, нормальное ли это поведение?
Соединение между клиентом и балансировщиком нагрузки приложения сбрасывается примерно каждые 2 минуты, иногда менее 2 минут, даже если я посылаю ping
на балансировщик нагрузки каждую минуту.
Кроме того, проверки работоспособностибалансировки нагрузки продолжают работать, и ни одна из целей не становится работоспособной.
![enter image description here](https://i.stack.imgur.com/nAmaj.png)
Я не определил явно сообщение 200 ok
в моем клиентском коде длябалансировщик нагрузки для получения.Нужно ли явно определять сообщение 200 ok
?Если да, то какое событие отправляет балансировщик нагрузки во время этих проверок работоспособности?
Постоянное отключение приводит к потере некоторых входных данных от клиента для балансировщика нагрузки и, в свою очередь, к серверу AWS Fargate..
Я использую express
на моем сервере.Ниже приведен соответствующий код из app.js на сервере:
var app = require('express')();
var http = require('http').Server(app);
var io = require('socket.io')(http);
var AWS = require ('aws-sdk');
Обратите внимание, что код сервера находится в Nodejs
, однако код клиента в Python
.Имеет ли это значение и вызывает разъединения?
Итак, это нормальное поведение (см. Журналы выше)?Или мне чего-то не хватает?
Кроме того, как я могу определить сообщение 200 ok
, которое будет отправлено на балансировщик нагрузки, когда он проверяет работоспособность, чтобы мои цели стали здоровыми?
Если есть какая-либо информация, которую я пропустил, и вам требуется ответить на этот вопрос, пожалуйста, прокомментируйте ниже, и я отредактирую вопрос, предоставив необходимую информацию.
Спасибо.