Создаем свой маленький IaaS на Parallels Virtual Automation

18 ноября 2015

По моим наблюдениям, в России компания Parallels больше всего известна, как разработчик популярной виртуальной машины для MacOS. Особо продвинутые также могли слышать, что компания имеет какое-то отношение к OpenVZ и CRIU. Но мало кто знает о других продуктах компании. Сегодня мы познакомимся с некоторыми такими продуктами, а именно Parallels Virtual Automation и Linux дистрибутивом Parallels Cloud Server. С их помощью мы за считанные минуты поднимем IaaS на собственном железе, который будет мало чем уступать Amazon Web Services или, скажем, Google Cloud, а в чем-то будет и превосходить.

Примечание: На официальном сайте написано что-то не очень понятное на тему, что Parallels Cloud Server переименован в Virtuozzo. Тем не менее, очень много где используется старое название. В рамках сей статьи я буду называть данный Linux-дистрибутив Parallels Cloud Server или PCS. Аналогично для Parallels Virtual Automation будет использоваться сокращение PVA. Кроме того, вроде как есть несколько компаний, принадлежащих одному холдингу — Parallels и Odin. Я не сильно разбираюсь в таких тонкостях, поэтому далее буду говорить Parallels, подразумевая обе компании.

Теоретическая часть

Идея примерно такая. У вас есть много физических машин. Вы разворачиваете на них PCS. При этом инсталятор также предложит вам установить PVA Agent. Можно согласиться, можно потом поставить своими руками. Затем на отдельной машине разворачивается PVA Management Node (далее — MN). Это приложение с веб-интерфейсом для управления виртуальными окружениями. Устанавливать MN не обязательно на PCS. Подойдет, например, обычный CentOS. Кроме того, есть сборка MN для Windows. Вы добавляете агентов в MN, после чего можете создавать на физических машинах Linux-контейнеры и виртуальные машины. Контейнеры имеют небольшие накладные расходы на виртуализацию, но в них можно запускать только различные дистрибутивы Linux. В виртуальной машине может работать любая ОС, но и накладные расходы в этом случае выше.

Где все это хозяйство используется можно посмотреть здесь внизу страницы, а также здесь. Например, оказывается, что PCS и PVA используются в GoDaddy.

PCS и PVA распространяются за деньги. Согласно этой странице, стоимость обсуждается индивидуально с каждым заказчиком. Вероятно, можно как-то договориться, чтоб и не платить, не знаю. В рамках сей заметки я использовал trial-версии всех упомянутых продуктов, которые можно свободно скачать по приведенным далее ссылкам.

Установка Parallels Cloud Server

Parallels Cloud Server можно получить по этой ссылке. Жмем «Скачать», заполняем форму, получаем линк на .iso образ DVD-диска и (!) триал ключи.

Перед установкой зайдите в настройки BIOS и проверьте, что у вас включена аппаратная виртуализация. У меня использовался процессор Intel Core i7, соответственно в настройках я проверял Intel-VT. На процессорах AMD нужно проверять AMD-V. Не уверен, правда, поддерживается ли AMD-V в PCS. Если физической машины под рукой нет, то подойдет и VirtualBox, но тогда через PVA вы сможете создавать только контейнеры. Да, а еще на диске должно быть свободно по крайней мере 20 Гб места.

Во время установки особое внимание следует уделить разбиению диска. По аналогии с OpenVZ, каталог /vz должен указывать туда, где достаточно много свободного места.

В остальном установка PCS мало чем примечательна. Единственный тонкий момент — я лично отказался от установки PVA Agent, так как возникли подозрения, что в .iso образе диска используется далеко не самая свежая его версия.

Важно! Не запускайте Vagrant на PCS. Технологии виртуализации начнут конфликтовать и одна из них не сможет запускать виртуалки до следующего ребута.

Установка PVA Agent

Переходим по этой ссылке, находим раздел VA Agent, в нем находим линк на инструкцию по установке, делаем жмяк, в конце находим раздел про установку на машины с ограниченным доступом к интернету. Там вы найдете линк на архив с именем вроде:

