main

Нищебродский сервер под виртуалки

С недавнего времени заметил, что на диске лежат около десятка виртуалок. Естественно возникло желание это как-то упорядочить. Попробовал засунуть всё в 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'овой графики админка пока не поддерживает.

Галерея

Общий вид этого счастья


  1. на момент написания материала, найти в местных магазинах материнку под AM2 - невозможно ↩

  2. к слову, это можно обойти, добавив в устройства ввода usb-планшет(!), работает намного пристойнее ↩