Докер, регистратор и консул на примере

Я новичок как в Docker, так и в Consul, и я пытаюсь понять, как контейнеризованные приложения могут использовать Consul для и реестров служб и KV-конфигураций ( "настройка" ).

Мое понимание заключалось в том, что я мог:

  • Создайте образ, который запускает сервер Consul, что-то вроде this; затем
  • Сдвиньте три из этих контейнеров Docker-Consul (образуя кластер/кворум) на myvm01.example.com (Ubuntu VM); затем
  • Рефакторинг моего приложения для использования Консула и создания образа Docker, который запускает мое приложение и агента Consul, с агентом, настроенным на присоединение к кворум 3 node при запуске. При запуске мое приложение использует локальный агент Consul для выгрузки всех его конфигураций, хранящихся в виде пар KV. Он также подключается к зарегистрированным/здоровым службам и использует локальный инструмент балансировки нагрузки, чтобы сбалансировать службы, с которыми он интегрируется.
  • Запустите мои контейнеры приложений, скажем, myvm02.example.com (еще одна Ubuntu VM).

Итак, для начала, если это похоже на то, что я неправильно понимаю нормальное/правильное использование Docker и Consul (sans Registrator), начните с исправления!

Предполагая, что я более или менее корректен, я недавно наткнулся на Registrator и теперь еще более запутан. Регистратор, похоже, является посредником между вашими контейнерами приложений и вашим сервером Consul (или любым другим сервером).

После прочтения учебника Quickstart это похоже на то, что вы должны сделать:

  • Разверните контейнеры кластеров/кворума Consul до myvm01.example.com, как раньше
  • Вместо того, чтобы "Dockerizing" мое приложение напрямую использовать Консул, я просто интегрирую его с Registrator
  • Затем я где-то создаю контейнер регистратора и настраиваю его для интеграции с Consul
  • Затем я развертываю контейнеры приложений. Они интегрируются с Регистратором, а Регистрант, в свою очередь, интегрируется с Консулом.

Мои проблемы:

  • Я понимаю, что это правильно или от основания? Если да, то как?
  • Что фактически достигается добавлением Регистратора. Не кажется (по крайней мере, нетренированному глазу) как нечто большее, чем слой косвенности между приложением и реестром службы.
  • Смогу ли я использовать инструмент конфигурации Consul KV через регистратор?

Ответ 1

Я понимаю, что это правильно или от основания? Если да, то как?

Мне кажется, что это нехорошее решение, чтобы все члены кластера/кворума работали внутри одной и той же виртуальной машины. Это не так уж плохо, если вы используете его для разработки или монтажа или чего-то еще, где вам не все равно о надежности, но не для производства.

Как только ваша VM умрет, вы потеряете все преимущества, создаваемые кластером. И даже больше, вы можете потерять все данные, которые у вас есть в магазине K/V, потому что вы используете серверы Consul внутри контейнеров докеров, которые должны быть дополнительно сконфигурированы для совместного использования конфигурации между прогонами.

Что касается остальных, я вижу это так же, как и вы.

Что фактически достигается добавлением Регистратора.

С моей точки зрения, главное, что вам не нужно предоставлять экземпляр агента Consul в каждом контейнере, который вы запускаете. И контейнер с изображением, которое вы запускаете, отвечает только за их основные функции, а не за то, что он где-то зарегистрировался. Вы можете просто вытащить изображение и просто запустить контейнер с ним, чтобы сделать его доступным, без дополнительной работы.

Могу ли я использовать инструмент конфигурации Consul KV через регистратор?

К сожалению, нет. По крайней мере, мы не нашли решения, чтобы использовать его таким образом, когда мы искали что-то, чтобы сделать сервис обнаружения и управления конфигурацией. Мы пришли к выводу, что Регистратор не является прокси-сервером для хранилища K/V и используется только для автоматизации обнаружения сервисов. Поэтому вам нужно использовать другую логику для доступа к хранилищу consul K/V.

Обновление:, а вот 2 статьи: "Автоматическое объявление службы Docker с регистратором" и "Автоматическая регистрация контейнера с консулом и регистратором" , я нашел полезным понять роль регистратора в процессе поиска услуг.