Подключение к серверу AWS Fargate за балансировщиком нагрузки приложений через Socket.io - PullRequest
0 голосов
/ 25 декабря 2018

Я настроил сервер на 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

Я не определил явно сообщение 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, которое будет отправлено на балансировщик нагрузки, когда он проверяет работоспособность, чтобы мои цели стали здоровыми?

Если есть какая-либо информация, которую я пропустил, и вам требуется ответить на этот вопрос, пожалуйста, прокомментируйте ниже, и я отредактирую вопрос, предоставив необходимую информацию.

Спасибо.

1 Ответ

0 голосов
/ 03 января 2019

HealthCheck выполняется LoadBalancer (настроен в прилагаемой TargetGroup и по умолчанию равен 200 Ok - см. AWS Elastic Loadbalancing Targetgroup HealthChecks )

Вы уже нашли / проверили этот?

делает-приложение-балансировка нагрузки-поддержка-websockets

Извините, в Германии уже поздно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...