Докер, регистратор и консул на примере
Я новичок как в 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 с регистратором" и "Автоматическая регистрация контейнера с консулом и регистратором" , я нашел полезным понять роль регистратора в процессе поиска услуг.