Инструменты пользователя

Инструменты сайта


openvz

**Это старая версия документа!**

В статье описано как установить OpenVZ для сервера работающего на CentOS. Большая часть правильна и для любой другой операционной системы Linux.

Благодаря OpenVZ можно легко создать несколько виртуальных машин или другими словами серверов-VPS используя всего один сервер (железо). Есть другие различные системы виртуализации, например Xen или Linux Vserver. Однако в статье затронем только OpenVZ. Проект распространяется с открытым исходным кодом. Патч OpenVZ для ядра распространяется под лицензией GPL, а инструменты пользователя под лицензией QPL. Поэтому многие коммерческие компании предлагающие услуги VPS используют эту систему.

В статье дано только практическое руководство. Охвата теоретических основ не будет. Гугл в помощь. Также не дается никаких гарантий что у вас не будет никаких проблем и все что описано тут, заработает правильно.

Установка 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:
 vi openvz.repo
Отключим [openvz-kernel-rhel5] выставив (enabled=0) и включим [openvz-kernel-rhel6] выставив (enabled=1):

[openvz-kernel-rhel6]
name=OpenVZ RHEL6-based kernel
#baseurl=http://download.openvz.org/kernel/branches/rhel6-2.6.32/current/
mirrorlist=http://download.openvz.org/kernel/mirrors-rhel6-2.6.32
enabled=1
gpgcheck=1
gpgkey=http://download.openvz.org/RPM-GPG-Key-OpenVZ
[openvz-kernel-rhel5]
name=OpenVZ RHEL5-based kernel
#baseurl=http://download.openvz.org/kernel/branches/rhel5-2.6.18/current/
mirrorlist=http://download.openvz.org/kernel/mirrors-rhel5-2.6.18
enabled=0
gpgcheck=1
gpgkey=http://download.openvz.org/RPM-GPG-Key-OpenVZ

Репозиторий содержит несколько различных ядер с патчем OpenVZ (подробности). Посмотреть можно командой:

yum search vzkernel

Вывод вышеприведенной команды:

[root@server yum.repos.d]# yum search vzkernel

  vzkernel.i686 : The Linux kernel
  vzkernel.x86_64 : The Linux kernel
  vzkernel-devel.i686 : Development package for building kernel modules to match the kernel
  vzkernel-devel.x86_64 : Development package for building kernel modules to match the kernel
  vzkernel-firmware.noarch : Firmware files used by the Linux kernel
  vzkernel-headers.i686 : Header files for the Linux kernel for use by glibc
  vzkernel-headers.x86_64 : Header files for the Linux kernel for use by glibc

… [root@server yum.repos.d]#

Выберите нужное и установите:

yum install vzkernel

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

 vi /boot/grub/menu.lst

Первая строка должна быть указана на новое ядро ​с ​OpenVZ. Значение по умолчанию должно стоять на 0 (ноль), чтобы новое ядро загружалось автоматически, вместо тех что были в CentOS: # 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/mapper/vgserver-lvroot # 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-042stab057.1) root (hd0,0) kernel /vmlinuz-2.6.32-042stab057.1 ro root=/dev/mapper/vgserver-lvroot rdLVMLV=vgserver/lvroot rdNOLUKS LANG=enUS.UTF-8 rdNOMD SYSFONT=latarcyrheb-sun16 crashkernel=auto KEYBOARDTYPE=pc KEYTABLE=de rdLVMLV=vgserver/lvswap rdNODM rhgb quiet initrd /initramfs-2.6.32-042stab057.1.img title CentOS (2.6.32-279.el6.x8664) root (hd0,0) kernel /vmlinuz-2.6.32-279.el6.x8664 ro root=/dev/mapper/vgserver-lvroot rdLVMLV=vgserver/lvroot rdNOLUKS LANG=enUS.UTF-8 rdNOMD SYSFONT=latarcyrheb-sun16 crashkernel=auto KEYBOARDTYPE=pc KEYTABLE=de rdLVMLV=vgserver/lvswap rdNODM rhgb quiet initrd /initramfs-2.6.32-279.el6.x86_64.img

Теперь можно установить инструменты для управления OpenVZ:

yum install vzctl vzquota

Открываем sysctl.conf:

vi /etc/sysctl.conf

Смотрим чтобы были настройки:

net.ipv4.ipforward = 1 net.ipv4.conf.default.proxyarp = 0 net.ipv4.conf.all.rpfilter = 1 kernel.sysrq = 1 net.ipv4.conf.default.sendredirects = 1 net.ipv4.conf.all.sendredirects = 0 net.ipv4.icmpechoignorebroadcasts=1 net.ipv4.conf.default.forwarding=1

Если нужно изменить sysctl.conf. Запускаем:

sysctl -p

Следующий шаг очень важен! Если IP-адресы ваших виртуальных машин из другой подсети, нежели IP-адрес хост системы, сеть не будет работать в виртуальных машинах!

Открываем vz.conf:

vi /etc/vz/vz.conf

и ставим настройку у NEIGHBOUR_DEVS на all:

NEIGHBOUR_DEVS=all

Также нужно не забыть про SELinux. Его можно отключить совсем. Открываем /etc/sysconfig/selinux:

vi /etc/sysconfig/selinux

и выставляем значение disabled:

This file controls the state of SELinux on the system.

