Содержание статьи
Сегодня на просторах интернета можно найти огромное количество решений для управления виртуализацией от коробочных до панельных версий. Одни ставятся вместе с системой, другие «наворачиваются» отдельно. Среди них есть с виду обычная система управления виртуальными узлами Archipel от французского программиста Антуана Меркадаля (Antoine Mercadal). Первые версии были доступны в ISO-образе. Скачал, поставил и забыл. Образы были нескольких вариантов, на базе CentOS и на базе Fedora. Сейчас Archipel доступен в репозиториях Ubuntu начиная с 14.04 LTS, на более ранних версиях не тестировалось. Также на сайте разработчика доступен образ ANSOS (Archipel Node Stateless OS).
Почему среди всех выделил именно эту систему? Да просто у нее есть одно существенное отличие, которое для меня показалось очень удобным и гибким в работе решением. Эта система обменивается командами на базе протокола XMPP, что позволяет мгновенно реагировать на изменения состояния системы. То есть все ответы виртуальных узлов или систем сразу появляются в веб-клиенте! Представь, какие удобные инструменты добавляются в мессенджере. Хоть с самим гипервизором, хоть с виртуалками отдельно можно в прямом смысле «разговаривать», обмениваясь сообщениями! Также доступна традиционная веб-панель. Archipel-агент может быть установлен практически на все гипервизоры KVM, QEMU, VMware, Xen, OpenVZ.
Итак, планы на сегодня!
- Установка системы управления Archipel.
- Краткий экскурс по веб-панели управления Archipel.
Установка и настройка
Нам дано:
- установленная версия Ubuntu 12.04;
- утилиты для организации сетевого моста;
- настроенный сетевой мост на одном из интерфейсов.
Итак, имеем Ubuntu Server. Первым делом надо установить ejabberd-сервер (как мы помним, Archipel взаимодействует с пользователем через XMPP-протокол). Устанавливать будем из стандартных репозиториев Ubuntu:
$ sudo apt-get install ejabberd
Далее переходим к настройке. Конфиг для ejabberd можно найти на сайте archipelproject.org, в разделе документации, а исправленный конфиг смотри в дополнительных материалах к этой статье.
Мысли вслух
Конечно, никто не запрещает использовать публичные серверы XMPP вместо того, чтобы настраивать свой. Однако, как ты, уважаемый читатель, понимаешь, безопасность в этом случае очень и очень страдает. Например, некоторых никогда не покидает чувство «они везде, они следят за нами». А вот если в арсенале имеются несколько серверов с виртуализацией, тогда достаточно поднять один Jabber-сервер. У некоторых пользователей встречал даже такую настройку: стоял сервер виртуализации на Ubuntu, а внутри маленькая виртуалка с Jabber-сервером. И уже этот самый джаббер обслуживает управлялку Archipel. В этом случае стоит понимать, что, как только отвалится виртуалка, доступ к управлению через Archipel сразу пропадет тоже.
Меняем параметры IP-адреса и FQDN на свои. Перезапускаем ejabberd:
# service ejabberd restart
Если все прошло хорошо, то движемся дальше. Если нет, идем курить логи и исправлять ошибки. Далее делаем необходимые записи в файле /etc/hosts
на нашем компе или поднимаем DNS-сервер, добавляем нужную зону, прописываем необходимые А-записи. Запись в FQDN типа
X.X.X.X your.fqdn.com
Далее создаем необходимые сертификаты для SSL:
# openssl req -new -x509 -newkey rsa:1024 -days 3650 -keyout /etc/ejabberd/privkey.pem -out /etc/ejabberd/ejabberd.pem
# openssl rsa -in /etc/ejabberd/privkey.pem -out /etc/ejabberd/privkey.pem
# cat /etc/ejabberd/privkey.pem >> /etc/ejabberd/ejabberd.pem
# rm /etc/ejabberd/privkey.pem
Перезапускаем ejabberd. Опять-таки, если не запускается, смотрим логи. Если все о’кей, идем дальше. Следующим шагом нужно установить агент Archipel и веб-клиент. Веб-клиент — это обычное веб-приложение, для его работы поднимаем любой из удобных веб-серверов, на этом или любом другом сервере.
Агент Archipel устанавливается несколькими путями: из репозитория Python или из исходного кода стягиванием с GitHub. С Гитхаба вот таким образом:
# git clone https://github.com/ArchipelProject/Archipel.git
# cd /path/to/clone/Archipel/
# ./pull.sh
Через Python установку провести можно вот так:
# easy_install apscheduler==2.1.2 sqlalchemy numpy
# cd /path/ArchipelAgent/
# ./buildAgent -d
Или можно тупо стянуть последнюю ТЕСТИРУЕМУЮ версию архивом:
# wget http://nightlies.archipelproject.org/latest-archipel-agent.tar.gz
# tar xvf latest-archipel-agent.tar.gz -C /path/to/untar/
Для завершения установки запускаем
# archipel-initinstall
Теперь необходимо создать пользователя Jabber с правами админа гипервизора:
# archipel-tagnode --jid=admin@FQDN --password=YOURPASSWORD --create
# archipel-rolesnode --jid=admin@FQDN --password=YOURPASSWORD --create
# archipel-adminaccounts --jid=admin@FQDN --password=YOURPASSWORD --create
Здесь меняем учетные данные на свои, где
- admin — имя пользователя;
- FQDN — полное хостовое имя Jabber-сервера или домена, на который Jabber-сервер настроен;
- YOURPASSWORD — твой придуманный пароль.
Теперь можно рестартнуть Archipel и убедиться, что все запустилось без ошибок:
# service archipel restart
Проверяем, подключился ли пользователь «гипервизор» к Jabber-серверу:
# ejabberdctl connected_users
Если все прошло хорошо, то в списке подключенных пользователей увидим агент, например:
1e96182c-3231-4054-ac3d-338b1b364fe4@hyper.local/hyper.local
Изменить учетные данные агента можно в файле /etc/archipel/archipel.conf
, а также можно изменить имя администратора агента, которому разрешены все права, сменить-IP адрес, задать каталог хранения виртуальных машин и прочее:
# General configuration. You should just need to edit these values
#
[DEFAULT]
xmpp_server = hyper.local # адрес домена jabber-сервера
archipel_folder_lib = /var/lib/archipel/ # каталог archipel
archipel_general_uuid = 1e96182c-3231-4054-ac3d-338b1b364fe4 # Имя (адрес) гипервизора — пользователя Jabber-сервера
archipel_folder_data = /var/vm/ # Каталог, в котором хранятся виртуалки по умолчанию
[GLOBAL]
archipel_root_admins = admin@%(xmpp_server)s # Имя администратора Jabber-сервера
machine_ip = 192.168.254.222 # IP-адрес машины гипервизора
use_avatar = True # Использование аватаров
# Данные vcard гипервизора
[VCARD]
orgname = Archipel Corp
orgunit = Dev
userid = contact@archipelproject.org
locality = San Francisco
url = http://archipelproject.org
categories = Archipel
После успешного запуска проверяем тест XMPP-сервера службами Archipel:
# archipel-testxmppserver --jid=admin@FQDN --password=YOURPASSWORD
Здесь нужно отметить, что для работы системы успешный тест должен быть для первых четырех пунктов, для остальных некритично. Обновление агента можно проводить через
# easy_install -U archipel-agent
# /etc/init.d/archipel restart
Или из исходного кода:
# git pull
# /etc/init.d/archipel restart
Оригинальная инструкция доступна на официальном сайте проекта.
Создаем виртуалки
Если все хорошо прошло, агент запущен, веб-клиент установлен, тогда заходим по адресу веб-клиента браузером и наблюдаем страничку авторизации.
Логинимся под созданной учетной записью. И видим, что у нас ничего нет: нужно добавить пользователя гипервизора в список. Жмем на знак + в нижнем левом углу, выбираем «Добавить контакт». В поле JID вставляем JID гипервизора, в моем случае это 1e96182c-3231-4054-ac3d-338b1b364fe4@hyper.local/hyper.local
, Nichname задаем произвольно, главное, не забудь, что это гипервизор. После успешного добавления можно создать группы, чтобы удобнее расположить виртуальные узлы. После чего, кликнув по гипервизору, можно увидеть состояние сервера.

