Зарегистрируйте несколько экземпляров клиента Spring Boot Eureka с одного хоста

ОБНОВИТЬ

README вэто репо был обновлен, чтобы продемонстрировать решение в принятом ответе.

Я работаю с простым примером регистрации и обнаружения службы Spring Boot Eureka на основеэто руководство.

Если я запускаю один экземпляр клиента, он регистрируется должным образом и может видеть себя черезDiscoveryClient, Если я запускаю второй экземпляр с другим именем, он также работает.

Но если я запускаю два экземпляра с одинаковыми именами, на панели инструментов отображается только один запущенный экземпляр, аDiscoveryClient показывает только второй экземпляр.

Когда я убиваю 2-й экземпляр, 1-й снова виден через панель управления и клиент обнаружения.

Вот еще некоторые подробности о шагах, которые я делаю, и о том, что я вижу:

Эврика сервер

Запустите сервер

cd eureka-server
mvn spring-boot:run

Посетите панель инструментов Eureka наHTTP: // локальный: 8761

Обратите внимание, что «Экземпляры» еще не зарегистрированы

Эврика Клиент

Запустить клиента

cd eureka-client
mvn spring-boot:run

Посетите клиента напрямую по адресуHTTP: // локальный: 8080 /

/whoami конечная точка покажет клиенту самопознание его имени приложения и порта

{
  "springApplicationName":"eureka-client",
  "serverPort":"8080"
}

/instances Обновление конечной точки займет до минуты, но в конечном итоге должно отобразить все экземплярыeureka-client которые были зарегистрированы в Eureka Discovery Client.

[   
    {
      "host":"hostname",
      "port":8080,
      "serviceId":"EUREKA-CLIENT",
      "uri":"http://hostname:8080",
      "secure":false   
    } 
]

Вы также можете посетить Eureka Dashoboard снова и увидеть его там.

Раскрутить другого клиента с другим именем

Вы можете увидеть, что другой клиент будет зарегистрирован, выполнив следующие действия:

cd eureka-client
mvn spring-boot:run -Dspring.application.name=foo -Dserver.port=8081

/whoami конечная точка покажет имяfoo и порт8081.

Через минуту или около того/instances конечная точка покажет информацию об этомfoo экземпляр тоже.

На панели инструментов Eureka теперь будут зарегистрированы два клиента.

Раскрутить другого клиента стак же название

Теперь попробуйте раскрутить другой экземплярeureka-client только переопределяя параметр порта:

cd eureka-client
mvn spring-boot:run -Dserver.port=8082

/whoami конечная точка дляhttp://localhost:8082 показывает, что мы ожидаем.

Через минуту или около того/instances конечная точка теперь также показывает экземпляр, работающий на порту 8082, но по какой-то причине он не показывает экземпляр, работающий на порту 8080.

И если мы проверим/instances конечная точка наhttp://localhost:8080 теперь мы также видим только экземпляр, работающий на 8082 (хотя ясно, что экземпляр на 8080 работает, потому что это то, что мы просим).

Панель инструментов Eureka показывает только 1 экземплярeureka-client Бег.

Что тут происходит?

Давайте попробуем убить экземпляр, работающий на 8082, и посмотрим, что произойдет.

Когда мы запрашиваем/instances на 8080 он все еще показывает только экземпляр на 8082.

Но через минуту это уходит, и мы снова видим экземпляр на 8080.

Вопрос в том, почему мы не видим оба случаяeureka-client когда они оба бегут?

Ответы на вопрос(1)

Ваш ответ на вопрос