Archipel – это маcштабируемое решение для управления виртуальными машинами и гипервизорами с помощью графического интерфейса.
Archipel позволяет удобно управлять как несколькими виртуальными машинами на одном сервере, так и сотнями виртуалок, размещенных на десятках серверов в разных дата-цетрах.
Archipel использует протокол XMPP в качестве системы обмена между своими подсистемами. Более подробную информацию можно получить на сайте проекта archipelproject.org
Archipel использует XMPP сервер для коммуникации. Нам всего нужен один XMPP сервер, например eJabbered, чтобы начать работу.
Установка eJabberd (XMPP сервера)
Перво-наперво необходимо добавить репозиторий EPEL
Затем установим сам eJabberd
В Fedora 21
yum install ejabberd |
В CentOS
Лучше собрать с исходных файлов или скачать установочный файл
Рекомендуемая версия eJabberd 2.1.6 - 2.1.11, начиная с версии 2.1.13 существует Bug #825
Archipel требуются следующие модули для стабильной работы:
mod_admin_extra
(обязательный)ejabberd_xmlrpc
(опционально)
Установка среды разработки Erlang
Если модули не установились изначально, то соберем их сами. Для этого нам потребуется среда разработки Erlang.
yum install erlang-dev erlang-xmerl erlang-xmlrpc erlang-tools |
Выбираем источник
Получим последние данные с репозитория
(С 2013 года SVN репозиторий переехал на Git, поэтому используем его)
git clone git://github.com/processone/ejabberd-contrib.git |
Собираем модуль
./build.sh |
Копируем сгенерированные .beam
файлы с ebin
директории в директорию с .beam
файлами eJabbered
Конфигурация eJabberd
Конфигурация по умолчанию рассчитана на базовый chat-сервер (это великолепный chat-сервер), но нам не подходит.
Поэтому смело удаляем старый конфигурационный файл и создаем новый, в котором не забываем изменить FQDN.
Archipel требуется полноценный XMPP сервер, поэтому внесем некоторые поправки
Версия Erlang
%%% |
Версия YAML
--- |
Проверить синтаксис конфигурационного файла можно тут
Проверить кавычки для путей после проверки синтаксиса.
Если у нас нет DNS сервера, то добавим строчку в /etc/hosts
X.X.X.X your.fqdn.com |
Генерируем самоподписанный сертификат
Не забудьте указать свой FQDN, при вопросе “Common Name”
openssl req -new -x509 -newkey rsa:1024 -days 3650 -keyout /opt/ejabberd/privkey.pem -out /opt/ejabberd/ejabberd.pem |
Запускаем сервисы
sudo ejabberdctl start |
При успешном запуске должно получиться следующее:
The node 'cloudmanager@FQDN' is started with status: started |
Регистрируем аккаунт администратора
ejabberdctl register admin FQDN yourpassword |
Не создавайте других аккаунтов для виртуальной машины или гипервизора, они будут созданы автоматически при добавлении.
Установка Archipel Client
Ставим любой веб-сервер, например NGINX
Для работы клиента не требуется баз данных, PHP или Java.
Просто скачайте и распакуйте архив в корневую директорию сайта
wget -P http://nightlies.archipelproject.org/latest-archipel-client.tar.gz |
Настройка гипервизора
Для начала установим все необходимые пакеты:
- KVM module
- qemu 0.12.5 +
- libvirt 0.8.7+
- python 2.5, 2.6 или 2.7
- qemu-img
- python setuptools
- python-imaging
- python-numeric (numpy)
- libvirt python
- subversion
- gcc
- python-devel
Установка Archipel Central Agent
Archipel central agent это опциональный модуль, который включает продвинутые настройки Archipel необходимые для полноценного управления.
easy_install sqlalchemy |
cd clone_of_archipel_repo/ArchipelAgent |
При сборке может возникнуть ошибка
Traceback (most recent call last): |
Исправляем её путем установки недостающих пакетов:
easy_install argparse |
Создаем pubsub ноду для центрального агента.
archipel-centralagentnode --jid=admin@FQDN --password=YOURPASSWORD --create |
Завершаем установку
archipel-central-agent-initinstall -x your_ejabberd_server_FQDN |
Установка Archipel Agent на гипервизор
Скачиваем Nightlies версию и устанавливаем:
# wget http://nightlies.archipelproject.org/latest-archipel-agent.tar.gz |
# easy_install apscheduler sqlalchemy numpy |
Для проверки, что вы все установили - запустите повторно
easy_install apscheduler sqlalchemy numpy python-magic |
Завершаем установку
archipel-initinstall |
По умолчанию из репозиторя будет установлен APScheduler версии 3.0.Х, которая для нас не подходит, поэтому удалим данный пакет и установим необходимый.
# pip uninstall APScheduler |
Если команда pip uninstall ...
недоступна, то установите её.
# wget https://bootstrap.pypa.io/get-pip.py |
Конфигурация агента
Конфигурационный файл расположен в /etc/archipel/archipel.conf
xmpp_server
- используем hostname (НЕ использовать IP-адрес);xmpp_pubsub_server
- обязательно оставить префикс pubsub
. Он должен быть доступен;archipel_root_admins
- если у нас имеются еще админы, то указать их JID разделяя запятой;machine_ip
- по умолчанию данный параметр установлен в auto
, но в большинстве случаев здесь надо указать IP-адрес гипервизора или его хостнейм;hypervisor_xmpp_jid
- JID гипервизора. Уникальный для каждой платформы.qemu_img_bin_path
- путь до бинарника qemu-img
;use_xmlrpc_api
- установить в значение True
для возможности использования XMLRPC API (только если установлен ejabberd-xmlrpc
);xmlrpc_host
, xmlrpc_password
, xmlrpc_user
- данные параметры заполняются только при установленном значении True
в use_xmlrpc_api
# |
Перезагружаемся.
Создаем pubsub ноды
# archipel-tagnode --jid=admin@FQDN --password=YOURPASSWORD --create |
Запускаем агент
runarchipel |
Проверяем лог /var/log/archipel/archipel.log
и статус подключения на XMPP сервере
ejabberdctl connected_users |
[email protected]/cloudserver1.mydomain.com |
Тест
После успешной установки необходимо запустить archipel-testxmppserver
для проверки.
archipel-testxmppserver --jid=admin@FQDN --password=YOURPASSWORD |
* Archipel XMPP Server Test * |
Если мы не используем xmlrpc
, то на последних двух шагах получим ошибку. Не беспокойтесь, это не критично, мы всегда можем установить эти модули при необходимости.
Не забываем запустить Libvirt
Подключаемся к клиенту
Добавляем гипервизор
Подключаемся к клиенту и добавляем нового пользователя, в качестве имени используем hypervisor_xmpp_jid гипервизора. После добавления он появится в списке.