Нищебродский сервер под виртуалки
С недавнего времени заметил, что на диске лежат около десятка виртуалок. Естественно возникло желание это как-то упорядочить. Попробовал засунуть всё в libvirt - но столкнулся с 2 проблемами:
- libvirt на десктопе - неудобен, он зохавывает в управление сетевую подсистему, постоянно меняет адреса tun/tap интерфейсов и часто ломается про обновлениях в арче (в основном из-за зависимых компонентов: bridge-utils, vde, ...).
- управлять этим можно только через virt-manager (локально или через проброс иксов по сети), ставить веб-админку на десктоп - не комильфо, все существующие решения на данный момент - достаточно капризные в обслуживании (об этом - ниже).
Соответственно, было принято решение собрать отдельную машину, забить её памятью по максимуму и всё перенести туда.
Железо
Покопавшись у себя в закромах - не нашёл ничего приличного. Поспрашивал по знакомым - нашёл плату с процессором (AM2/Atlhon X2), лежавших после ремонта и последующего апгрейда машины1
Откопал у себя 400-ваттный БП, чифтековский корпус, оставшийся после покупки нового для сервера и пару дисков на 80Гб. Докупить пришлось: кулер IH-4401A (старый не тянул охлаждать эту 90-ваттную атлоновскую печку), 2 планки памяти по 2Гб.
Собрал, запустил, работает.
Операционка
Поскольку собирается это всё "для себя" на сервер решил воткнуть арч. Также было желание попробовать наконец-то spice в qemu, поэтому некоторые пакеты придётся пересобирать. В арче это сделать на порядок проще, чем в том же дебиане.
Что допиливалось после дефолтной установки:
- загрузчик (extlinux) - там очень легко прикручивается memtest и сам загрузчик прост, как валенок.
- qemu - пересобран с (+spice -bluez -sdl)
- inittab - на первую консоль пущен вывод nmon'а для мониторинга
Выбор админки
Вот здесь немного писал о том, что я смотрел. Брать готовый дистрибутив не хотелось, решил пойти на принцип. Я считаю, что если для чего-то требуется ставить дистрибутив - автор неасилил продумать установку для своего детища.
В результате остановился на Archipel'е. Причиной послужила наиболее вменяемые зависимости и требования к системе среди всех остальных решений. Также, он не пытается быть аццким, сука, комбайном, например, не включает в себя средств развертывания систем, в отличие от тех же openqrm и karesansui. Только управление виртуалками.
Установка и настройка
Если в общих чертах - на 90% зависит от того, как вы поставите ejabberd. К нему в обязательном порядке требуется 2 модуля, которых нет в стандартном пакете в арче - mod_admin_extra
и ejabberd_xmlrpc
. К счастью, пакеты для них уже кто-то собрал и выложил в AUR.
Выкладываю исходный конфиг ejabberd и патч с изменениями к нему.
Небольшие пояснения по jid'ам:
- hypervisor - это учётка archipel-agent, который ставится на управляемую машину
- admin - это учётка админа
Этих двоих нужно создать до запуска агента.
# ejabberdctl register admin vm.morozka.lan <password>
# ejabberdctl register hypervisor vm.morozka.lan <password>
После этого можно потестить всё ли в порядке с настройками:
# archipel-testxmppserver --jid hypervisor@vm.morozka.lan --password <password>
И создать нужные ноды для модуля pubsub
# archipel-rolesnode --jid hypervisor@vm.morozka.lan --password <password> --create
# archipel-tagnode --jid hypervisor@vm.morozka.lan --password <password> --create
# archipel-vmrequestnode --jid hypervisor@vm.morozka.lan --password <password> --create
# archipel-vmparkingnode --jid hypervisor@vm.morozka.lan --password <password> --create
Создаём служебные файлы archipel:
# archipel-initinstall
После этого можно запускать собственно агента
# /etc/rc.d/archipel start
Клиент ставится до безобразия просто - распаковывается тарбол в поддиректорию, доступную через вебсервер.
Всплывшие грабли
Ну, куда без них. Сейчас я в небольшом затруднении, как именно получать доступ к виртуалкам. Реализация мыши в VNC безбожно глючит2. К этому добавляются глюки реализации vnc-консоли в админке. В результате её использование не в текстовом режиме невозможно чуть менее, чем никак. Если использовать сторонний клиент - придётся руками выделять определённый порт виртуалке и где-то вести таблицу их соответствия. Добавление spic'овой графики админка пока не поддерживает.