2016-04-25 3 views
0

У меня есть установка, в которой я развертываю приложение весеннего облачного консула из сети оверлейных роек-докеров. В моей оверлейной сети я создал изображения консула на каждом узле. Когда я разворачиваю приложение spring-cloud-consul, я должен указать имя хоста агента консула, с которым он должен поговорить, например, «открытие», чтобы он мог рекламировать себя и запрашивать обнаружение службы. Проблема здесь в том, что каждый контейнер затем запрашивает одного и того же агента консула. Когда я удаляю этого конкретного агента консула, Ribbon DiscoveryClient, похоже, полагается на свой собственный кеш, а не на использование одного из других консульных узлов.Весеннее облако с консулом для высокой доступности

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

Solutions Я думал о попытке:

  1. Имея несколько файлов и в составлении которых определяют различные агенты. Консула
  2. Как-то с изображением докера идентифицируйте узел, на котором он включен, а затем настройте себя на использование агента консула, локального для этого узла. (Не знаю, как это сделать.)
  3. Пакет агента консула с приложением весенней загрузки.

Благодарим за помощь.

+1

От https://www.consul.io/docs/agent/basics.html «Агент должен работать на каждом узле, который является частью кластера Consul». ИМО, управляющая агентом на каждом узле, запускает агент в каждом контейнере докера. – spencergibb

+0

Это будет вариант 3. Но я чувствую, что это своего рода разрыв микрокапсуляции. Это также делает упаковку этих изображений более сложной, так как это потребует расширения изображения консула, гарантируя, что требования к java для весны существуют, а затем запускают обе службы. Однако он обеспечивает наивысшую надежность в том, что данный консул-агент спускает только один экземпляр. – Mimyck

+0

Что означает «инкапсуляция микросервиса»? Консул - это единый двоичный файл. – spencergibb

ответ

0

Агент консула должен работать на каждом узле кластера. Нет необходимости запускать агента консула внутри каждого контейнера докера, как раз на каждом узле. У вас есть выбор установки агента консула на каждом узле или запуска агента консула в контейнере докеров на каждом узле.

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

Подробнее о запуске агента консула в клиентском режиме в контейнере докера см .: https://hub.docker.com/_/consul/ и выполните поиск для запуска агента консула в режиме клиента. Это определяет контейнер агента с сетью -net = host, поэтому агент ведет себя так, как будто он установлен изначально, когда он фактически находится в контейнере докера.

Смежные вопросы