Эврика с 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 eureka.
С этим решением вы можете использовать eureka с докером в AWS ECS, не теряя при этом преимуществ и гибкости динамического сопоставления портов.
Взгляните на эти проекты, если вы хотите зарегистрировать документированный загрузочный веб-сервис Spring в Eureka в AWS ECS:
- https://gitlab.com/ixilon/docker-aware-eureka-instance
- https://gitlab.com/ixilon/aws-aware-eureka-instance
У меня была такая же проблема, и это прекрасно работает для меня.