Установка OpenVZ на CentOS5, CentOS6

Установка OpenVZ

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

cd /etc/yum.repos.d
wget http://download.openvz.org/openvz.repo
rpm --import http://download.openvz.org/RPM-GPG-Key-OpenVZ

Откроем openvz.repo.
nano openvz.repo
P.S. nano - это консольный текстовый редактор. Простенький и понятный. Пользуйтесь тем, к чему привыкли - это не принципиально.

Если у Вас Centos5, то Вам нужно искать директиву [openvz-kernel-rhel5] и выставить там значение enabled=1. Все остальные выключить (enabled=0). Если Centos6 - соответственно, включить [openvz-kernel-rhel6], остальное выключить.

Если Вы каким-то чудом забыли версию своей ОС :-) можно узнать так:
cat /etc/redhat-release

В общем, устанавливаем ядро OpenVZ.
Внимание: для CentOS 5 ядро называется ovzkernel, а для CentOS 6 - vzkernel. Выполняйте соответствующую команду:
yum install ovzkernel
или
yum install vzkernel

Установщик должен автоматически обновить загрузчик GRUB. Лучше проверить. Для этого открываем /boot/grub/menu.lst.
nano /boot/grub/menu.lst

Первый title должен указывать на новое ядро ​с ​OpenVZ. Ну, т.е. как ДОЛЖЕН... это показывает, что у Вас всё нормально установилось. Параметром default=* Вы можете регулировать какая ОС будет загружаться автоматически выставляя нужную цифру. Соответственно default=0 загрузит только что установленное ядро OpenVZ.

Пример моего файлика, если нужно:

Spoiler: Highlight to view

# grub.conf generated by anaconda
#
# Note that you do not have to rerun grub after making changes to this file
# NOTICE:  You have a /boot partition.  This means that
#          all kernel and initrd paths are relative to /boot/, eg.
#          root (hd0,0)
#          kernel /vmlinuz-version ro root=/dev/sda3
#          initrd /initrd-[generic-]version.img
#boot=/dev/sda
default=0
timeout=5
splashimage=(hd0,0)/grub/splash.xpm.gz
hiddenmenu
title OpenVZ (2.6.32-042stab085.20)
        root (hd0,0)
        kernel /vmlinuz-2.6.32-042stab085.20 ro root=UUID=c0deded7-2227-4cdd-815a-3e2244dcd7c9 LANG=ru_RU.UTF-8 rd_NO_LUKS rd_NO_LVM rd_NO_MD crashkernel=auto  KEYBOARDTYPE=pc KEYTABLE=us rd_NO_DM rhgb quiet
        initrd /initramfs-2.6.32-042stab085.20.img
title CentOS (2.6.32-431.5.1.el6.x86_64)
        root (hd0,0)
        kernel /vmlinuz-2.6.32-431.5.1.el6.x86_64 ro root=UUID=c0deded7-2227-4cdd-815a-3e2244dcd7c9 LANG=ru_RU.UTF-8 rd_NO_LUKS rd_NO_LVM rd_NO_MD crashkernel=auto  KEYBOARDTYPE=pc KEYTABLE=us rd_NO_DM rhgb qu$
        initrd /initramfs-2.6.32-431.5.1.el6.x86_64.img

Кстати. было бы ещё не плохо изменить параметр системы и указать ядро OpenVZ основным в системе, чтобы его не выключало при каждом апдейте mainline RHEL ядер. Опять же - не забывает, для CentOS 5 ядро называется ovzkernel, а для CentOS 6 - vzkernel. Выполняйте соответствующую команду:
sed -i 's/kernel/ovzkernel/' /etc/sysconfig/kernel
или
sed -i 's/kernel/vzkernel/' /etc/sysconfig/kernel

А ещё проверим, что сервис vz добавлен в автозапуск:

chkconfig --list | grep vz
vz             	0:выкл	1:выкл	2:вкл	3:вкл	4:вкл	5:вкл	6:выкл
vzeventd       	0:выкл	1:выкл	2:вкл	3:вкл	4:вкл	5:вкл	6:выкл

Теперь можно установить инструменты для управления OpenVZ:
yum install vzctl
В зависимостях установятся всё необходимое, соглашаемся.

Также необходимо поправить параметры ядра. Открываем sysctl.conf:
nano /etc/sysctl.conf

Смотрим чтобы были все нижеперечисленные настройки. Если чего не хватает - добавляем:

net.ipv4.ip_forward = 1
net.ipv4.conf.default.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
net.ipv4.icmp_echo_ignore_broadcasts=1

Все эти параметры рекомендуются в официальной инструкции по установке. Описал что за что отвечает, если интересно - всё в спойлере. Официальный документ с описанием параметров ядра тут.

Spoiler: Highlight to view

net.ipv4.ip_forward - включить в системе функцию проброса пакетов между интерфейсами;
net.ipv4.conf.default.forwarding - проброс пакетов между интерфейсами. Параметр для вновь созданных интерфейсов;
net.ipv4.conf.default.proxy_arp - проксирование arp-запросов. Параметр для вновь созданных интерфейсов;
net.ipv4.conf.all.rp_filter - сообщает ядру о необходимости фильтрации пакетов по их исходящему адресу;
kernel.sysrq - использование "магических клавиш" при крахе системы (Если очень интересно: http://www.opennet.ru/base/sys/sysrq.txt.html);
net.ipv4.conf.default.send_redirects - не отправлять ICMP-пакеты перенаправления. ICMP-перенаправления могут быть использованы злоумышленником для изменения таблиц маршрутизации. Параметр для вновь созданных интерфейсов;
net.ipv4.conf.all.send_redirects - не отправлять ICMP-пакеты перенаправления. ICMP-перенаправления могут быть использованы злоумышленником для изменения таблиц маршрутизации. Параметр для всех существующих интерфейсов.;
net.ipv4.icmp_echo_ignore_broadcasts - игнорировать ли ICMP ECHO запросы, переданные широковещательными пакетами.

Если IP-адресы ваших виртуальных машин из другой подсети, нежели IP-адрес хост системы, сеть не будет работать в виртуальных машинах. Нужно изменить параметр NEIGHBOUR_DEVS на all в файле vz.conf:

nano /etc/vz/vz.conf
NEIGHBOUR_DEVS=all

Везде пишут, что нужно отключать SELinux. Не нужно. Он (К ОГРОМНОМУ сожалению ПОКА) не поддерживается ядром OpenVZ и будет выключен, соответственно.
Так же не нужно создавать никаких сетевых интерфейсов. Можете проверить, у Вас уже автоматически должен был появился новый:

ifconfig
venet0    Link encap:UNSPEC  HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00  
          UP BROADCAST POINTOPOINT RUNNING NOARP  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:0 (0.0 b)  TX bytes:0 (0.0 b)

Теперь нужно перезагрузить систему:
reboot

После загрузки сервера, проверим ядро:

uname -r
2.6.32-042stab085.20

Не забываем сказать нашему iptables, чтобы разрешал гонять пакетики через интерфейс. Можно открыть для всех IP, так:

iptables -A FORWARD -i venet0 -j ACCEPT
iptables -A FORWARD -o venet0 -j ACCEPT

или же можем ограничить IP-адресом виртуальной машины, например:

iptables -A FORWARD -i venet0 -s ip.ad.dr.es -j ACCEPT
iptables -A FORWARD -o venet0 -d ip.ad.dr.es -j ACCEPT

Ну, собственно всё.

Добавить комментарий

CAPTCHA
Этот вопрос задается для того, чтобы выяснить, являетесь ли Вы человеком или представляете из себя автоматическую спам-рассылку.
Target Image