AWS: два слушателя в балансировщиках сетевой нагрузки приводят к долгому времени загрузки - PullRequest
1 голос
/ 29 мая 2020

НАСТРОЙКА:

Я использую Amazon Web Services для внутренних сервисов.

Вычислительные сервисы размещаются в ECS как FARGATE-Services.

Для доступа к этим Сервисам я использую балансировщик сетевой нагрузки (NLB).

Перед NLB находится REST API API Gateway. Этот REST API подключен к NLB через частную ссылку. API должен быть REST API (а не http-API). Таким образом, я могу подключить только NLB, а не Application Load Balancer.


ЖЕЛАЕМАЯ ФУНКЦИЯ:

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

  • Listener A | ПОРТ 3000 | ЦЕЛЕВАЯ ГРУППА A | УСЛУГА A
  • Слушатель B | ПОРТ 4000 | ЦЕЛЕВАЯ ГРУППА B | СЛУЖБА B

Теперь, когда я вызываю DNS-балансировщик нагрузки (или конечную точку шлюза API, которая имеет прокси для этого NLB) на порт 3000, я хочу связаться со службой A. И когда я вызываю ее на порт 4000 Я хочу подключиться к службе B.


ПРОБЛЕМА:

Если я использую описанную настройку с двумя прослушивателями, я могу подключиться к обеим службам через порты, но время загрузки увеличивается до 2+ минут (ранее - всего несколько мс).


ЗАМЕЧАНИЯ:

  1. Проблема не возникает из-за служб Fargate или настройки ECS, поскольку я тестировал их изолированные.
  2. Проблема возникает со всеми портами, которые я пробовал для прослушивателей.
  3. Я знаю, что для получения желаемой функции можно использовать Application Load Balancer, но, поскольку мне нужно использовать шлюз REST API, это не вариант.
...