Pull to refresh

Comments 15

Supervisord — тянет за собой питон (ничего против не имею, но как бы место жалко, особенно учитывая количество сервисов)

Куда тянет? Это на каком дистрибутиве нету питона из коробки?


Zabbix'ы и иже с ним — вроде хорошо, но либо тяжелые агенты, либо большая задержка.

И не тянет php?

Куда тянет? Это на каком дистрибутиве нету питона из коробки?


В образах для докера. Т.к. далеко не всем приложениям нужен питон для запуска, то большинство образов его в себя не включают. Например alpine.

И не тянет php?


Тут я вопроса не понял. Чутка деталей было бы отлично.

Предполагаю, что речь шла про какой-то web UI, но зачем в мелкие контейнеры тянуть еще N утилит общего назначения?

А, в этом смысле. Тут согласен.

А что насчет docker swarm? Вроде не такой тяжелый.

К сожалению, не решает проблемы запуска одиночных сервисов
я не знаю вашей внутренней кухни, но не проще эти сервисы в докер тоже завернуть, чтоб было однообразно?
UFO just landed and posted this here

Спасибо, интересная статья. А вот можно прояснить следующий момент:


Далее, мы хотим передать это администраторам для дальнейшего использования. Километровую строку запуска отправлять как-то не комильфо.

Не очень ясна роль администратора в вашем воркфлоу, я так понимаю, что все происходит автоматически, без вмешательства человека, сервисы, если падают, поднимаются сами. Или все равно кто-то должен настаивать супервизор в запускаемых контейнерах… можете чуть подробнее этот момент описать?

Имелось ввиду, что мы хотим передать другим людям (например админам) для дальнейшей эксплуатации готовый набор параметров и настроек.
Грубый пример: перенос между стендами разработки и тестирования.

Ок, а я правильно понимаю, что сгенеренные yam конфиги для monoexecl "зашиваются" через докерфайлы в докер образы? Или они позже уже деплоятся на зарущенных контейнерах ?

Идея была именно такая (зашивать). Для мониторинга запущенных контейнеров "из-вне" лучше использовать Consul as-is.

А чем хуже вариант использовать существующие приложения?


  • в качестве надёжного супервизора взять что-то из семейства daemontools (напр. runit или s6)
  • аргументы запуска прописать в явном виде sh-скрипта, запускающего сервис
  • для регистрации в консуле тупо отправлять HTTP-запрос в консул любой тулзой из скрипта стартующего сервис
  • для репорта крешей опять же запускать что-то аналогичное (репорт по HTTP в какой-нить сервис вроде pushgateway для prometheus) из скрипта запускаемого супервизором при креше сервиса

По сути, всё это разные задачи, которые нужны в разных комбинациях под разные ситуации. Тулзы, которые всё это делают — занимают ещё меньше, чем бинарник Go-приложения (супервизор из runit — runsv — занимает 30KB и не тянет никаких нестандартных динамических библиотек).

Во-первых, спасибо за s6.
Во-вторых, понятно, что задачу можно решить более одним способом.
В-третьих, все-же сравните затраты на запуск одной команды или на оркестрацию целого вороха утилит. Это как Docker: можно без него, напрямую с cgroups и bridge-utils, но с ним немного проще =)

Если у вас сотни контейнеров, то имхо кубернетис или мезос — никакая не пушка для воробьев. К тому же кастомное решение — это Касторное решение со всеми вытекающими.

Sign up to leave a comment.

Articles