Я пытаюсь зарегистрировать некоторые микросервисы на Eureka. Они развернуты на удаленных машинах, и я ожидал увидеть IP-адрес машины на Eureka, но все, что я вижу, - это частный IP-адрес, например 172.17.0.8
, который недоступен извне.Микросервисы, регистрирующие внутренний IP-адрес Docker на Eureka, а не публичный
Поскольку эти микросервисы работают на контейнерах Docker, я понимаю, что мне нужно сообщить службе, чтобы получить IP-адрес хоста вместо Docker, но я действительно не вижу, как это сделать.
Я видел этот вопрос на GitHub ->https://github.com/spring-cloud/spring-cloud-netflix/issues/432
и попробовал:
eureka.instance.prefer-ip-address=true
eureka.instance.ip-address=
Это весьма не работает. Есть ли способ сделать это, не связанный с добавлением кода в мою службу или с использованием API AWS?
Вам необходимо подробнее рассмотреть эту проблему. Для aws специально вы можете получить IP-адрес своего хоста от 'http: // 169.254.169.254/latest/meta-data/public-ipv4', если у вас весна aws: вы можете ввести' @Value ("$ {public- ipv4} ")' или использовать другие упомянутые там подходы. В основном все они используют этот URL-адрес в конце. Если вы не хотите его в коде, сделайте чек вне его где-нибудь и используйте свойства, чтобы привести его в код (https://github.com/spring-cloud/spring-cloud-netflix/issues/432#issuecomment -134512416 и прочитать эти окружения) – zapl
Вы можете попробовать установить имя хоста в переменной среды 'eureka.instance.hostname'. Но если вы работаете с облаком aws и ваши экземпляры являются эфемерными, вам придется использовать метаданные экземпляра для заполнения переменной окружения – Shibashis
Я видел такие вещи, как: 'hostname: $ {DOCKER_HOST: localhost}', хотя у меня нет попробовал еще. Это то, что вы имеете в виду @Shibashis? –