SELINUX= can take one of these three values:

enforcing - SELinux security policy is enforced.

permissive - SELinux prints warnings instead of enforcing.

disabled - No SELinux policy is loaded.

SELINUX=disabled

SELINUXTYPE= can take one of these two values:

targeted - Targeted processes are protected,

mls - Multi Level Security protection.

SELINUXTYPE=targeted

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

reboot

Если при этом не возникло проблем, то все отлично! Проверим ядро:

uname -r

Как видим загружено:

[root@server ~]# uname -r 2.6.32-042stab057.1 [root@server ~]#

Использование OpenVZ

Во второй части рассмотрим практическое руководство по использованию OpenVZ. Перед тем как как создавать виртуальные машины нужно сделать шаблоны в директории /vz/template/cache. Список шаблонов можно найти на странице http://wiki.openvz.org/Download/template/precreated.

В руководстве будет использоваться для виртуальных машин операционная система CentOS 6, так что качаем шаблон для нее:

cd /vz/template/cache wget http://download.openvz.org/template/precreated/centos-6-x86_64.tar.gz

Далее переведены основные команды управления OpenVZ.

Чтобы настроить VPS с шаблоном CentOS 6, выполните:

vzctl create 101 –ostemplate centos-6-x86_64 –config basic

101 это уникальный ID — у каждой виртуальной машины должен быть свой собственный ID. Для простоты лучше всего использовать последнюю часть IP-адреса виртуальной машины. Например, если IP-адрес 192.168.0.101, ставим 101. Однако это как вам хочется.

Для автозапуска виртуальной машины при старте хостовой операционной системы, выполните:

vzctl set 101 –onboot yes –save

Чтобы установить имя_хоста и IP-адрес для виртуальной машины, выполните:

vzctl set 101 –hostname test.example.com –save vzctl set 101 –ipadd 192.168.0.101 –save

Затем установим количество сокетов на 120 и назначим несколько нэйм-серверов в виртуальной машине:

vzctl set 101 –numothersock 120 –save vzctl set 101 –nameserver 8.8.8.8 –nameserver 8.8.4.4 –nameserver 145.253.2.75 –save

Также вместо команды vzctl можно напрямую редактировать конфиги в /etc/vz/conf. Если ID машины 101, значит конфиг /etc/vz/conf/101.conf.

Для старта виртуальной машины, выполните:

vzctl start 101

Чтобы назначить пароль root:

vzctl exec 101 passwd

Теперь можно подключиться к виртуальной машине с помощью SSH или следующим образом:

vzctl enter 101

Чтобы оставить консоль виртуальной машины, выполните:

exit

Для остановки виртуальной машины, выполните:

vzctl stop 101

Для перезагрузки виртуальной машины, выполните:

vzctl restart 101

Чтобы удалить виртуальную машину. Сначала останавливаем ее работу, затем выполняем:

vzctl destroy 101

Чтобы получить список всех ваших виртуальных машин и их статусов работы, выполняем:

vzlist -a

Вывод выше переведенной команды будет похожем на:

<code>[root@server cache]# vzlist -a

    CTID      NPROC STATUS    IP_ADDR         HOSTNAME
     101         14 running   192.168.0.101   test.example.com

[root@server cache]#

Для получения информации о ресурсах выделяемых на виртуальную машину, выполните:

vzctl exec 101 cat /proc/user_beancounters

Вывод вышеприведенной команды:

[root@server cache]# vzctl exec 101 cat /proc/user_beancounters Version: 2.5

     uid  resource           held    maxheld    barrier      limit    failcnt
    101:  kmemsize        1508202    1661695   11055923   11377049          0
          lockedpages           0          0        256        256          0
          privvmpages        5430       7102      65536      69632          0
          shmpages            381        381      21504      21504          0
          dummy                 0          0          0          0          0
          numproc              19         21        240        240          0
          physpages          2489       2775          0 2147483647          0
          vmguarpages           0          0      33792 2147483647          0
          oomguarpages       2489       2775      26112 2147483647          0
          numtcpsock            5          5        360        360          0
          numflock              3          4        188        206          0
          numpty                0          1         16         16          0
          numsiginfo            0          2        256        256          0
          tcpsndbuf         44720          0    1720320    2703360          0
          tcprcvbuf         81920          0    1720320    2703360          0
          othersockbuf      13144      14356    1126080    2097152          0
          dgramrcvbuf           0       8380     262144     262144          0
          numothersock         11         13        120        120          0
          dcachesize            0          0    3409920    3624960          0
          numfile             503        531       9312       9312          0
          dummy                 0          0          0          0          0
          dummy                 0          0          0          0          0
          dummy                 0          0          0          0          0
          numiptent            10         10        128        128          0

[root@server cache]#

Тут важна колонка failcnt, она должна содержать только нули, если нет, это означает виртуальная машина требует больше ресурсов чем в настоящее время выделяется. Для изменения количества откройте конфиг в директории /etc/vz/conf и поменяйте соответствующий ресурс. После изменения не забудьте перезагрузить виртуальную машину.

Подробнее о командах vzctl можно узнать в мане:

man vzctl

openvz.1382816376.txt.gz · Последнее изменение: 2013/10/26 23:39 (внешнее изменение)

DokuWiki Appliance - Powered by TurnKey Linux