Привезли мне сегодня весьма мощный сервер и решил я поднять там несколько виртуальных серверов. Несколько IP адресов у меня имеется, так почему добро должно пропадать или простаивать? 🙂
В общем, поставил я и настроил OpenVZ под Ubuntu 8.04 LTS, о чем и хочу сегодня рассказать.
С самого начала нужно уяснить, что защита «Хост-сервера» – это основное, так как если злоумышленник получит доступ к нему, то все гостевые сервера будут скомпрометированы. Поэтому мы туда не ставим ничего лишнего. В идеале — OpenSSH и все.
1. Разметка файловой системы.
В принципе, разметка вся стандартная, то есть та, к которой Вы привыкли. За исключением одного раздела, где будут лежать все виртуальные машины «/vz». Он, естественно должен быть самым большим, так как там будут шаблоны виртуалок, сами гостевые сервера и т.п.
2. Установка ядра системы с виртуализацией.
Первое, что нам нужно — это установить ядро с поддержкой виртуализации и вычистить ненужное. Для этого запускаем
sudo apt-get install linux-openvz vzctl
Перезагружаемся с новым ядром и сносим лишнее серверное ядро.
sudo apt-get remove –purge –auto-remove linux-image-.*server
Теперь правим параметры ядра в /etc/sysctl.conf
# On Hardware Node we generally need
# packet forwarding enabled and proxy arp disablednet.ipv4.conf.default.forwarding=1
net.ipv4.conf.default.proxy_arp = 0
net.ipv4.ip_forward=1# Enables source route verification
net.ipv4.conf.all.rp_filter = 1# Enables the magic-sysrq key
kernel.sysrq = 1# TCP Explict Congestion Notification
#net.ipv4.tcp_ecn = 0# we do not want all our interfaces to send redirects
net.ipv4.conf.default.send_redirects = 1
net.ipv4.conf.all.send_redirects = 0
Применяем параметры ядра
sudo sysctl -p
Переносим все из /var/lib/vz в /vz и создаем симлинк на раздел
sudo mv /var/lib/vz /vz
sudo rm -f /var/lib/vz
sudo ln -s /vz /var/lib/vz
3. Установка гостевой системы
Установка гостевой системы абсолютно проста и прозрачна. Скачиваем образ системы с сайта https://openvz.org/download/template/cache/ (например, ubuntu) в каталог /vz/template/cache и пишем скрипт для более быстрого развертывания сервера.
#!/bin/bash
OT=’ubuntu-8.04-i386-minimal’ # Название файла шаблона
VEID=’101′ # номер виртуальной машины
VEIP=’192.168.0.101′ # IP виртуальной машины
VEHN=’virtual101.localnet’ # имя машины
VENS=’192.168.0.1′ # DNSsudo vzctl create $VEID –ostemplate $OT
sudo vzctl set $VEID –ipadd $VEIP –save
sudo vzctl set $VEID –hostname $VEHN –save
sudo vzctl set $VEID –nameserver $VENS –save
sudo vzctl set $VEID –onboot yes –save
sudo vzctl set $VEID –numothersock 100 –save
sudo vzctl set $VEID –numtcpsock 100 –save
sudo vzctl set $VEID –numproc 150 –save
sudo vzctl set $VEID –vmguarpages 65536 –save # гарантированный объем 256Мб, в блоках по 4Кб
sudo vzctl set $VEID –privvmpages 131072 –save # максимальный объем 512Мб, в блоках по 4Кб
sudo vzctl start $VEID
sudo vzctl enter $VEID
После запуска скрипта у нас разворачивается виртуальный сервер с указанным IP и мы сразу попадаем на него.
Собственно говоря — это все. Дальше мы работает с ним как с обычным сервером. Надеюсь эта информация будет Вам полезна и Вы найдете как ее применить в условиях избытка мощностей. 🙂
Настоятельно рекомендую воспользоваться vzctl версии 3.0.23. Только с его помощью можно настроить автоматическое включение veth-интерфейсов в бридж: https://vladimir-stupin.blogspot.com/2008/11/openvz-debian.html
Кроме того, всё запустить в контейнерах не удастся. Нельзя запустить pppd, pure-ftpd без напильника, смонтировать SMB-шару: https://vladimir-stupin.blogspot.com/2008/11/openvz.html
А мне очень хотелось настроить в отдельном VE роутер, а в другом VE файловый сервер на samba и pure-ftpd. Samba-сервер работает, но воспользоваться им внутри других VE нельзя 🙁