UPDATEzarejestrować wiele wystąpień Klienta Wiosna Boot Eureka z jednego hosta
README w this repo został zaktualizowany do wykazania rozwiązanie w akceptowanych odpowiedź.
pracuję z prostym przykładzie rejestracji usługi Wiosna Boot Eureka i odkrycia oparte na this guide.
Jeśli uruchamiam jedną instancję klienta, rejestruje się ona prawidłowo i może przejrzeć się przez DiscoveryClient
. Jeśli uruchomię drugą instancję o innej nazwie, działa ona również.
Ale jeśli uruchomię dwie instancje o tej samej nazwie, pulpit nawigacyjny pokazuje tylko 1 wystąpienie uruchomione, a DiscoveryClient
pokazuje tylko drugą instancję.
Po zabiciu drugiej instancji pierwsza z nich jest ponownie widoczna za pośrednictwem pulpitu nawigacyjnego i klienta wykrywania.
Oto kilka szczegółów na temat etapów ja przyjmujących i co widzę:
Eureka Server
uruchomić serwer
cd eureka-server
mvn spring-boot:run
Otwórz panel w Eureka http://localhost:8761
Pamiętaj, że nie ma jeszcze "Instancji" jeszcze zarejestrowanych
Eureka Client
Uruchom klienta
cd eureka-client
mvn spring-boot:run
odwiedzić klient bezpośrednio na http://localhost:8080/
Punkt końcowy /whoami
pokaże klienta samowiedzę swojej nazwy aplikacji i portu
{
"springApplicationName":"eureka-client",
"serverPort":"8080"
}
Punkt końcowy /instances
potrwa do minuty, aby zaktualizować, ale powinien ostatecznie pokazać wszystkie wystąpienia eureka-client
, które zostały zarejestrowane przez klienta Eureka Discovery.
[
{
"host":"hostname",
"port":8080,
"serviceId":"EUREKA-CLIENT",
"uri":"http://hostname:8080",
"secure":false
}
]
Możesz również odwiedzić dashoboard Eureka ponownie i zobaczyć go tam.
rozpędzają kolejny klient z inną nazwą
Widać, że inny klient będzie zarejestrowana w następujący sposób:
cd eureka-client
mvn spring-boot:run -Dspring.application.name=foo -Dserver.port=8081
Punkt końcowy /whoami
pokaże nazwę foo
i port 8081
.
Za minutę punkt końcowy /instances
wyświetli również informacje o tej instancji .
Na pulpicie nawigacyjnym Eureka dwóch klientów zostanie zarejestrowanych.
rozpędzają innego klienta z nazwą samo
Teraz spróbuj kręci kolejną instancję eureka-client
tylko przez nadrzędny parametr port:
cd eureka-client
mvn spring-boot:run -Dserver.port=8082
/whoami
końcowy dla http://localhost:8082
pokazach czego oczekujemy.
W minutę lub tak, punkt końcowy /instances
pokazuje teraz wystąpienie działa na porcie 8082 także, ale z jakiegoś powodu, to nie pokazuje instancji działa na porcie 8080.
A jeśli sprawdzamy /instances
punkt końcowy na http://localhost:8080
my też teraz zobaczyć tylko instancja działa na 8082 (choć wyraźnie, jeden na 8080 jest uruchomiony, ponieważ to, co mamy z prośbą o.
Eureka desce rozdzielczej pokazuje tylko 1 przypadek eureka-client
uruchomiony.
Co słychać w h ere?
Spróbujmy zabić instancję działającą na 8082 i zobaczmy, co się stanie.
Kiedy zapytania /instances
na 8080, to nadal pokazuje tylko wystąpienie na 8082.
Ale minutę później, że odchodzi, a my po prostu zobaczyć instancji w 8080 ponownie.
Pytanie brzmi, dlaczego nie widzimy obu wystąpień eureka-client
, gdy obie są uruchomione?
Dzięki, ja nie widziałem wcześniej, ale wygląda to faktycznie duplikatem http: //stackoverflow.com/questions/29653420/netflix-eureka- i -2-właściwości-aplikacji-na-środowisku lokalnym (Mała literówka w obiekcie, którą potrzebowałem ustawić, powinna być "eureka.instance". metadataMap.instanceId') Rozpocząłem drugą instancję z 'mvn spring-boot: run -Dserver.port8082 -Deureka.instance.metadataMap.instanceId = instance2', która pojawia się na desce rozdzielczej i t teraz odpowiedź od 'DiscoveryClient'. – mcwumbly
Tak, masz rację - powinno to być "metadataMap" –
Znalazłem '{namespace} .instanceId', które działa, a nie' eureka.instance.metadataMap.instanceId' z oddziałem eureka master od dzisiaj. – Divs