|
|
О проекте
CBSD - это обертка из sh-скриптов (преимущественно) вокруг подсистемы jail(8) операционной системы FreeBSD, ориентированного на связывании различных особенностей FreeBSD, таких как racct,vnet, zfs, carp, hastd и тд в один инструмент для более комплексного решения при построении серверов приложений, использующее заранее подготовленные jail образы с типовым набором ПО и требующие минимальной настройки.
Благодаря простоте базового функционала по созданию и удалению клеток (и я надеюсь, он таким и останется), в данный момент существует множество реализаций и надстроек над стандартным jail(8), позволяя людям создавать и использовать собственное варианты по управлению клетками FreeBSD, и CBSD является одним из таких надстроек.
Какого-либо нового функционала в ОС на данном этапе не внесено - все, что могут делать скрипты cbsd, можно сделать командой (командами, десятками, сотнями команд) в CLI через соответствующие утилиты. Проект делается как для облегчения собственных нужд по администрированию клеток и серверов, так и 'just for fun'.
Из списка собственных нужд можно отметить следующие действа:
- быстрое развертывание jail с нуля
- эспорт и импорт jail в файл
- клонирование и/или миграция jail (в т.ч. на удаленную машину)
- снапшоты jail
- подсчет трафика и потребляемых ресурсов на один jail
- управление ресурсами jail (приоретизация(re-nice), RACCT/RCTL, файловые квоты)
- репликация jail на удаленные машины
- дистрибьюция "типовых" jail, клеток с определенным набором софта и сервисами
- WEB интерфейс и централизованное управление фермой jail-ов
- ...
Пара ПОЧЕМУ...
Почему FreeBSD, почему Jail, почему sh, почему ...":
FreeBSD/jail выбраны для проекта по ряду причин, наиболее важные из которых:
- отсутствие у Jail накладных ресурсов на виртуализацию. Без VIMAGE, код jail до сих пор имеет в ядре крайне мало своих if/case конструкций;
- следование совету безопасников - "разделяй и властвуй". Желательно каждый сервис или группу сервисов изолировать от других;
- Системным инженерам зачастую приходится делать массу однотипных инсталляций - AMP, MTA, KDE4, .. в какой-то момент захотелось иметь заранее сформированное и настроенное окружение. Клеточный подход позволяет ввести сервер в экслуатацию мгновенно, после установки FreeBSD с нуля - для того, чтобы развернуть почтовый сервер или запустить KDE4, никаких настроек в мастер хосте делать не нужно - достаточно скачать заранее сформированное окружение по сети. Возможность создавать Desktop клетки имеют свою особую прелесть в виде остутствии в необходимости создавать 1024-ый по счету дистрибутив, отличающийся от других только картинкой рабочего стола и набором ПО;
- Удобство бекапа и раскатывания клетки на свежеустановленную ноду;
- Построение собственных локальный репозиториев/библиотек клеток с кастомизированными опциями через FreeBSD ports;
- При вышеупомянутом плюсе - отсутствии оверхеда на виртуализацию, с соответствующим мониторингом, можно формировать максимально эффективные системы. Например, имеются клетки с NoSQL (Redis, Memcached) - плотная работа с памятью, клетка с MySQL - плотная работа с CPU, клетка с WEB-скриптами (CPU&сеть), клетка с Samba (нагрузка на сеть и диски).. Каждую физическую ноду можно укомплектовать такими Jail, с которыми не будет простаивать ни один из аппаратных компонент сервера и при этом, клетки не будут друг другу мешать.
- ..
Большая часть кода написана на sh по той причине, что подобные задачи не требуют большой математической логики - скрипты в основном повторяют ввод команд системного администратора в консоли, т.е., работают с внешними утилитами, такими как: zfs, zpool, sudo, pkg, rsync, соответственно, необходимость применять языки программирования по большей части отсутствует. Часть узких мест, а также некоторый функционал (logtail, репликация, демон следящий за нодами и тп) написаны на C (в планах переписывать узкие места на Си и дальше).
cbsd зависит от следующего ПО: rsync,sudo,libssh2,sqlite3
Особенности...
- готовый репозиторий для ядер и миров, что делает шаги buildworld/installworld необязательными.
- Если шаги buildworld/installworld предпринимаются, поддерживается src.conf для кастомизации мира
- base каталог может располагаться на MD/RAM/TMPFS диске, что может быть полезно при большом кол-ве jail-ов с RO-подмонтированной базой
- поддержка ZFS файловой системы, ZFS квот, ZFS снапшотов
- GUI конфигуратор клеток (DIALOG/WEB)
- поддержка VIMAGE
- подсчет трафика в jail
- импортирование/экспортирование клеток
- описания клеток
- холодная миграция клетки с ноды на ноду
- управление очередностью запуска jail и их приоритетом
- поддержка RACCT/RCTL
- репозиторий с готовыми template-клетками
- репликация клетки
- возможность создавать свои собственные сценарии для создания клеток
- конвертирование jail в PXE/ISO/Memstick-имидж
- Поддержка ненативных архитектур клеток через Qemu User mode (например, клетки arm и mips64 архитектуры на x86-64 ноде)
- ...
Цели проекта
- автоматизация типовых операций
- удобный менеджмент, мониторинг и контроль клеток
- создание платформы для приложений по-требованию.
- библиотека образов
- и не только...
|
|