UPDATEregistrare più istanze di un client Primavera avvio Eureka da un singolo host
Il README nella this repo è stato aggiornato per dimostrare la soluzione nella risposta accettata.
sto lavorando con un semplice esempio di un servizio di registrazione primavera Boot Eureka e la scoperta sulla base di this guide.
Se avvio una istanza client, si registra correttamente e può vedere se stessa tramite DiscoveryClient
. Se avvio una seconda istanza con un nome diverso, funziona altrettanto bene.
Ma se avvio due istanze con lo stesso nome, la dashboard mostra solo 1 istanza in esecuzione e la DiscoveryClient
mostra solo la seconda istanza.
Quando uccido la seconda istanza, la prima è nuovamente visibile attraverso la dashboard e il client di individuazione.
Qui ci sono alcuni più particolari circa i passi che sto prendendo e quello che sto vedendo:
Eureka Server
Avviare il server
cd eureka-server
mvn spring-boot:run
Visita il cruscotto Eureka a http://localhost:8761
Nota che non ci sono "istanze" ancora registrate
Eureka client
avviare un client
cd eureka-client
mvn spring-boot:run
Visita il cliente direttamente al http://localhost:8080/
Il /whoami
endpoint mostrerà la conoscenza di sé del cliente del suo nome dell'applicazione e la porta
{
"springApplicationName":"eureka-client",
"serverPort":"8080"
}
L'endpoint /instances
impiegherà fino a un minuto per l'aggiornamento, ma alla fine dovrebbe mostrare tutte le istanze di eureka-client
che sono state registrate con Eureka Discovery Client.
È inoltre possibile visitare nuovamente la dashboard di Eureka e visualizzarla nell'elenco.
Spin un altro cliente con un nome diverso
Si può vedere che un altro cliente sarà registrato nel modo seguente:
cd eureka-client
mvn spring-boot:run -Dspring.application.name=foo -Dserver.port=8081
Il /whoami
endpoint mostrerà il nome foo
e la porta 8081
.
In un minuto o così, l'endpoint /instances
mostrerà le informazioni su questa istanza foo
.
Nella dashboard Eureka, verranno registrati due client.
Spin un altro cliente con il nome stessa
Ora provare a girare un altro esempio di eureka-client
da solo su a cavallo il parametro port:
cd eureka-client
mvn spring-boot:run -Dserver.port=8082
Il /whoami
endpoint per http://localhost:8082
spettacoli cosa ci aspettiamo
In un minuto o giù di lì, l'endpoint /instances
ora mostra l'istanza in esecuzione sulla porta 8082 anche, ma per qualche ragione, non mostra l'istanza in esecuzione sulla porta 8080.
E se controlliamo il /instances
endpoint su http://localhost:8080
anche noi ora vediamo solo l'istanza in esecuzione su 8082 (anche se chiaramente, quello sul 8080 è in esecuzione in quanto questo è quello che stiamo chiedendo.
il cruscotto Eureka mostra solo 1 istanza di eureka-client
esecuzione.
Cosa sta succedendo h ere?
Proviamo ad eliminare l'istanza in esecuzione su 8082 e vedere cosa succede.
Quando interroghiamo /instances
il 8080, ancora mostra solo l'istanza sul 8082.
Ma un minuto dopo, che se ne va e abbiamo appena vediamo l'istanza su 8080 di nuovo.
La domanda è: perché non vediamo entrambe le istanze di eureka-client
quando sono entrambe in esecuzione?
Grazie, non ho visto prima, ma sembra che questo è in realtà un duplicato di http: //stackoverflow.com/questions/29653420/netflix-eureka-and-2-stances-of-application-on-local-environment (Piccolo errore di battitura nella proprietà che avevo bisogno di impostare, dovrebbe essere 'eureka.instance. metadataMap.instanceId') Ho avviato la seconda istanza con 'mvn spring-boot: run -Dserver.port8082 -Deureka.instance.metadataMap.instanceId = instance2' e viene visualizzato nella dashboard e t la risposta dal 'DiscoveryClient' ora. – mcwumbly
Sì, hai ragione - dovrebbe essere 'metadataMap' –
Ho trovato '{namespace} .instanceId' per funzionare e non' eureka.instance.metadataMap.instanceId' con il master master di eureka a partire da oggi. – Divs