Статья опубликована в приложении к журналу
Сегодня доступно несколько продуктов виртуализации выпускаемых под свободной лицензией, единственный минус — отсутствие удобного интерфейса управления. Эта задача отдана на откуп сторонних разработчиков. Веб-консоль Karesansui одно из таких решений.
Из чего выбирать?
Различные решения виртуализации — KVM (Kernel-based Virtual Machine), OpenVZ, Xen, QEMU известны уже достаточно давно и пользуются устойчивым спросом, в том числе и у хостинг провайдеров, предоставляющих соответствующие услуги. Одно из неудобств для конечного пользователя это отсутствие удобного интерфейса управления. Все настройки производятся в консоли и при одновременном запуске нескольких десятком виртуальных машин справиться с таким парком становится сложнее. Поиск показал, что готовых интерфейсов разработано не так уже и много. Выбирать приходится из четырех решений, которые не являются универсальными и подходят для конкретных систем виртуализации.
К сожалению, среди проектов нет ни одного имеющего локализованный интерфейс, но учитывая, что используются общеупотребительные термины, большинство параметров понятно для человека, владеющего техническим английским. Администратор, настраивающий виртуальную систему при помощи команд в консоли, быстро найдет все необходимое.
Самый простой в управлении веб-интерфейс WebVZ (http://webvz.sourceforge.net/) ориентирован на управление только OpenVZ, написан на Ruby on Rails, имеет встроенный веб-сервер (Webrick), для хранения данных используется БД SQLite.
С его помощью можно достаточно просто управлять работой OpenVZ на одном компьютере, шаблонами, файлами конфигурации, учетными записями, создавать контейнеры и так далее. Кроме простоты у WebVZ есть еще один плюс, его можно поставить на любую Unix систему, для которой есть Ruby on Rails, в частности нет ограничений по используемому дистрибутиву Linux, как у других проектов, о которых ниже. Лицензия GNU GPL.
Веб-панель управления HyperVM популярная панель управления настройками серверов как физических, так и виртуальных. В настоящее время поддерживаются только две технологии виртуализации — OpenVZ и Xen. Кроме возможностей по настройками работы виртуальных машин, шаблонов, учетными записями, панель предоставляет функции по управлению ОС – SSH, просмотр и остановка сервисов и процессов и многое другое.
Установка достаточно проста, разработчики предлагают специальный скрипт, который сделает все автоматически. Но есть один минус, поддерживаются только дистрибутивы, базирующиеся на RHEL (Red Hat Enterprise Linux), в частности рекомендуется бесплатный CentOS. Изначально лицензия была закрытой, но в середине 2009 года была изменена на AGPL-3.0, поводом послужил взлом хостинг-провайдера Vaserv, который использовал HyperVM.
Еще один продукт Symbolic более широкого назначения, предназначен для централизованного управления IT инфраструктурой построенной на ОС Linux, начиная с этапа развертывания ОС. В составе также имеется модуль управления виртуальными машинами Xen, KVM, QEMU и VMware, построенный поверх библиотеки управления виртуализацией libvirt. В будущем планируется добавить поддержку остальных типов виртуализации поддерживаемых libvirt. Продукт на столько многофункционален и является единственным в своем роде, что заслуживает отдельного обзора. Написан Symbolic на Java, ориентирован на установку в RHEL совместимых дистрибутивах.
И, наконец, японский проект Karesansui (
Написана Karesansui на языке Python, в качестве СУБД по умолчанию используется SQLite, которая подходит только управления одноузловой системы. Если планируется развернуть Karesansui на нескольких физических серверах, чтобы управлять ими с одного интерфейса, следует выбрать MySQL или PostgreSQL.
Кроме того, в продукт интегрированы другие решения — webpy, flup, lighttpd, psycopg2, tightvnc-java. Последний используется для организации доступа к экранам виртуальных машин, в итоге разработчикам удалось в браузере реализовать виртуальное окружение позволяющее полноценно управлять системами.
В списке официально поддерживаемых ОС для базовой и гостевой системы — RHEL 5.4 и его свободный клон CentOS 5.х (i386 или x86_64). Актуальной на момент написания статьи была версия Karesansui 1.1, с которой и будем знакомиться.
Установка Karesansui
Тестовую установку будем проводить на CentOS 5.4. В процессе инсталляции ОС на этапе установки приложений следует выбрать «Virtualization» и затем отметить «KVM«. Рекомендуемым является размещение системы на LVM (Logical Volume Manager) в будущем это упростит добавление новых дисков. Впрочем, в CentOS LVM предлагается по умолчанию, поэтому данный шаг не потребует дополнительных усилий. CentOS распространяется в виде 1 DVD или 7 CD. Во время установки системы в CD варианте даже при выборе минимальной установки “Base”, все равно понадобится пять CD дисков. Почему нельзя было уместить все необходимое для базовой установки только на один CD? Поэтому рекомендую использовать DVD вариант. И главное. Если нет необходимости в русской локали, систему лучше установить с английской, это избавит от некоторых проблем при использовании Karesansui, о которых написано во врезке.
Проверяем активен ли SELinux
# dmesg | grep -i SELinux
SELinux: Initializing.
SELinux: Starting in permissive mode
Отключаем командой.
# echo 0 > /selinux/enforce
Чтобы SELinux не активировался при загрузке системы следует указать параметр «selinux=0» в настройках загрузчика, либо установив параметр «SELINUX=disabled» в файле /etc/sysconfig/selinux.
При первом запуске инсталлятора Karesansui появилось такое сообщение:
ERROR: file /usr/bin/qemu-img from install of qemu conflicts with file from package kvm-qemu-img
Please remove 'kvm-qemu-img' package, then try again.
Поэтому заранее удалим конфликтный пакет:
# yum remove kvm-qemu-img
Устанавливаем все необходимое для удовлетворения зависимостей:
# yum install gnutls-utils PyXML cyrus-sasl-md5 iscsi-initiator-utils qemu
Затем скачиваем по ссылке на SourceForge [5] пакет с исходными текстами, распаковываем и запускаем установочный скрипт:
# tar xzvf karesansui-1.1.0-install-pack.tar.gz
# cd Karesansui
# ./karesansui-install
Появляется псевдографического меню программы установки. Шагов несколько они доcтfточно просты и понятны:
- Administrator setting – установка пароля администратора, его почтовый адрес, имя узла и язык (английский или японский);
- TLS certificates setting – ввод данных необходимых для генерирования SSL сертификата (страна, адрес), по окончании не забываем установить флажок “Initialize SSL certificates settings?”;
- Database setting – подключение к базам данных Karesansui и pysilhouette (демон управления заданиями для Python позволяющими придать веб-приложению интерактивность [6]), используя подсказку, прописываем правильные настройки. Для SQLite используем, например “sqlite:////var/opt/karesansui/karesansui.db” и “ sqlite:////var/opt/ pysilhouette/pysilhouette.db”.
Все. После нажатия на ОК начнется установка RPM пакетов имеющихся в архиве, создание SSL сертификатов. Также будут созданы две системные группы необходимые для безопасной работы Karesansui.
# cat /etc/group | grep kss
wwwhde:x:200:kss
kss:x:250:wwwhde
По окончании создается журнал /root/karesansui-install. Для проверки правильности установки запустить скрипт karesansui-checkenv, который находится в архиве.
# ./karesansui-checkenv
Будет проведено несколько проверок, все должны закончится со статусом ОК. В конце работы скрипта выводятся ссылки для регистрации в консоли.
Так как были изменены сетевые настройки, следует перезапустить сеть:
# /etc/init.d/network restart
Настройки Karesansui находятся в конфигурационном файле /etc/opt/karesansui/application.conf. Параметры внутри понятны, и настраиваются при помощи веб-консоли. В большинстве случаев напрямую его редактировать нет необходимости. Вот только некоторые из них:
# размещение журнала работы Karesansui
application.log.config=/etc/opt/karesansui/log.conf
# префикс для регистрации в веб-консоли
application.url.prefix=/karesansui/v1
# локаль по умолчанию
application.default.locale= en_US # ja_JP или en_US
# каталог для временных файлов, нужно предусмотреть, чтобы на соответствующем разделе было достаточно места
application.tmp.dir=/tmp
# настройки почтового сервера, единственный параметр который не настраивается из веб-консоли
application.mail.email=
application.mail.port=
application.mail.server=
# подключение к базе данных
database.bind=sqlite:////var/opt/karesansui/karesansui.db
# уникальный для каждого сервера ключ
application.uniqkey=e9bdae67-6b35-ba56-9657-0dfa39a2a859
Развертывание дополнительных узлов, аналогично одноузловой схеме, только на шаге Database setting указываем базу данных (MySQL или PostgreSQL), которая использовалась при создании первого узла. По окончании установки новый узел необходимо добавить новый узел на вкладке Summary. На этом этапе следует указать правильный application.uniqkey, который служит для аутентификации узла. Процесс подробно расписан в документе “How can I set up multiple hosts?” (
Интерфейс Karesansui
Ссылку для регистрации можно получить в выводе команды “karesansui-checkenv”. Набираем в браузере: https://example.com/karesansui/v1/ или http:// example.com/karesansui/v1/. В качестве учетной записи используем пароль и почтовый адрес, указанный при установке (он тоже будет в выводе karesansui-checkenv). Например, admin@example.com.
Интерфейс веб-консоли достаточно прост, все распределено по подпунктам, поэтому не перегружен лишними настройками, все, что нужно находишь достаточно быстро и в том месте, где ожидаешь. Некоторые действия (например, создание VM) требуют времени для выполнения, и может создаться впечатление, что машина зависла и ничего не происходит. Но разработчики предусмотрели такую ситуацию. Ход процесс отображается при помощи индикатора располагающегося внизу страницы, кроме этого в правом верхнем углу размещены индикаторы Traffic и Run, показывающие активность.
Нажав на знак вопроса, который присутствует возле большинства параметров можно получить подсказку по текущей настройке.
Условно настройки можно разделить на три группы: установки самого Karesansui, настройки физических и виртуальных машин. После регистрации будут доступны настройки Karesansui — пять вкладок названия, которых говорят сами за себя – Summary, Settings, User, Job и Tag. В частности в Settings задаются — Unique Key (его можно изменить), порт для подключения к интерфейсу, настройки прокси, использование SSL (по умолчанию включено) и установить политику сетевого доступа (Access Policy). По умолчанию доступ к консоли разрешен со всех адресов (Permit all), используя переключатели можно задать доступ с подсети (Permit same network) или перечислить IP-адреса (Permit specified IP address). Вкладка User позволяет создать новую учетную запись. Для этого необходимо указать имя, электронный адрес и пароль. В Karesansui все учетные записи равнозначны, здесь нет разделения на подгруппы с правами администратора (Administartion) или клиента (Client), как это, например, реализовано в WebVZ. Это несколько сужает сферу применения Karesansui. В Job выводятся сообщения по работе Karesansui, с возможностью поиска события по нескольким критериям. Тэги позволяют группировать системы по определенному признаку.
Чтобы перейти к настройкам виртуальных машин следует выбрать систему во вкладке Summary, откроется также пяти вкладок:
— Guests – создание виртуальных систем;
— Network – настройка сетевых интерфейсов;
— Job – вывод и поиск связанных событий;
— Firewall – настройка правил пакетного фильтра;
— Packages – управление пакетами.
Чтобы создать гостевую систему, выбираем “Create” во вкладке “Guests” и приступаем к заполнению полей в окне “Create guest”. Вводим в “Guest Name” имя системы которое будет отображаться в списке и фигурировать в журнале, выбираем в списке “Hypervisor” технологию виртуализации (Xen или KVM), в “Domain Name” указываем сетевое имя (hostname) системы, при помощи “Guest Icon” указываем картинку, которая будет соответствовать виртуальной ОС, устанавливаем размер ОЗУ и жесткого диска (Memory Size и Disk Size). И, наконец, подходим к пункту Boot Image, в котором необходимо указать путь к ISO образу или к файлам ядра и initrd размещенным на HTTP или FTP сервере. Настроить локальный FTP очень просто:
# yum -y install vsftpd
#/etc/init.d/vsftpd restart
Вставляем DVD в привод и монтируем в нужный каталог:
# mount /dev/cdrom /var/ftp/pub
Выбираем из списка раскладку клавиатуры для VNC (VNC Keymap) и порт VNC (VNC Port Number, по-умолчанию 5900),тип сети (Interface Type, физический или виртуальный интерфейс). Мастер предлагает МАС-адрес, который можно изменить. В поле Extra Kernel Options дописываются специфические параметры ядра. И, наконец, в Notebook вносим описание, включая тэг в специальном поле. По окончании настроек нажимаем кнопку Create, вверху окна должно появиться сообщение о результате. После этого параметры виртуальной машины становятся недоступными для редактирования (кроме описания и тэгов).
Новая система появится в списке Guest, в дереве Domain Tree гостевая ОС будет “привязана” к базовой системе.
При двойном щелчке по ярлыку гостевой ОС, получаем доступ к настройке виртуальной машины. Здесь опять пять вкладок: Summary (информация, выключение, остановка, перезагрузка, удаление ОС, активация автостарта), Snapshot (создание снимков), Device (просмотр и редактирование списка устройств VM), Job и Console. В Console показывается окно гостевой ОС, для его просмотра в браузере должен быть установлен плагин для поддержки Java.
***
Специализированные консоли достаточно просты в установке, но существенно упрощают управление парком виртуальных машинам размещенных на нескольких серверах. Учитывая, что выбирать то особенно не с чего, можно быстро найти приемлемое решение подходящее для конкретной ситуации.
//
Почему не рассмотрен|упомянут Proxmox?
//
До него еще руки не дошли, поставлю — упомяну 🙂
//
Proxmox мы рассмотрели: http://www.ossportal.ru/technologies/kvm/blogs/97 тоже не все гладко
Автору: Karesansui — очень хороший проект, пытаемся портировать его под Fedora, если интересно — https://github.com/landgraf/karesansui и хотя там не все так гладко — однако она уже запускается и работает. Если есть желание помочь (пописать, потестировать) — Welcome 🙂
//
2landgraf Гут.
Permalink
//
Это сервиc будет получше http://www.webvirtmgr.net. Требует только установленный libvirt.