Невозможно правильно зарегистрировать сервис в Eureka на AWS ECS с динамическими портами на - PullRequest
0 голосов
/ 16 октября 2018

Я недавно унаследовал микросервисную систему, которая работает в стеке Spring-Boot и Netflix в AWS ECS, я новичок в области Spring-Boot и NetFlix.Я пытаюсь перейти от использования статически определенных портов к использованию динамических портов, чтобы мы могли лучше использовать существующие машины, но у меня возникают проблемы с регистрацией микросервисов в Eureka.

Сервисывсе еще нормально запускается, когда они отмечены как отключенные в Spring Boot Admin.Когда я нажимаю на имя службы в Spring Boot Admin, я вижу следующие ссылки в правом верхнем углу

http://10.128.83.113:32915/
http://10.128.83.113:18080/actuator
http://10.128.83.113:18080/actuator/health

10.128.83.113 - это IP-адрес этого экземпляра EC2, который является частью моего кластера ECS, 32915 - это номер хоста, который используется внутри той же машины, а 18080 - это номер порта контейнера, с которым служба связывается внутри контейнера докера.

После прочтения беседы по адресу github.com Я устанавливаю параметр eureka.instance.non-secure-port для HostPort, который, кажется, устанавливает порт на самой верхней из трех ссылок, и из чтения medium.com ссылка на github.com Я также настраиваю

eureka.instance.preferIpAddress=true 
eureka.instance.ip-address=\${HOST_IP} 

Это все работает нормально без трех вышеуказанных элементов конфигурации eureka, когда яиспользование режима сети хоста в ECS / docker и статически определенных портов, но для этого требуется больше экземпляров EC2 в кластере, чем необходимо.Когда я переключаюсь на использование динамических портов и режима мостовой сети (из-за динамических портов), я просто не могу заставить службу должным образом регистрироваться в Eureka, я думаю, что приближаюсь, но я не могу понять, чтоконфиг мне не хватает.Может кто-нибудь посоветовать, как решить эту проблему?Я подозреваю, что что-то регистрирует IP-адрес Docker-контейнера или номер порта Docker-контейнера (или обоих) в Eureka, но я не вижу, где в Eureka можно найти журналы для подтверждения / отклонения этого, и я не знаю, что другоеКонфиг, который я должен установить.

Микроустройства используют весеннюю загрузку версии 2.0.3.ECS составляет 1.20.3

1 Ответ

0 голосов
/ 19 октября 2018

Таким образом, мне удалось заставить это работать, в конце концов мне нужно было установить 6 параметров:

eureka.instance.non-secure-port=${EXPOSED_PORT}
eureka.instance.preferIpAddress=true
eureka.instance.ip-address=${HOST_IP}
eureka.instance.hostname=${HOST_NAME}
eureka.instance.metadataMap.management.port=${EXPOSED_PORT}
eureka.instance.health-check-url=${HOST_IP}:${EXPOSED_PORT}/actuator/health

Все вместе они успешно зарегистрировали службу в Eureka.

...