Евгений Чепурный
@eugenechepurniy
DevOps инженер; Автоматизатор; Архитектор.
Information
- Rating
- Does not participate
- Location
- Киев, Киевская обл., Украина
- Date of birth
- Registered
- Activity
DevOps инженер; Автоматизатор; Архитектор.
Information
Надеюсь Ваш комментарий будет полезен всет тем, кто читает статью в 19-году.
Другой вопрос именно в функционировании: его нельзя использовать как средство для решения проблем текущей инфраструктуры, — под использование Mesos необходимо переделывать много всего. Плюс пока не решенные проблемы с persistent storage (точнее в 0.25 — уже должны анонсировать таковое для отдельного фреймворка) оставляют использование Mesos для энтузиастов. Однако, я считаю, что за подобными системами будущее.
Фишка в том, что discoveryUrl фиксирован (он на всегда localhost и формат запроса стабилизирован) и описывать в конфиг-файле сервиса его не имеет смысла. Единственное что нужно — соглашение об именовании сервисов.
И тут не проблема — просто нужно зарегистрировать разные версии с разными именами или использовать механизм тегирования при объявлении сервиса.
По поводу того какая база или коллекция должна быть использована — Consul KV может быть использован для прозрачной передачи каких-либо настроек. Подробнее в документации.
Как таковым гайдом/примером использования может служить полное описание распределенной системы использующей Consul, но подобное описание вряд ли разрешат предоставить владельцы таких систем.
1. запускаем MongoDB и регистрируем ее в Consul
2. запускаем микросервис(ы) который использует MongoDB как хранилище. Сервис вместо того, чтобы лезть в свой конфиг-файл (где указано системой оркестровки адрес MongoDB сервера и его порт), делает запрос в Consul (по ссылке localhost:8500/v1/catalog/service/mongo-db) и получает данные о том, куда ему подключаться.
3. проходит некоторое время и MongoDB сервер меняет хост (достаточно частый случай для облачных сред, Mesos кластеров и прочих IaaS сервисов; и удержимся от описания того, как данные будут мигрировать)
4. В обычных случаях (без SD), начинаем: zabbix рапортует о том, что монга умерла, запускаем оркестратор — генерим новую монгу, генерим куче сервисов новый конфиг файл с атрибутами коннекта к новой монге, перезапускаем их. В случае с SD, приложение получает connection drop с сервером MongoDB и переходит в состояние некое состояние standby во время которого периодически опрашивает Consul на предмет регистрации нового инстанса MongoDB. Получив данные о регистрации — переподключается.
Очевидная выгода в том, что не используются сторонние по отношению к системе компоненты (системы мониторинга и оркестровки, — но я не призываю не использовать их вообще), сервисы не рестартуют продолжая выполнять какие-то запросы не зависящие от наличия подключения к MongoDB, и таки — отсутствие конфигурационных файлов (не в общем как таковых, но в данном конкретном случае можно без них).
В любом случае — интеграция Consul это не просто «поставил-настроил-работает», — это серьезный архитектурный шаг и не факт, что он подойдет в любом случае.
Внедрение Consul и SD больше подходит для систем которые находятся в состоянии начального проектирования, либо для таких, архитектура которых себя исчерпала и требуется рефакторинг (читай перепроектировать систему и переделать ее компоненты).
В примере с Zabbix-ом — тоже разночтение: Consul использует health-check проверки для того, чтобы дерегистрировать сервис, который более не может выполнять свои функции и не может быть больше использован другими компонентами системы. Consul ни в коем случае не заменит мониторинговую систему.
Но, на самом деле, соль статьи была как раз в описании мало документированного примера использования модуля cp. И стейты в статье описывались не как пример для «copy-paste» себе в дерево, а как рассмотрение шагов модернизации от самого простого проходя более комплексный (всегда рабочий, но не всегда элегантный!) до последнего, описывающего собственно то, что удалось выкопать автору и то, чем хотелось бы поделится.
Естественно, как мне кажется, каждый должен применять голову к тому или иному материалу изложенному на Хабре.
В любом случае — буду рад прочесть и обсудить Вашу статью на тему SaltStack, — вполне возможно, что мне будет чему поучится.
Из своего личного опыта могу сказать, что пределов применения подобных систем почти нету, к примеру, — сейчас я использую SaltStack для создания тестовых окружений для приложения работающего с BigData провайдерами (Apache Hadoop, Horton Works, MapR) с применением автоматизированного создания этих окружений в публичных/приватных облачных провайдерах (Amazon, GoGrid, OpenStack). Если слышали что-то про указанные технологии, то понимаете, сколько административной работы пришлось бы затратить на создание этого «добра» в ручном режиме. С помощью грамотно созданных автоматизаций этот процесс занимает 20-30 минут для кластера из 10 машин.
В любом случае — каждый выбирает для себя что автоматизировать. Можно даже, банально накладывать security патчи на 100 серверов одновременно и в этом уже большой профит от таких систем.