ELB балансировки серверов с сохранением состояния - PullRequest
0 голосов
/ 18 февраля 2020

Допустим, у меня есть служба HTTP2, в которой есть список пользователей и цвет волос пользователя, в памяти и в базе данных.

Теперь я хочу увеличить масштаб до нескольких узлов, однако я этого не делаю. хотите, чтобы один и тот же пользователь находился в памяти двух разных серверов - каждый сервер должен обрабатывать этих указанных c пользователей. Это означает, что мне нужно сообщить балансировщику нагрузки, где обрабатывается каждый пользователь. В случае удаления масштаба мне нужно сообщить, что этот пользователь нигде не может быть перенаправлен на любой сервер или по заданному правилу - IE сервер с меньшим объемом используемой памяти.

Any1 узнает, загружен ли ALB балансир это поддерживает? Один путь, который я думал об использовании маршрутизации на основе параметров строки запроса, поэтому я мог сообщить в самом запросе что-то вроде destination_node = (int)user_id % 4 в случае, если у меня было, например, 4 узла - и это сработало хорошо в доказательстве концепции, но это приводит к несколько проблем:

  • Самому сервису необходимо знать, сколько экземпляров нужно сбалансировать.
  • Я не могу гарантировать даже балансирование, в основном это балансировка на основе удачи.

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

1 Ответ

0 голосов
/ 18 февраля 2020

В AWS Application Load Balancer (ALB) можно написать правила маршрутизации для

  • Host Header
  • HTTP Header
  • HTTP-метод запроса
  • Шаблон пути
  • Строка запроса
  • IP-адрес источника

Но на данный момент нет способа для маршрутизации в условиях динамического c. Если возможно сгруппировать ваши данные, я бы предпочел шаблон пути как /users/blond/123

...