менеджмент и репозиторий
FreeBSD клеток

In english


О проекте

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 ноде)
  • ...

    Цели проекта

  • автоматизация типовых операций
  • удобный менеджмент, мониторинг и контроль клеток
  • создание платформы для приложений по-требованию.
  • библиотека образов
  • и не только...