pva_agent-linux-x86_64-6.0-3036.tar.gz

На машине с PCS говорим:

wget http://download.pa.parallels.com/pva/тот-самый-линк
tar -xvzf название-архива.tar.gz
cd pva_agent/
sudo ./pva-setup

Next, Next, Next, готово! Проверяем состояние агента:

sudo service pvaagentd status
sudo service pvapp status

Агент использует в основном следующие каталоги:

/opt/pva/
/var/log/pva/

Там можно найти все логи, конфиги, и так далее.

Агент можно спокойно переустанавливаеть, виртуалки и контейнеры от этого не пострадают. Но при этом удаляются закэшированные шаблоны контейнеров, их потом придется заново долго качать.

Установка и настройка PVA MN

Как уже отмечалось, MN можно поставить на обычную CentOS. Я лично использовал CentOS 6. Поддерживаются ли другие дистрибутивы Linux не проверял. При сильном желании MN можно даже поставить в контейнер, работающий под PCS.

По аналогии с тем, как делали это для агента, идем сюда, находим раздел Management Node, открываем инструкцию по установке для Linux, находим линк на архив с именем вроде:

pva_mn-linux-x86_64-6.0-3036.tar.gz

Качаем, ставим точно так же через:

sudo ./pva-setup

Если все было сделано правильно, на порту 4648 будит поднят веб-интерфейс с SSL шифрованием. По умолчанию используется самоподписанный сертификат, так что вам может захотеться перенастроить Nginx, а также ограничить доступ к MN — iptables, OpenVPN, все как обычно.

Заходим под пользователем root и его паролем в системе. Через Infrastructure → Hardware Nodes → New Hardware Node добавляем PVA Agent. Теперь через веб-интерфейс можно создать первый контейнер или виртуалку. Интерфейс предельно прост и понятен, поэтому не буду останавливаться на нем подробно. Трудность может возникнуть разве что в настройке сети. Если у вас используются статические IP-адреса, вводите их явно, иначе используйте bridged сеть, плюс, возможно, вам захочется вырубить DHCPv6.

Как примерно выглядит админка (кликабельно, 1920x1080, 290 Кб):

Parallels Virtual Automation

PVA позволяет управлять пулами IP-адресов, делать бэкапы по расписанию, переносить контейнеры с одной физической машины на другую, создавать шаблоны виртуальных окружений и заливать их на Samba-сервер, смотреть в реальном времени графики об использовании CPU, памяти и сети, получать доступ к экрану виртуальной машины через апплеты Java, и прочее, прочее. OpenVZ Web Panel по сравнению с PVA выглядит школьной поделкой.

Примечание: В Linux для поддержки Java-апплетов проще всего поставить пакет icedtea-plugin и воспользоваться Firefox. Во время установки ОС на виртуалку апплет может показывать два курсора мыши, что немного неприятно. Однако это проходит после установки дополнений для гостевой ОС.

Заключение

За кадром осталось еще много интересного. Например, Windows-контейнеры, Parallels Plesk Panel, DaaS (Desktop as a Service) решения от Parallels, и многое другое. Эти вопросы я оставляю вам для самостоятельного изучения. Мораль — мир не ограничен одним только Docker тем, что активно пиарится в новостях, обсуждается в подкастах и о чем пишутся книжки издательств O’Reilly и Packt. Читайте журналы, общайтесь на конференциях, спрашивайте на форумах в конце концов.

Вполне вероятно, что задача, которую вы решаете прямо сейчас, уже давно кем-то решена, и решение это предоставляется всем желающим либо бесплатно, либо за разумные деньги. Но вы даже не подозреваете о существовании этого решения, и костылите свое, тратя понапрасну кучу времени и сил.

Дополнение: Мой первый опыт использования Proxmox VE

Метки: , .


Вы можете прислать свой комментарий мне на почту, или воспользоваться комментариями в Telegram-группе.