Некоторое время назад мы научились создавать контейнеры в Linux, используя OpenVZ . Сегодня мы познакомимся с OpenVZ Web Panel. Это приложение, которое позволяет управлять OpenVZ-контейнерами на нескольких физических машинах через веб-интерфейс. Фактически, при помощи OpenVZ и OpenVZ Web Panel вы можете за час работы построить маленький AWS или Google Cloud на собственном железе.
В OpenVZ Web Panel используются ExtJS , SQLite и Ruby on Rails. Притом, как мы скоро убедимся, Ruby-гемы должны быть определенных версий. Поэтому настоятельно рекомендуется поднимать OpenVZ Web Panel прямо внутри OpenVZ контейнера. Или, как вариант, внутри какого-нибудь Docker или Vagrant . Я лично использовал Vagrant с крутящейся внутри него CentOS 6. Вы спросите, откуда такие сложности? Дело в том, что на момент написания этих строк OWP находится как бы в замороженном состоянии. Последний релиз был несколько лет назад, в апреле 2013-го года. Нет, OWP отлично работает и вот это все. Но с установкой приходится немного повозиться.
Установка в теории выглядит так. Нужно скачать скрипт ai.sh и запустить его под рутом, дальше все произойдет автоматически.
Но на практике у меня не установились байндинги к SQLite:
mkmf.rb can’t find header files for ruby at /usr/lib/ruby/ruby.h
Исправляем так:
sudo gem install sqlite3
Теперь получаем другую ошибку:
Successfully installed sqlite3-1.3.11
1 gem installed
Installing ri documentation for sqlite3-1.3.11…
ERROR: While executing gem … (NoMethodError)
undefined method `map’ for Gem::Specification:Class
Проблема решилась выполнением команды:
После этого пакет sqlite3 успешно установился и скрипт ai.sh смог завершить работу.
Но при запуске OpenVZ Web Panel я увидел:
Поправив немного /etc/init.d/owp, я отключил перенаправление ошибок в /dev/null и увидел настоящую причину ошибки:
Решение удалось найти на StackOverfow:
Теперь говорим:
Если видим ошибку:
… говорим:
Теперь OWP завелась, но при попытке добавления физических машин через веб-интерфейс я увидел:
Исправляем так:
sudo gem install net-sftp
Рестартуем OWP и вот теперь все работает!
Можно управлять пулами IP-адресов, создавать и удалять контейнеры, делать бэкапы, клонирование, устанавливать шаблоны и создавать шаблоны из контейнеров, просматривать выполняющиеся в настоящее время задачи, смотреть на используемые ресурсы, управлять пользователями, имеющими доступ к панели, и так далее. Есть еще вкладка Requests — своего рода небольшой встроенный форум и TODO-список. Можно посмотреть на количество свободных ресурсов на физических машинах. Есть возможность создавать ежедневные бэкапы контейнеров. В общем, есть весь необходимый функционал. И в отличие от интерфейса AWS ничего не тормозит!
Наиболее серьезные проблемы, которые мне удалось обнаружить:
- Бэкапы хранятся на физических машинах вместе с самими контейнерами, собирать бэкапы где-то в другом месте нельзя;
- Нельзя создать сразу 15 одинаковых контейнеров, только по одному;
- Миграции контейнеров с одной физической машины на другую не предусмотрено;
- Bridged сеть не поддерживается — контейнерам можно назначать только статические IP из пула;
Это, конечно, не комбайн на все случаи жизни. Просто маленькая, няшненькая панелька. Как совершенно бесплатное дополнение к CLI очень даже неплохо! Интересно (правда, без трололо), а есть ли что-то подобное для Docker?
<spoiler>О настоящем комбайне я расскажу в одной из следующих заметок. Следите за обновлениями!</spoiler>
Дополнение: Также вас могут заинтересовать заметки Создаем свой маленький IaaS на Parallels Virtual Automation и Мой первый опыт использования Proxmox VE .