Маршрутизация контейнеров ECS с балансировщиком нагрузки приложений в AWS

Я знаю, что балансировщики нагрузки приложений - это новинка AWS, и до сих пор мало обсуждений (помощи).

У меня есть несколько контейнеров api (докеров), работающих в EC2 Container Service (ECS). Я могу использовать балансировщики нагрузки приложений для управления маршрутизацией на уровне приложения, а не на уровне сети. Это именно то, чего не хватало ECS до сих пор.

Ближе к делу ...

Я пытаюсь добраться до точки, в которой балансировщик нагрузки обнаружит шаблон в URL-адресе запроса и направит запрос в правильный контейнер, но направит запрос без шаблон включен.

Например:

http://elb.eu-west-1.elb.amazonaws.com/app1/ping Должен направлять запрос '/ ping' в контейнер app1

http://elb.eu-west-1.elb.amazonaws.com/app2/ping Должен направлять запрос '/ ping' в контейнер app2

так далее...

У каждого приложения есть своя целевая группа и соответствующий шаблон: / app1 *, / app2 *.


эта проблема

Я могу успешно получить запрос к '/ app1 / ping' для маршрутизации в контейнер app1, однако запрос попадает в контейнер как '/ app1 / ping' (очевидно), но мне нужно только '/ ping', чтобы попасть в контейнер. '/ app1' не имеет отношения к контейнеру. Есть идеи, как я могу этого добиться?


person Marc Costello    schedule 17.08.2016    source источник
comment
Я полдня поигрался с балансировщиком нагрузки приложений и понял то же самое. Это не интуитивно понятно. Очень хотел бы услышать ответ на это.   -  person n00b    schedule 13.09.2016


Ответы (1)


Балансировщики нагрузки приложений очень хорошо справляются с некоторыми задачами, но очень многое не делают. Это верно для многих сервисов AWS (например, SQS совсем недавно, спустя почти десять лет, получил поддержку FIFO), и вы можете любить или ненавидеть это.

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

person Bram    schedule 30.01.2017
comment
Я согласен, у ELB2 есть определенные пути в этом отношении. Я также согласен с тем, что API Gateway идеально подходит для этого сценария! Модель ценообразования рассчитана на запрос, поэтому на API с высокой пропускной способностью это просто нерентабельно для менее важных приложений; особенно когда мы знаем, что можем сделать это дешевле. - person Marc Costello; 01.02.2017
comment
Правда, в этом сценарии API-шлюз является избыточным и, следовательно, слишком дорогим для получения выгоды. Я предпочитаю использовать шлюз API в качестве отдельного контейнера, который также работает в вашем кластере ECS и может выполнять правила маршрутизации за вас. Вы получите один внешний ALB, который маршрутизирует контейнер шлюза API, и один или несколько внутренних ALB, направляющих к вашим службам, для которых вы хотите обрабатывать маршрутизацию. Это распространенный шаблон проектирования в архитектуре микросервисов. - person Bram; 01.02.2017