Здесь отображаются такие данные, как нагрузка на проц, свободное количество оперативной памяти, использование раздела подкачки, Uptime, данные о версиях ПО. Ниже идут графики загрузки процессора, нагрузки на сетевые интерфейсы, использование памяти, состояние накопителей и свободное место на них.
Переходим в раздел Virtual Machines. Здесь, собственно, и создаются виртуальные машины. Кликаем по знаку + и заполняем все данные. Теперь подключим к нашей ВМ образы жестких дисков и сетевой интерфейс. Выбираем виртуальную машину из списка слева (поместить ее в группу можно, перетащив мышью в группу или подгруппу). Переходим в раздел Disks, жмем «Добавить» (+) и заполняем необходимые данные.

После этого он появится в списке жестких дисков, доступных для этого виртуального узла, дальше его необходимо подключить. Переходим в раздел Definition, подраздел Virtual Medias, и добавляем. Здесь можно выбрать тип подключения, тип диска, исходные путь подключения и сам диск. Чтобы добавить ISO-образы, их предварительно необходимо сложить в каталог /var/vm/iso
. Далее сменить тип с disk на cdrom.

Следующим шагом нужно добавить сетевой интерфейс. Переходим в подраздел Virtual Nics. Жмем + для добавления, выбираем сетевой мост и имя сетевого моста, которое ты задал при настройке сетевых параметров сервера в самом начале. Если в системе всего один сетевой мост, то он сразу будет доступен и выбирается по умолчанию. Остальные параметры не меняем.

