Ich versuche, einige Microservices auf Eureka registrieren. Sie werden auf entfernten Rechnern eingesetzt und ich erwarte, dass ich die IP des Rechners auf Eureka sehen kann, aber alles, was ich sehen kann, ist eine private IP wie 172.17.0.8
, die von außen nicht zugänglich ist.Microservices Registrierung Docker interne IP auf Eureka anstelle von öffentlichen
Da diese Microservices auf Docker-Containern laufen, verstehe ich, dass ich dem Dienst sagen muss, dass er die IP des Hosts anstelle von Docker aufnimmt, aber ich sehe nicht wirklich, wie.
sah ich dieses Problem auf Github ->https://github.com/spring-cloud/spring-cloud-netflix/issues/432
und versuchte:
eureka.instance.prefer-ip-address=true
eureka.instance.ip-address=
Es funktioniert nicht ganz. Gibt es eine Möglichkeit, dies zu tun, ohne Code zu meinem Service hinzuzufügen oder die API von AWS zu verwenden?
Sie müssen weiter unten in diesem Problem suchen. Für aws können Sie die IP-Adresse Ihres Hosts von "http: // 169.254.169.254/latest/meta-data/public-ipv4" beziehen, falls Sie eine Spring-aws haben: Sie können '@Value ($ {public- ipv4} ")', oder verwenden Sie die anderen dort genannten Ansätze. Im Grunde verwenden alle diese URL am Ende. Wenn Sie es nicht in Code möchten, tun Sie die Überprüfung außerhalb von irgendwo und verwenden Sie Eigenschaften, um es in den Code zu bringen (https://github.com/spring-cloud/spring-cloud-netflix/issues/432#issuecomment -134512416 und lesen Sie diese Umgebung vars) – zapl
Sie können versuchen, den Hostnamen in der Umgebungsvariable 'eureka.instance.hostname' zu setzen. Aber wenn Sie auf der aws cloud laufen und Ihre Instanzen kurzlebig sind, müssen Sie Instanz-Metadaten verwenden, um die Umgebungsvariable – Shibashis
zu füllen. Ich habe Dinge gesehen wie: 'hostname: $ {DOCKER_HOST: localhost}', obwohl ich nicht habe es noch probiert. Meinst du das @Shibashis? –