У меня есть установка, в которой я развертываю приложение spring-cloud-consul из оверлейной сети docker swarm. В моей оверлейной сети я создал изображения консула на каждом узле. Когда я запускаю приложение spring-cloud-consul, я должен указать имя хоста агента консула, с которым он должен разговаривать, например «обнаружение», чтобы он мог рекламировать себя и запрашивать обнаружение услуг. Проблема здесь в том, что каждый контейнер затем запрашивает одного и того же консула. Когда я удаляю этого конкретного агента консула, кажется, что Ribbon DiscoveryClient полагается на свой собственный кеш, а не на один из других узлов консула.
Каков правильный способ запуска приложения микросервиса с использованием spring-cloud-consul и consul, чтобы они не зависели от одного фиксированного агента консула?
Решения, которые я задумал попробовать:
- Наличие нескольких файлов компоновки, в которых указаны разные агенты консула.
- Каким-то образом образ докера идентифицирует узел, на котором он находится, а затем настраивает себя на использование агента консула, локального для этого узла. (Пока не знаю, как это сделать.)
- Упакуйте агента консула с приложением spring -boot.
Спасибо за помощь.