Эврика с AWS ECS

Мы используем Eureka с сервисом AWS ECS, который может масштабировать док-контейнеры. В ECS, если вы не указали порт хоста или задали его как "0" в своем определении задачи, тогда порт будет выбран автоматически и сообщен службе. После запуска задачи ее описание должно показать, к какому порту (ам) она привязана.

Как Eureka может решить, какой порт использовать, если у нас есть несколько экземпляров EC2. Например, служба A из EC2-A пытается вызвать службу B из EC2-B. Таким образом, Eureka может разрешить имя хоста, но не может определить незащищенный порт

2 ответа

Решение

Проблема была решена https://github.com/Netflix/eureka/issues/937

В настоящее время агент ECS знает о работающем порте.

Но я не рекомендую использовать Eureka с ECS, потому что Application Load Balancer делает то же самое. Он работает как служба регистрации и обнаружения. Вам не нужно запускать услугу добавления (Eureka), ALB дешево.

Привет @ Александр Филичкин,

Я не думаю, что Application Load Balancer и сервисный реестр делают то же самое. Основное различие: трафик течет через балансировщик нагрузки (приложения), тогда как реестр служб просто дает вам работоспособную конечную точку, к которой ваш клиент может обращаться напрямую (поэтому сетевой трафик не проходит через реестр служб).

Дешевый - это очень относительный термин, может быть, для одних это дешево, а для других - лишние накладные расходы.

Есть другое решение.

Вы можете создать приложение loadbalancer и целевую группу, в которой можно запускать Docker-контейнеры.

Каждый док-контейнер установил свое имя хоста на имя хоста loadbalancer. Если вам нужен красивый URL, то вы можете использовать Route53 для DNS-маршрутизации.

Это выглядит так:

Обнаружение службы с помощью Loadbalancer-Hostname

Обнаружение службы с помощью Loadbalancer-Hostname

Поток запросов

Поток запросов

Если у вас есть два контейнера с одной и той же задачей на разных хостах, оба будут передавать одно и то же имя хоста loadbalancer eureka.

С этим решением вы можете использовать eureka с докером в AWS ECS, не теряя при этом преимуществ и гибкости динамического сопоставления портов.

Взгляните на эти проекты, если вы хотите зарегистрировать документированный загрузочный веб-сервис Spring в Eureka в AWS ECS:

У меня была такая же проблема, и это прекрасно работает для меня.

Другие вопросы по тегам