@sergey_privacy
Админ со стажем, начинающий DevOps

Насколько реально нужен консул девопсу?

Подскажите по таким вопросам:
1. А Consul умеет вообще сам автоматически как-нибудь обнаруживать сервисы? Или просто отдает все, что указываем ему в конфиге? Я как то мельком видел статью что то типа "автоматическое обнаружение сервисов силами consul-а", в которой вроде бы как то это производилось без стандартного перечисления в конфигах. Теперь весь интернет перерыл - никак не найду. Только самостоятельное указание в конфигах.
2. А как вы в консул заносите сервисы свои сервисы? Ансиблом, к примеру, разворачиваете какой то сервис на серваке и сразу добавляете на нем же запись в консула? Или как то более удобно/нативно это можно сделать?
3. А зачем вообще нужна регистрация сервисов в консуле? По докам везде получается, что занесли данные консулу, он передал их прометею. Но если я средствами автоматизации (скрипты, ансибла, что то еще) добавляю какую то службу в конфиги консула, то что мешает мне теми же средствами писать ту же самую инфу прямо в конфиги консула? Зачем лишние промежуточные сервисы, точки отказов, дополнительная нагрузка, дополнительные утечки памяти, дополнительная угроза ИБ и т.д.?
  • Вопрос задан
  • 632 просмотра
Решения вопроса 1
shurshur
@shurshur
Сисадмин, просто сисадмин...
Никто не заставляет использовать docker, systemd, ansible и вообще какие угодно системы оркестрации и оптимизации. Необязательно делать шаблоны конфигов или кластерные конфигурации сервисов, необязательно использовать библиотеки настраиваемого логгирования, возиться с балансерами и реприцируемыми базами. Но люди это делают, значит, смысл всё-таки есть?

Опытный администратор не должен задавать вопрос "нужно ли это вообще?" и исходить из идей вида "любому специалисто в области DevOps нужно вот конкретно это и не нужно конкретно другое". Он должен сам понимать, в какой момент сложность его инфраструктуры достигает того состояния, при котором ей нужно то или иное усложнение. Не рассуждать о том, что консул вообще не нужен или остро необходим, а принять решение о том, что и когда ему нужно для решения практических задач. Прекрасно, что в современном мире существует множество инструментов, которые позволяют достаточно быстро делать различные полезные вещи.

Консул - это тоже инструмент. Вряд ли хоть кто-то использует его возможности целиком и полностью, тем более что никто не заставляет. Кому-то достаточно того, что у него все сервисы зарегистрированы в одном месте и из коробки имеют автоматическое DNS-имя вида NAME.service.consul. Кто-то использует kv-хранилище для хранения параметров, а кто-то хранит в нём секреты и целые конфиги, настраивает токены с различными acl и скрещивает всё это с consul-template. Вообще, необязательно использовать именно консул, есть и другие инструменты для подобных задач. Например, zk/etcd.

Консул чаще используют совсем не с ансиблом, а с инструментами оркестрации, в которых сервисы могут расширяться и сворачиваться, перезагружаться и мигрировать. Скажем, пусть у нас есть условный сервис rabbitmq на три ноды. Тогда у нас может быть три контейнера rabbitm{1..3}, при запуске они регистрируются в консуле скриптом запуска вместе с проверками, а далее consul отдаёт их все три в виде имени rabbitmq.service.consul. Если какой-то из них вдруг упадёт, consul оперативно это обнаружит и исключит из DNS проблемный узел. Если вдруг управляющий всем этим администратор или автоматическая система оркестрации посчитает нужным добавить новые узлы или перенести их куда-то ещё в кластере, то consul также отразит все нужные изменения. При этом использующее rabbitmq приложение должно будет знать только адрес rabbitmq.

Конечно, любую задачу можно обвесить скриптами, костылями и даже самописными плейбуками без использования готовых инструментов, а потом повторно решать десятки задач, которые уже сто раз решены до тебя опытными людьми, но зачем?
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
@vitaly_il1
DevOps Consulting
В дополнение к shurshur - одна из моих любимых цитат: "выбирайте инструменты исходя из потребностей, а не наоборот".
Ответ написан
Комментировать
opium
@opium
Просто люблю качественно работать
Потому что вы сами можете забыть добавить
Например новый сервис или сервер его надо добавить в том места
А вы взяли и не добавили
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы