НАСТРОЙКА:
Я использую 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+ минут (ранее - всего несколько мс).
ЗАМЕЧАНИЯ:
- Проблема не возникает из-за служб Fargate или настройки ECS, поскольку я тестировал их изолированные.
- Проблема возникает со всеми портами, которые я пробовал для прослушивателей.
- Я знаю, что для получения желаемой функции можно использовать Application Load Balancer, но, поскольку мне нужно использовать шлюз REST API, это не вариант.