Создатели социальной сети Ning объявили об открытии под лицензией Apache разработанной в недрах проекта системы управления развертыванием приложений Galaxy. Система Galaxy написана на языке Ruby и предназначена для организации централизованного управления установкой программ и изменении конфигурации на группе машин. Архитектура Galaxy основана на трех компонентах: агенте, консоли и репозитории. Дополнительно подготовлены инструменты для формирования пакетов, Ruby-библиотека и работающий в режиме командной строки клиент для прямого взаимодействия с управляющей консолью и агентами.
Galaxy-агент выполнен в виде фонового процесса, запускаемого на всех хостах или виртуальных окружениях, для которых необходимо обеспечить централизованное управление. Основные функции агента сводятся к развертыванию приложений (установка, обновление, удаление), управлению их работой (запуск, остановка, перезагрузка) и оценке состояния отдельных сервисов. При поступлении команды установки нового сервиса, агент загружает бинарный пакет из репозитория, распаковывает относительно корня и запускает находящийся внутри пакета скрипт, которому может быть передана специфичная для текущего хоста информация (IP-адрес, путь к конфигурации и т.п.). Периодически агент посылает управляющей консоли сообщения с указанием текущего статуса подконтрольных сервисов.
Galaxy-консоль представляет собой сервис, предназначенный для оценки состояния инфраструктуры. Консоль поддерживает в актуальном состоянии информацию о начинке и состоянии всех хостов, включая сведения о сбоях, список установленных компонентов и конфигурацию. Информация хранится в памяти и формируется на основе периодической отправке статусных сообщений от агентов. Для доступа к информации подготовлен специальный API.
Для контроля за системой используется специальное клиентское приложение, работающее в режиме командной строки и способное напрямую взаимодействовать с консолью и агентами при выполнении операций по оценке состояния или при внесении изменений. Cli-клиент позволяет непосредственно инициировать развертывание новых приложений, обновлять конфигурацию и проводить чистку систем. Каждая операция единовременно выполняется над логической группой хостов. Логические группы могут включать как все хосты в системе, так и выборку отдельных хостов, произведенную на основании типа хоста, наличия определенного сервиса или особенности конфигурации.
Galaxy-репозиторий состоит из двух частей: хранилище бинарных пакетов и репозиторий конфигурации. Доступ к данным реализован через использование простого http-сервера, отдающего статический контент. Бинарные пакеты хранятся в файлах вида {тип}-{версия}.tar.gz, а конфигурация представлена в виде иерархии директорий {окружение}/{тип_сервиса}/{пул}. Путь к наборам конфигурации определяет файл build.properties, в процессе разбора которого агент запрашивает необходимые для работы пакета настройки, заменяя в них некоторые типовые параметры, такие как IP-адрес. Пакет является обычным tar-архивом, в котором может быть представлен любой набор данных - от скомпилированных приложений, до дополнительных библиотек и файлов конфигурации. Для определения действий над данными внутри пакета должны находиться два скрипта: xndeploy - для первичного развертывания пакета и launcher - для запуска, остановки и вывода состояния реализуемого пакетом сервиса.
|