Чуть не забыл, в подразделе Basics задаем количество оперативной памяти, выделяемое для виртуальной машины, и количество ядер процессора. Также можно задать порядок загрузки, время, поведение при выключениях и перезагрузках, параметры проброса USB-устройств, тип виртуальной машины: QEMU или KVM, версию виртуальной машины, параметры подключения к устройствам ввода-вывода. Этих параметров достаточно для запуска виртуального узла. После этого у тебя статус виртуальной машины изменится на Off. Запускаем ее клавишей Run в верхнем меню. Для подключения к экрану жмем screen и можем видеть монитор виртуального узла. В одной из предыдущих статей мы настраивали PXE-загрузку, поэтому у меня на скрине то самое PXE-меню. 🙂

Также система позволяет распределять права доступа. Создаем пользователя Jabber, добавляем в список, введя его JID. Дальше выбираем виртуальный узел, к которому необходимо предоставить доступ. Переходим во вкладку Permissions.

Далее, если у тебя есть еще один сервер с виртуализацией, ты можешь установить на него Archipel-агент, на сервере Jabber создать пользователя для второго гипервизора. В параметрах /etc/archipel/archipel.conf
второго сервера ввести эти учетные данные и управлять обоими серверами с одного веб-клиента Archipel. В этом случае будет доступна миграция виртуалок между серверами.

Чатимся с виртуалками
Ну и наконец, самое вкусное, или основная особенность всей этой системы, — управление виртуальными узлами через Jabber-сообщения с любого IM-клиента. Пример на встроенном в веб-клиент мессенджере. Выбираем виртуальную машину, переходим в раздел Chat. Для списка доступных команд вводим help.

Изменить пароль текущей учетной записи прямо из веб-клиента Archipel можно в верхнем меню Archipel → XMPP Account. Также в нем доступно управление контактами и группами. Если ты планируешь использовать Archipel как многопользовательский сервер, то здесь еще есть возможность проводить Jabber-конференции прямо из веб-клиента или подключиться к конференции технической поддержки проекта.
Нельзя не отметить и создание отпечатков жестких дисков — Snapshots, особенно в тестовых виртуальных узлах при отладке того или иного приложения. Здесь это делается очень удобно и быстро. В специальном разделе Snapshots жмешь «Создать» и ждешь результат.
Аналогично можно подключаться с любого другого клиента на любом другом устройстве. Особенно актуально для виртуальных узлов в ОС Windows, если «что-то пошло не так». Также при установке Archipel на действующий сервер виртуальных машин система обнаружит их автоматически и предложит добавить в список виртуальных узлов. Из недостатков можно выделить то, что веб-клиент полностью на английском языке, но доступны исходные коды для локализации. Если кому-то это жизненно необходимо, могу помочь с этим. Сам использую версию на английском языке.
Из опыта работы с виртуальными машинами скажу, что среди массы решений, которые я пробовал (OpenNebula, Karesansui KVM, Proxmox, Xen Server, KVM голый + virt-manager, Hyper-V и еще ряд других), Archipel показался наиболее удобным, и им я и пользуюсь. Также еще установлен OpenNebula, его используем для выделения виртуальных узлов подведомственным учреждениям для своих нужд. OpenNebula удобна тем, что у нее в наборе есть готовые виртуалки — шаблоны. При создании выбираешь дистрибутив, задаешь логин-пароль, и виртуалка готова. Но это уже совсем другая история.
Подведем итоги
Мы разобрались с установкой и настройкой системы управления виртуализацией Archipel. Быстро пробежались по основным инструментам управления. Научились «разговаривать» с виртуальными узлами. Краем глаза посмотрели на миграцию между серверами Archipel (как появится второй большой сервер, сразу сделаю обзор на эту тему). Считаю систему очень удобной и весьма рекомендую.