Я вижу, что службы ECS могут использовать балансировщики нагрузки приложения, а работа динамического порта работает atuomagically. Однако ALB имеет не более 10 правил, кроме правил по умолчанию. Означает ли это, что мне нужен отдельный ALB для каждых 10 сервисов, если я не хочу получить доступ через другой порт (в этом случае будут введены правила по умолчанию)? Это кажется очевидным, но для чего-то рекламируемого как решение для балансировки нагрузки в среде микросервисов, это казалось бы невероятно ограничивающим. Я что-то упускаю?AWS ECS и балансировка нагрузки
ответ
Насколько я знаю и испытал это, это действительно так, вы ограничены 10 слушателями за ALB. Учтите, что эта настройка (ALB + ECS) является довольно новой, поэтому возможно, что Amazon отрегулирует лимиты, как люди просят об этом.
Учитывайте, что слушатель обычно имеет несколько целей, в архитектуре микросервиса это переводит на несколько экземпляров одной и той же службы. Таким образом, вы можете запускать 10 различных сервисов, но вы можете запускать 10 экземпляров каждой службы, балансируя 100 контейнеров с одним ALB.
В качестве альтернативы (для экономии затрат) вы можете создать один прослушиватель с несколькими правилами, но их нужно различать по шаблону пути и должны прослушивать (а не маршрутизировать) один и тот же порт. Правила могут перенаправляться в целевую группу по вашему выбору. Например. вы можете маршрутизировать/обслуживать1 в контейнер 1 и/service2 в контейнер 2 внутри одного прослушивателя.
Да, вы правы, и это небольшое ограничение. Однако, если вы можете использовать разные CNAMES для своих услуг, то их наличие в ALB с одной целевой группой для каждой службы не будет вести себя по-другому, если у вас есть одна ALB и несколько целевых групп с правилами. Динамические порты, вероятно, являются основной частью их аргумента «решение для микросервисов».