Установка OpenVZ на CentOS
Используемые термины: OpenVZ, CentOS.
Подготовка сервера
Настройка системы
Установка OpenVZ
Создание контейнера
Часто используемые команды
Подготовка сервера
Заходим в систему под суперпользователем:
$ sudo su
Обновляем список пакетов:
yum update
Устанавливаем ntp для возможности синхронизировать время и wget для скачивания файлов:
yum install ntp wget
Устанавливаем часовой пояс (у меня московское время) и синхронизируем его с сервером времени:
cp /usr/share/zoneinfo/Europe/Moscow /etc/localtime; ntpdate ru.pool.ntp.org
Создаем задание в cron для автоматической синхронизации времени каждый день в 00:00:
mkdir -p /var/cron/tabs && echo '0 0 * * * /usr/sbin/ntpdate ru.pool.ntp.org' >> /var/cron/tabs/crontab && crontab /var/cron/tabs/crontab && crontab -l
Настройка системы для корректной работы OpenVZ
Редактируем системный файл sysctl для запуска CentOS с оптимальными для OpenVZ параметрами:
nano /etc/sysctl.conf
net.ipv4.ip_forward = 1
net.ipv6.conf.default.forwarding = 1
net.ipv6.conf.all.forwarding = 1
net.ipv4.conf.default.proxy_arp = 0
net.ipv4.conf.all.rp_filter = 1
kernel.sysrq = 1
net.ipv4.conf.default.send_redirects = 1
net.ipv4.conf.all.send_redirects = 0
* Полужирным отмечены участки, которые нужно отредактировать. Если вся строка полужирная, ее нужно вставить целиком.
Отключаем SELINUX:
echo "SELINUX=disabled" > /etc/sysconfig/selinux
Чтобы в виртуальной машине работала сеть, чистим цепочку FORWARD в iptables и сохраняем настройки:
iptables -F FORWARD && service iptables save
Установка OpenVZ
Так как в стандартных репозиториях нужных пакетов нет, подключим дополнительный. Для этого вводим две следующие команды:
wget -P /etc/yum.repos.d/ http://ftp.openvz.org/openvz.repo
rpm --import http://ftp.openvz.org/RPM-GPG-Key-OpenVZ
Устанавливаем OpenVZ:
yum install vzkernel
Также установим утилиты для управления нашей системой виртуализации:
yum install vzctl vzquota ploop
Создание виртуальной машины (контейнера)
Создаем контейнер с номером 128:
vzctl create 128 --config basic
Настраиваем сеть на автовключение при запуске:
vzctl set 128 --onboot yes --save
Задаем имя машины:
vzctl set 128 --hostname vps128.dmosk.local --save
Назначаем IP-адрес 192.168.166.156 создаваемому серверу:
vzctl set 128 --ipdel all --ipadd 192.168.166.156 --save
Задаем сервер имен (DNS) для возможности контейнера выходить в интернет и взаимодействовать с корпоративной сетью:
vzctl set 128 --nameserver 192.168.164.1 --save
Ставим пароль для учетной записи root в виртуальной машине:
vzctl set 128 --userpasswd root:password --save
Ограничиваем использование процессора на 15 процентов:
vzctl set 128 --cpulimit 15 --save
Задаем дисковую квоту:
vzctl set 128 --diskspace 9000000:10000000 --save
Задаем отсрочку превышения лимита (grace period):
vzctl set 128 --quotatime 600 --save
Определяем максимальный объем оперативной памяти для контейнера:
vzctl set 128 --privvmpages 750M:768M --save
Задаем гарантированный объем памяти, который получит виртуальная машина:
vzctl set 128 --vmguarpages 250M:256M --save
Данной командой запускаем созданный контейнер:
vzctl start 128
Часто используемые команды для управления OpenVZ
* 128 — номер контейнера, с которым мы будем работать в данных примерах. Для каждой виртуальной машины он свой.
Посмотреть список всех созданных контейнеров:
vzlist -a
Запуск контейнера (с ней мы уже знакомы):
vzctl start 128
Остановка контейнера:
vzctl stop 128
Перезапуск машины:
vzctl restart 128
Установка пакета samba в контейнер:
vzyum 128 install samba
Удаление пакета samba с виртуальной машины:
vzyum 128 remove samba
Выполнить команду в контейнере (в данном примере обновить список портов):
vzctl exec 128 yum update -y