Ключевые слова:openvz, limit, vps, (найти похожие документы)
From: spyden <mail.spyden@gmail.com.>
Date: Mon, 23 Oct 2010 17:02:14 +0000 (UTC)
Subject: Установка и использование OpenVZ на Debian Lenny (amd64)
Оригинал: http://debianway.ru/articles/how-to/openvz-installing-and-using-on-debian-lenny.html
Эта статья является переводом материала, размещённого здесь.
В этом учебнике я опишу, как можно подготовить сервер с Debian Lenny
для использования OpenVZ. С OpenVZ Вы можете создавать множество
виртуальных частных серверов (Virtual Private Servers (VPS)) на одном и
том же оборудовании, подобно Xen и проекту Linux Vserver. OpenVZ это
открытая ветвь Virtuozzo, коммерческого решения виртуализации,
используемого многими провайдерами, для создания виртуальных серверов.
Патч ядра для OpenVZ выпускается под лицензией GPL, а пользовательские
утилиты - под лицензией QPL.
Этот учебник представляет собой практическое руководство, он не
охватывает теоретических основ вопроса. Этим вопросам посвящено
множество других документов в сети (например, [9]здесь - прим.
переводчика).
Этот документ не даёт никакого рода гарантий! Я хочу сказать, что это
не единственный путь настройки такой системы. Есть много других
способов достичь подобного результата, но я выбрал этот. И я не
гарантирую, что он заработает у Вас!
Подготовка
Я использую x86_64 (amd64) систему. Если у Вас i386 система, то
несколько команд могут слегка отличаться - к ним я буду давать
пояснения.
Установка OpenVZ
Ядро OpenVZ и пакеты vzctl и vzquota доступны в репозиториях Debian
Lenny, поэтому мы можем установить их следующим образом:
apt-get install linux-image-openvz-amd64 vzctl vzquota
(Если у Вас система i386, то пакет ядра будет называться
linux-image-openvz-686.)
Создадим символьную ссылку с /var/lib/vz на /vz, чтобы сохранить
обратную совместимость:
ln -s /var/lib/vz /vz
Откроем /etc/sysctl.conf и убедимся, что следующие настройки есть в нём:
vi /etc/sysctl.conf
net.ipv4.conf.all.rp_filter=1
net.ipv4.icmp_echo_ignore_broadcasts=1
net.ipv4.conf.default.forwarding=1
net.ipv4.conf.default.proxy_arp = 0
net.ipv4.ip_forward=1
kernel.sysrq = 1
net.ipv4.conf.default.send_redirects = 1
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.eth0.proxy_arp=1
Если Вам необходимо изменить /etc/sysctl.conf, запустите
sysctl -p
впоследствии.
Следующий шаг важен если IP-адреса Ваших виртуальных машин из другой
подсети, нежели IP-адрес реальной системы (хост-системы). Если Вы этого
не сделаете, Ваши виртуальные машины не смогут использовать сеть!
Откроем файл /etc/vz/vz.conf и установим значение параметра
NEIGHBOUR_DEVS в all:
vi /etc/vz/vz.conf
# Controls which interfaces to send ARP requests and modify APR tables on.
NEIGHBOUR_DEVS=all
Я также захотел установить пакеты vzdump и vzprocps, которые недоступны
в репозиториях Debian Lenny, но есть по адресу
http://download.openvz.org/debian-systs в репозитории Etch (у них также
был репозиторий Lenny, но он был удалён недавно). Итак, открываем
/etc/apt/sources.list...
vi /etc/apt/sources.list
... и добавляем в него следующую строку:
deb http://download.openvz.org/debian-systs etch openvz
Конечно (in order not to mess up our system), мы захотим устанавливать
пакеты из Etch только если не найдём подходящего пакета из - если
доступны пакеты и в Lenny и в Etch, мы захотим установить из Lenny.
Чтобы это сделать, мы зададим для пакетов из Lenny более высокий
приоритет в /etc/apt/preferences:
vi /etc/apt/preferences
Package: *
Pin: release a=lenny
Pin-Priority: 700
Package: *
Pin: release a=etch
Pin-Priority: 650
Затем откроем /etc/apt/apt.conf...
vi /etc/apt/apt.conf
... и добавим следующие две строки:
APT::Default-Release "stable";
APT::Cache-Limit "100000000";
Выполним
wget -q http://download.openvz.org/debian-systs/dso_archiv_signing_key.asc -O - \
| apt-key add - && apt-get update
для добавления ключа репозитория и обновления базы данных пакетов.
Затем выполним
apt-get install vzdump vzprocps
чтобы установить vzdump и vzprocps.
Наконец, перезагрузим систему:
reboot
Если система перезагрузилась без проблем, значит всё идёт отлично!
Выполните
uname -r
и Ваше новое ядро OpenVZ должно показать следующее:
# uname -r
2.6.26-1-openvz-amd64
Использование OpenVZ
Прежде чем мы создадим виртуальные машины с OpenVZ, нам нужен шаблон
дистрибутива, который мы будем использовать в виртуальных машинах в
каталоге /var/lib/vz/template/cache. Виртуальные машины будут
создаваться по этому шаблону.
Выполните
apt-cache search openvz
В выводе выдолжны увидеть некоторые шаблоны Debian, например:
vzctl-ostmpl-debian-4.0-amd64-minimal - OpenVZ - OS Template debian-4.0-amd64-minimal
vzctl-ostmpl-debian-4.0-i386-minimal - OpenVZ - OS Template debian-4.0-i386-minimal
vzctl-ostmpl-debian-5.0-amd64-minimal - OpenVZ - OS Template debian-5.0-amd64-minimal
vzctl-ostmpl-debian-5.0-i386-minimal - OpenVZ - OS Template debian-5.0-i386-minimal
Выберите нужный шаблон (шаблоны для amd64 не доступны на i386-системах)
и установите его следующим образом:
apt-get install vzctl-ostmpl-debian-5.0-amd64-minimal vzctl-ostmpl-debian-4.0-amd64-minimal
Вы можете использовать один из этих шаблонов, а можете поискать в
списке уже подготовленных шаблонов на http://wiki.openvz.org/Download/template/precreated . К примеру,
вместо установки шаблона vzctl-ostmpl-debian-5.0-amd64-minimal с
помощью apt, мы можем просто его скачать:
cd /var/lib/vz/template/cache
wget http://download.openvz.org/template/precreated/contrib/debian-5.0-amd64-minimal.tar.gz
(На системе i386 Вы не можете использовать шаблоны amd64 - Вы должны
использовать только шаблоны для i386!)
А теперь я покажу Вам основные команды для использования OpenVZ.
Чтобы установить VPS из шаблона vzctl-ostmpl-debian-5.0-amd64-minimal
(его Вы можете найти в /var/lib/vz/template/cache), выполните:
vzctl create 101 --ostemplate debian-5.0-amd64-minimal --config vps.basic
Число 101 должно быть уникальным ID - каждая виртуальная машина должна
иметь свой собственный уникальный ID. Вы можете использовать последнее
число IP-адреса для этого. Например, если IP-адрес виртуальной машины
192.168.0.101, то Вы используете 101 как ID.
Если хотите чтобы виртуальная машина стартовала при загрузке,
выполните:
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 и присвоим виртуальной машине
несколько серверов имён (DNS):
vzctl set 101 --numothersock 120 --save
vzctl set 101 --nameserver 145.253.2.75 --nameserver 213.191.92.86 --save
(Вместо использования команды vzctl set, Вы можете редактировать
конфигурацию виртуальной машины напрямую. Файл конфигурации хранится в
каталоге /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
# vzlist -a
VEID NPROC STATUS IP_ADDR HOSTNAME
101 8 running 192.168.0.101 test.example.com
Чтобы просмотреть сколько ресурсов отдано виртуальной машине, выполните
vzctl exec 101 cat /proc/user_beancounters
# vzctl exec 101 cat /proc/user_beancounters
Version: 2.5
uid resource held maxheld barrier limit
failcnt
101: kmemsize 500737 517142 11055923 11377049
lockedpages 0 0 256 256
privvmpages 2315 2337 65536 69632
shmpages 640 640 21504 21504
dummy 0 0 0 0
numproc 7 7 240 240
physpages 1258 1289 0 2147483647
vmguarpages 0 0 33792 2147483647
oomguarpages 1258 1289 26112 2147483647
numtcpsock 2 2 360 360
numflock 1 1 188 206
numpty 1 1 16 16
numsiginfo 0 1 256 256
tcpsndbuf 17856 17856 1720320 2703360
tcprcvbuf 32768 32768 1720320 2703360
othersockbuf 2232 2928 1126080 2097152
dgramrcvbuf 0 0 262144 262144
numothersock 1 3 120 120
dcachesize 0 0 3409920 3624960
numfile 189 189 9312 9312
dummy 0 0 0 0
dummy 0 0 0 0
dummy 0 0 0 0
numiptent 10 10 128 128
Колонка failcnt очень важна, она должна содержать только нули; иначе,
это будет означать, что виртуальной машине нужно больше ресурсов, чем
ей выделено в данный момент. Откройте конфигурационный файл в каталоге
/etc/vz/conf и увеличьте соответствующий ресурс, а затем перезагрузите
виртуальную машину.
Чтобы увидеть больше информации о команде vzctl, выполните
man vzctl
Оригинал статьи тут.