Виртуалки на OpenVZ (и немного Vesta CP)
В моей работе приходится постоянно экспериментировать, разрабатывать и отлаживать новые сервисы. Искать баги, как в собственном коде, так и в стороннем софте на разных платформах. В связи с этим возникла необходимость иметь под рукой небольшой загончик для виртаульных машин для тестирования всего, что нужно.С системами виртаулизации я, в принципе, работал и раньше. На одном из серверов стояла VirtualBox в headless Режиме (без гуя) и там вполне успешно крутились Ubuntu и Windows. Однако, после моих экспериментов машины часто падали. Причем падали так хорошо, что приходилось переставлять операционку. А это минимум час + наладка софта и т.д. Мне конечно всё это надоело и я стал искать решения.
Платформы для виртуализации
Т.к. для моих садистских игр мне требуется только Nix-like операционки, то я рассматривал довольно широкий спектр систем виртаулизациии. Основной критерий в поиске – бесплатность решения. Есть замечательные системы типа VMWare, Parallels – но все они либо платные, либо не подходят мне (по наличию железа). Из бесплатных систем я остановил свой выбор на Xen и OpenVZ, LXC (Linux Containers). Разница между ними принципиальная. OpenVZ и LXC – это системы контейнерной виртаулизации. Т.е. одно ядро используется всеми виртальными машинами. Но в моем случае, контейнерная виртаулизация как оказалась лучше, т.к. она потребляет меньше ресурсов. Одновременно с поиском системы виртуализации я присматривался к различным веб-интерфейсам этих систем. И уж очень мне приглянулась OpenVZ Web Panel.
Установка OpenVZ + Web Panel
Итак, первой моей ошибкой было то, что я не глянул в список поддерживаемых операционных систем. А моей любимой Ubuntu Server там как раз не было. Тут надо добавить, что панель может работать в двух режимах.
- Первый режим, когда на сервере не стоит OpenVZ ядра, а панель коннектится к физическим серверам для управления ими. А ля Cluster Manager, или как там это называется в энтерпрайзе.
- Второй режим, когда на сервере, куда ставится панель есть openvz ядро, то соответственно панель может управлять этим сервером (ставить виртаульные машины и т.д.).
Я сначала поставил панель и очень удивился, что я не могу создать виртальную машину. Потом понял, что надо присоединить физический сервер и вот тут то до меня дошло, что ядрышко у меня не то 🙂
Вообще установка самой OpenVZ на Debian-системы довольно запутана, скажу лишь, что надо скачивать rpm-пакекты и конвертировать их в deb, при этом поплясывая с бубном. Мне это дело поднадоело и я снёс нафиг убунту и накатил Debian 6. (Да, под 7м панель тоже не работает).
Лучше всего сделать отдельный LVM раздел, который примонтировать к /vz в корневой системе. Итак имеем чистый Debian 6 и выполняем следующие шаги для установки. Сначала ставим сам OpenVZ.
Заходим под root.
1 2 |
su # |
Обновляем пакеты.
1 2 |
apt-get update apt-get upgrade |
Для правильной работы openvz изменяем настройки ядра.
Редактируем файл sysctl.conf. Добавляем или изменяем нужные строки.
1 |
vi /etc/sysctl.conf |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
# On Hardware Node we generally need # packet forwarding enabled and proxy arp disabled net.ipv4.ip_forward = 1 net.ipv6.conf.default.forwarding = 1 net.ipv6.conf.all.forwarding = 1 net.ipv4.conf.default.proxy_arp = 0 # Enables source route verification net.ipv4.conf.all.rp_filter = 1 # Enables the magic-sysrq key kernel.sysrq = 1 # We do not want all our interfaces to send redirects net.ipv4.conf.default.send_redirects = 1 net.ipv4.conf.all.send_redirects = 0 |
Применяем изменения:
1 |
sysctl -p |
Если у Вас работает SeLinux, его необходимо выключить:
1 |
vi /etc/sysconfig/selinux |
1 |
SELINUX=disabled |
Следующая команда установит новое ядро системы с поддержкой openvz, а так же автоматически установит vzctl и vzquota (необходимые утилиты для управления гостевыми системами). После удачной установки перезагружаем систему.
1 2 |
apt-get install linux-image-openvz-* reboot |
В меню GRUB появится дополнительные пункты с новым ядром. Его и необходимо запускать. Так как оно стоит первым по списку, запуск произойдет автоматически.
Для проверки, что всё ок смотрим вывод команды uname.
1 2 |
root@server:~# uname -a Linux vaio 2.6.32-5-openvz-amd64 #1 SMP Fri May 10 09:43:55 UTC 2013 x86_64 GNU/Linux |
Ну вот, теперь можно переходить к установки панели.
1 2 |
cd /var/tmp/ wget -O - http://ovz-web-panel.googlecode.com/svn/installer/ai.sh | sh |
После окончания работы установщика, ваша панель будет доступна на 3000 порту сервера:
1 |
http://адрес_сервера:3000 |
Данные для входа по умолчанию:
1 2 |
login: admin password: admin |
Настройки панели лежат в /etc/vz/vz.conf Там же вы можете выбрать пути, где будут храниться сами контейнеры виртуальных машин (параметры VE_ROOT, VE_PRIVATE) и образы виртуалок (параметр TEMPLATE). Рекомендую вам сменить путь с /var/lib/vz на yнаш LVM том /vz просто установив симлинк туда.
Далее заходите в панель, видите там реальный сервер localhost, и в меню выбираете OS Templates. ПОсле выбора образов они будут поставлены в очередь на скачку. Через некоторео время можете создавать виртуалки с новыми образами. Статус закачив можно смотреть через пункт меню Tasks.
Установка Vesta Hosting Panel
Ну что-ж, пойдём автоматизировать дальше. Создаём вирталку из образа centos 6 x86_64 с
Ram 1024Mb (а то будет глючить, ведь Vesta кушает на холостом ходу 400Мб) и HDD 6100Mb. Вы, естественно, можете сами подтюнить эти параметры. А то и вовсе вырубить гуй у Vesta и пользоваться только консольными утилитами.
Готовим систему. Ставим mc для удобства и удаляем пакеты, которые веста и так поставит.
1 2 |
yum install mc yum remove httpd bind |
Устанавливаем мягкое ограничение на количество ресурсов.
1 |
ulimit -s unlimited |
Теперь скачиваем установщик и ставим панельку.
1 2 3 4 |
# Download installation script curl -O http://vestacp.com/pub/vst-install.sh # Run it bash vst-install.sh --force |
Нам покажут, чего будем ставить, соглашаемся и вперед. Перезапускаем панель (и Mysql В т.ч.), а то сразу он не работает.
1 2 |
/etc/init.d/vesta stop /etc/init.d/vesta start |
Ну вот и всё. Открываем панельку в веб-браузере.
1 |
https://server:8083/ |
Наслаждаемся видом. Если админка не будет доступна, (Bad Gateway Error) попробуйте подождать чуть и ещё раз перезагрузить vesta (start/stop).
Теперь мы можем плодить виртуалки, vhost-ы апача и делать там чего хотим, потом легким движениям удалять машины и создавать новые /* сказал он потирая руки */.
Андрей, а ты в сторону Vagrant не смотрел? Там можно сделать бокс из Убунты и поднимать/ронять снепшоты вагрантовские сколько влезет)
Кстати да, Антох. Надо бы прогуглить эту тему. Спасибо за наводку) Слышал краем уха, но не приглядывался.
А еще в сторону Proxmox VE стоит посмотреть
Ну прочто незаменимая вещь для подобных извратов 🙂
Пробовал, Руслан, но он при загрузке мне матерился на модули ядра, и грузиться не стал (
Но это были не фатальные баги. На самом деле не вставал он потому, что пытался найти свой CDROM, а я его iso-шник на флешку записал. Так что с флешки он не грузится. Сейчас попробую, как с реального CD.
Там теперь есть репозиторий ядер для Дебиан, лежит на http://download.openvz.org/debian, конвертировать уже ничего не надо!
Офигеть! Реально есть для Debian 7 (http://download.openvz.org/debian/dists/wheezy/main/binary-amd64/kernel/) Ну спасибо огромное, не знал!