Использование OpenVZ
Содержание
Установка OpenVZ
Скачиваем ядро для своей системы с www.openvz.org, или из репозитария OpenVZ и устанавливаем его (rpm -ihv ovzkernel-name*.rpm). Далее, необходимо изменить некоторые параметры в /etc/sysctl.conf:
# On Hardware Node we generally need # packet forwarding enabled and proxy arp disabled net.ipv4.ip_forward = 1 net.ipv4.conf.default.proxy_arp = 0 # 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
При необходимости можно установить новое ядро загружаемым по умолчанию (для GRUB - параметр default в /boot/grub/menu.lst). Перезагружаемся с новым ядром и выполняем:
/sbin/service vz start
Создание и удаление VPS
Например, создаем VPS 128 с template CentOS Linux Minimal:
/usr/sbin/vzctl create 128 --ostemplate centos-4-i386-minimal --config vps.basic
Чтобы физически удалить VPS 128:
/usr/sbin/vzctl destroy 128
Конфигурирование VPS
Задание автостарта при загрузке openvz для VPS 126:
/usr/sbin/vzctl set 126 --onboot yes --save
Установка hostname для VPS 126:
/usr/sbin/vzctl set 126 --hostname vps126.servername.ru --save
Смена (задание) IP на VPS 127:
/usr/sbin/vzctl set 127 --ipdel all --ipadd 192.168.1.27 --save
Установка nameserver для VPS 126:
/usr/sbin/vzctl set 126 --nameserver 123.45.67.89 --save
Установка пароля password на пользователя root для VPS 126 (**НИКОГДА ТАК НЕ ДЕЛАЙТЕ**):
/usr/sbin/vzctl set 126 --userpasswd root:password --save
Установка процессорной квоты 15% для VPS 126 (если процессора два, то максимум будет не 100%, а 200%):
/usr/sbin/vzctl set 126 --cpulimit 15 --save
Установка дисковой квоты 9 GB (10 GB в течении промежутка 600 секунд) для VPS 126:
/usr/sbin/vzctl set 126 --diskspace 9000000:10000000 --save /usr/sbin/vzctl set 126 --quotatime 600 --save
Установка квоты на виртуальную память 750M (768M в течение quotatime - см.выше) с гарантией выделения до 250M (256M) для VPS 126:
/usr/sbin/vzctl set 126 --privvmpages 750M:768M --save /usr/sbin/vzctl set 126 --vmguarpages 250M:256M --save
Это означает, что приложения на VPS не смогут выделить больше 768МБ, но в любом случае выделение до 256МБ пройдет успешно.
Управление VPS
Стартовать VPS 126:
/usr/sbin/vzctl start 126
Остановить VPS 126:
/usr/sbin/vzctl stop 126
Перезапустить VPS 126:
/usr/sbin/vzctl restart 126
Установка пакета на VPS 126:
/usr/bin/vzyum 126 install something
Деинсталляция пакета на VPS 126:
/usr/bin/vzyum 126 remove something
Запуск команды something... на VPS 126
/usr/sbin/vzctl exec 126 something...
Посмотреть, каких лимитов не хватило
# cat /proc/user_beancounters Version: 2.5 uid resource held maxheld barrier limit failcnt 126: kmemsize 2773550 2822268 134217728 268435456 0 lockedpages 0 0 32 32 0 privvmpages 48620 51229 49152 53575 1 shmpages 640 656 8192 8192 0 dummy 0 0 0 0 0 numproc 34 35 65 65 0 physpages 31297 31317 0 2147483647 0 vmguarpages 0 0 6144 2147483647 0 oomguarpages 31297 31317 6144 2147483647 0 numtcpsock 13 16 80 80 0 numflock 8 11 100 110 0 numpty 1 1 16 16 0 numsiginfo 0 2 256 256 0 tcpsndbuf 8944 27940 319488 524288 0 tcprcvbuf 0 9080 319488 524288 0 othersockbuf 242836 262056 262144 524288 0 dgramrcvbuf 0 8380 132096 132096 0 numothersock 152 164 256 256 0 dcachesize 0 0 1048576 1097728 0 numfile 1003 1030 2048 2048 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
В колонка failcnt считается, сколько раз был достигнут лимит ресурса.
Пример создания VPS
psw="passwORD:-)" # пароль от рута ostmpl="centos-4-i386-minimal" # темплейт vid="129" # VPS ID /usr/sbin/vzctl create ${vid} --ostemplate ${ostmpl} --config vps.basic /usr/sbin/vzctl set ${vid} --onboot yes --save /usr/sbin/vzctl set ${vid} --hostname vps${vid}.mwn --save /usr/sbin/vzctl set ${vid} --ipdel all --save /usr/sbin/vzctl set ${vid} --ipadd 192.168.1.${vid} --save /usr/sbin/vzctl set ${vid} --nameserver 123.45.67.89 --save /usr/sbin/vzctl set ${vid} --userpasswd root:${psw} --save /usr/sbin/vzctl set ${vid} --cpulimit 15 --save /usr/sbin/vzctl set ${vid} --diskspace 9000000:10000000 --save /usr/sbin/vzctl set ${vid} --quotatime 600 --save /usr/sbin/vzctl set ${vid} --privvmpages 250M:256M --save /usr/sbin/vzctl set ${vid} --vmguarpages 120M:128M --save /usr/sbin/vzctl start ${vid}
Локализация
К примеру, мы используем template CentOS Linux. Тогда, отредактируем /vz/template/centos/4/i386/config/.rpmmacros:
%_install_langs C:en_US.UTF-8:en_US:en:ru_RU.UTF-8:ru_RU:ru
Выполним:
vzpkgcache -f centos-4-minimal
По окончании OS template centos-4-minimal будет поддерживать UTF-8
Уже готовый OS template с UTF-8 можно найти здесь: ftp://172.30.1.126/pub/unix/centos-4-i386-minimal.tar.gz
В существующих VPS добавить новые локали можно только путём переинсталляции всех пакетов
В свежесозданной VPS создаем файл /etc/sysconfig/i18n:
LANG="en_US.UTF-8" SUPPORTED="en_US.UTF-8:en_US:en:ru_RU.UTF-8:ru_RU:ru" SYSFONT="latarcyrheb-sun16"
Рестарт и UTF-8 работает.
Проблемы
w/who на VPS и VPS node
w/who ничего не выводят
* http://forum.openvz.org/index.php?t=rview&th=413&goto=2912 * http://bugzilla.openvz.org/show_bug.cgi?id=124 * http://kb.swsoft.com/article_133_1146_en.html
Наиболее легкое решение проблемы — добавить в sshd_config:
UsePAM no UseLogin yes
/sbin/service sshd restart
Более правильное — перекомпилировать ядро OpenVZ с опциями
CONFIG_AUDIT=y CONFIG_AUDITSYSCALL=y
from [1] Pavel Stegnii aka --Adramelech 17:13, 28 апреля 2009 (UTC)