Aws балансировщик нагрузки для отправленных событий сервера или веб-сокетов - PullRequest
0 голосов
/ 29 января 2019

Я пытаюсь сбалансировать нагрузку на серверную часть событий, отправленных на nodejs, и мне нужно знать, есть ли способ распространять новые соединения на экземпляры с наименее подключенными клиентами.Проблема, с которой я сталкиваюсь, заключается в том, что при масштабировании маршрутизация продолжает отправлять новые подключения к уже насыщенному экземпляру, и, поскольку эти соединения долгоживущие, это просто не будет работать.

Какие варианты у меня есть для долгого горизонтального масштабированиясоединения?

Ответы [ 2 ]

0 голосов
/ 23 февраля 2019

Похоже, что вам нужен балансировщик нагрузки, который может обеспечить как "липкие сеансы", так и использовать политику "наименьшего соединения" вместо политики "циклического перебора".К сожалению, NGINX не может обеспечить это.

HAProxy (прокси высокой доступности) позволяет это:

backend bk_myapp
 cookie MyAPP insert indirect nocache
 balance leastconn
 server srv1 10.0.0.1:80 check cookie srv1
 server srv2 10.0.0.2:80 check cookie srv2

Если вам нужна функциональность ELB и вы хотите свернуть все вручную, посмотрите на это guide .

Возможно, вы также захотите убедиться, что классическая AWS ELB "липкая сессия" конфигурация или более новая ALB "липкая сессия" опцияне соответствует вашим потребностям.ELB обычно отправляет соединение на вышестоящий сервер с наименьшей «нагрузкой», и при объединении с липкими сессиями может быть достаточно.

0 голосов
/ 22 февраля 2019

Поскольку вы используете AWS, я бы порекомендовал Elastic Beanstalk для развертывания приложения Node.js.Официальная документация содержит хорошие примеры, такие как этот .Обратите внимание, что Beanstalk автоматически создаст для вас Elastic Load Balancer , что вам и нужно.

По умолчанию Elastic Beanstalk создает Application Load Balancer для вашей среды.когда вы включаете балансировку нагрузки с помощью консоли Elastic Beanstalk или интерфейса командной строки EB.Он настраивает балансировщик нагрузки для прослушивания HTTP-трафика через порт 80 и пересылки этого трафика экземплярам на том же порту.

[...]

Примечание. Ваша среда должна находиться в VPCс подсетями как минимум в двух зонах доступности для создания балансировщика нагрузки приложения.Все новые учетные записи AWS включают VPC по умолчанию, которые соответствуют этому требованию.Если ваша среда находится в VPC с подсетями только в одной зоне доступности, по умолчанию используется классический балансировщик нагрузки.Если у вас нет подсетей, вы не можете включить балансировку нагрузки.

Обратите внимание, что конфигурация правильного пути проверки работоспособности является ключом для правильного баланса запросов, так каквы упомянули в своем вопросе.

В среде с балансировкой нагрузки Elastic Load Balancing отправляет запрос каждому экземпляру в среде каждые 10 секунд, чтобы подтвердить, что экземпляры исправны.По умолчанию балансировщик нагрузки настроен на открытие TCP-подключения к порту 80. Если экземпляр подтверждает подключение, это считается исправным.

Вы можете переопределить этот параметр, указав существующий ресурс в приложении.,Если вы укажете путь, например / health, URL-адрес проверки работоспособности будет установлен на HTTP: 80 / health.В URL проверки работоспособности должен быть указан путь, который всегда обслуживается вашим приложением.Если для него задана статическая страница, которая обслуживается или кэшируется веб-сервером перед вашим приложением, проверки работоспособности не выявят проблем с сервером приложений или веб-контейнером.

РЕДАКТИРОВАТЬ: Если выищите липкие сессии, как я описал в комментариях, следуйте инструкциям, приведенным в этом руководстве :

Чтобы включить липкие сессии с помощью консоли

  1. Откройте консоль Amazon EC2 по адресу https://console.aws.amazon.com/ec2/.

  2. На панели навигации в разделе НАГРУЗКА НАГРУЗКИ выберите Целевые группы.

  3. Выбратьцелевая группа.

  4. На вкладке «Описание» выберите «Изменить атрибуты».

  5. На странице «Изменить атрибуты» выполните следующие действия:

a.Выберите «Включить слипание печенья с балансировкой нагрузки».

b.Для длительности Stickiness укажите значение от 1 секунды до 7 дней.

c.Выберите Сохранить.

...