Исходные данные: существует система, состоящая из веб-фронт-энда и большого числа бек-энд веб-сервисов, выполняющих различные функции, например:
* Сервис по выдаче фотографий
* Сервис по выдаче видео
* Сервис по конвертации видео
* Сервис по обслуживанию бизнес логики связанной с пользователями
* Сервис доступа к внутренней базе данных
* Сервис доступа к внешней БД
*…
Чтобы понять суть вопроса, немного преувеличим проблему и представим себе, что сервисов очень большое количество: 100, 200.
Каждый сервис имеет сетевой адрес и, для простоты, является JSON-Rpc сервисом. Также для простоты, будем считать, что все эти сервисы наследуют некоторую базовую функциональность, например они все умеют выдавать свою версию, выключаться по внешней команде (если такая функциональность нужна) и т.п.
Задача: контролировать запуск, выключение, мониторинг данных процессов. В частности, т.к. многие из этих сервисов зачастую физически расположены на одном сервере — то было бы удобно как минимум иметь скрипты для запуска всех процессов разом или выключения. Также, чтобы понять, вся ли конфигурация сервисов работает, полезно устраивать опрос сервисов после запуска данных скриптов, чтобы убедиться, что все запустились или все выключены.
Цели: удобство деплоймента, мониторинга, диагностики системы, состоящей из большого количества процессов, возможно расположенных на различных серверах.
Вопрос: Существуют ли какие-то известные решения, возможно полезные готовые утилиты для подобного рода задач, концепции и/или практики и какие здесь могут быть практические советы?
Примечание: При ответе на данный вопрос не нужно учитывать специфику каких-то конкретных серверов или служб хостинга сервисов. Можно в принципе условно считать, что веб-сервер, сервисы и все компоненты системы созданы с нуля и поэтому схемы конфигурации, поведение сервисов и/или сервиса, механизм деплоймента и другие аспекты можно изменять как угодно, чтобы добиться нужного удобства.
во первых виртуализация, никаких 10 сервисов на одном сервере, каждый сервис в своем контейнере виртуализации. для управления всеми виртуальными серверами что нибудь вроде solus или второй proxmox.
деплоймент через хадсон
мониторинг zabbix
управление сервера через cf и puppet
если есть необходимость обновления софта то наверно стоит задуматься о загрузке по сети.
> Цели: удобство деплоймента, мониторинга, диагностики системы, состоящей из большого количества процессов, возможно расположенных на различных серверах.
ssh + авторизация по ключам. Готового решения под конкретно свою задачу не найдешь. Можешь еще посмотреть всякиех системы монторинга, cfengine. В зависимости от дистрибутива создать локальный репозиторий с rpm/deb и разворачивать нужны вещи через пакеты.