SASA DESIGN

Open Your mind, Open Your Source Code!

Инсталиране и използване OpenVZ на Ubuntu 8.10

12 ноември, 2008 – 9:10 pm

В тази статия ще се опитам да опиша как да се подготви Ubuntu 8.10 сървър за OpenVZ. С OpenVZ можете да

Ubuntu
създадете множество виртуални частни сървъри (VPS) на същия хардуер, подобен на Xen и Linux Vserver проекта. OpenVZ е с отворен код клон на Virtuozzo, използван от много доставчици, които предлагат виртуални сървъри. В OpenVZ kernel patch е лицензиран под GPL лиценз, и user-level инструменти са под QPL лиценз.

Този документ е без гаранция от какъвто и да е вид! Искам да кажа, че това не е единственият начин за създаване на такава система. Съществуват много начини за постигането на тази цел, но това е начинът който аз предприемам. Не давам никакви гаранции, че това ще работи за вас!

1 Забележка

Използван е 86_64 (amd64) система. Ако сте на i386 система някои команди ще се различават. Добавил съм поясненията към тази част.

2 Като root

Напишете

sudo su

3 Смяна на shell по подразбиране

bin/sh е symlink на /bin/dash, както и да е, имаме нужда да е /bin/bash, а не да е /bin/dash. За това правим следното:

ln -sf /bin/bash /bin/sh

4 Изключване на AppArmor

AppArmor е разширение за сигурност (подобен на SELinux), който следва да предоставя разширена сигурност. По мое мнение не е нужно да конфигурирате сигурна система, и то обикновено причинява повече проблеми отколкото предимства. Зареди това го махаме.

Можем да я изключим:

/etc/init.d/apparmor stop
update-rc.d -f apparmor remove
apt-get remove apparmor apparmor-utils

5 Инсталиране na OpenVZ

За да можем да инсталираме OpenVZ трябва да добавим repository в /etc/apt/sources.list

vi /etc/apt/sources.list

[...]
deb http://download.openvz.org/debian-systs lenny openvz
[...]

и

wget -q http://download.openvz.org/debian-systs/dso_archiv_signing_key.asc -O- | apt-key add – && apt-get update

След като обновимхме базата данни за пакети, за да може да намерим OpenVZ kernel-а от който се нуждаем:

apt-cache search openvz

root@server1:~# apt-cache search openvz
vzctl – server virtualization solution – control tools
vzquota – server virtualization solution – quota tools
fzakernel-2.6.24-amd64 – OpenVZ – Meta kernel 2.6.246-fza-amd64 (2.6.24+ovz004.1dso6) on amd64
linux-patch-openvz – OpenVZ – server virtualization solution – Linux kernel patch
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
root@server1:~#

Както виждате в моя случай ядрото се нарича fzakernel-2.6.24-amd64 (защото съм на 64bit Ubuntu 8.10). Ако вие сте на машина с i386 система името ще изглежда така fzakernel-2.6.24-i386

Сега отворете /boot/grub/menu.lst…

vi /boot/grub/menu.lst

и настройте OpenVZ ядрото по подразбиране. В моя /boot/grub/menu.lst имам следното ядро:

[...]
## ## End Default Options ##

title Ubuntu 8.10, kernel 2.6.27-7-server
uuid a384f789-7b8b-4464-8340-f5fcc73ecc5b
kernel /boot/vmlinuz-2.6.27-7-server root=UUID=a384f789-7b8b-4464-8340-f5fcc73ecc5b ro quiet splash
initrd /boot/initrd.img-2.6.27-7-server
quiet

title Ubuntu 8.10, kernel 2.6.27-7-server (recovery mode)
uuid a384f789-7b8b-4464-8340-f5fcc73ecc5b
kernel /boot/vmlinuz-2.6.27-7-server root=UUID=a384f789-7b8b-4464-8340-f5fcc73ecc5b ro single
initrd /boot/initrd.img-2.6.27-7-server

title Ubuntu 8.10, kernel 2.6.24-6-fza-amd64
uuid a384f789-7b8b-4464-8340-f5fcc73ecc5b
kernel /boot/vmlinuz-2.6.24-6-fza-amd64 root=UUID=a384f789-7b8b-4464-8340-f5fcc73ecc5b ro quiet splash
initrd /boot/initrd.img-2.6.24-6-fza-amd64
quiet

title Ubuntu 8.10, kernel 2.6.24-6-fza-amd64 (recovery mode)
uuid a384f789-7b8b-4464-8340-f5fcc73ecc5b
kernel /boot/vmlinuz-2.6.24-6-fza-amd64 root=UUID=a384f789-7b8b-4464-8340-f5fcc73ecc5b ro single
initrd /boot/initrd.img-2.6.24-6-fza-amd64

title Ubuntu 8.10, memtest86+
uuid a384f789-7b8b-4464-8340-f5fcc73ecc5b
kernel /boot/memtest86+.bin
quiet

### END DEBIAN AUTOMAGIC KERNELS LIST

Което означава че OpenVZ ядрото е на трето място. Броенето страртира с 0, а това го сменяме с 2

[...]
default 2
[...]

Сега ще инсталираме някои OpenVZ потребителски инструменти

apt-get install vzctl vzquota

Отворете /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 адресът на виртуалните машини са от различен subnet от IP адреса на хост системата. Ако не направите това, няма да имате мрежа в виртуалните машини!

Отворете /etc/vz/vz.conf и поставете NEIGHBOUR_DEVS

vi /etc/vz/vz.conf

[...]
NEIGHBOUR_DEVS=all
[...]

рестартирайте системата

reboot

Ако системата ви се рестартира без проблеми, значи всичко е наред. След рестарт логнете се пак като root

sudo su

и

uname -r

И вашия нов OpenVZ ядро трябва да показва:

root@server1:~# uname -r
2.6.24-6-fza-amd64
root@server1:~#

6 Използване на OpenVZ

Преди да създадем виртуални машини с OpenVZ трябва да имаме шаблон за дистрибуцията за което искаме да използваме в виртуалните машини в /var/lib/vz/template/cache директория. Виртуалните машини ще се създадат от този шаблон.

в

apt-cache search openvz

Имаме четири Debian шаблона за да може да инсталираме като следното (вероятно amd64 шаблоните ще са различни за i386 система)

apt-get install vzctl-ostmpl-debian-4.0-amd64-minimal vzctl-ostmpl-debian-4.0-i386-minimal vzctl-ostmpl-debian-5.0-amd64-minimal vzctl-ostmpl-debian-5.0-i386-minimal

Можете да използвате някой от тези шаблони, можете също да намерите списък на шаблони на този адрес http://wiki.openvz.org/Download/template/precreated

Например искам да използвам на виртуалните си машини Ubuntu 8.04, значи трябва да изтеглия шаблона (template) на Ubuntu 8.04 template

cd /var/lib/vz/template/cache
wget http://download.openvz.org/template/precreated/ubuntu-8.04-amd64-minimal.tar.gz

Ако вашата система i386 не можете да използвате шаблон който е за amd64.
Сега ще ви покажа основните команди за използване на OpenVZ
За да настроим VPS от минимален Ubuntu 8.04 template:

vzctl create 101 –ostemplate ubuntu-8.04-amd64-minimal –config vps.basic

За настройка на VPS от vzctl-ostmpl-debian-4.0-i386-minimal template трябва:

vzctl create 101 –ostemplate debian-4.0-i386-minimal –config vps.basic

101 трябва да е uniqe ID (уникално ID) – всяка виртуална машина трябва да има уникалнo ID. Можете да използвате последната част от IP адресите на виртуалните машини. Например, ако виртуалната машина е с IP адрес 192.168.0.101, можете да използвате 101 за ID.

Ако искате vm да се страртира с системата

vzctl set 101 –onboot yes –save

За настройка на hostname и IP адрес за vm

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

Следва да настроим номер на сокети на 120 и да присвоим няколко nameservers на vm

vzctl set 101 –numothersock 120 –save
vzctl set 101 –nameserver 145.253.2.75 –nameserver 213.191.92.86 –save

Вместо да използвате определени команди за vzctl можете да редактирате директно конфигурационния файл на VM, която се пази в /etc/vz/conf. Ако идентификатора на VM е 101, тогава конфигурационния файл е /etc/vz/conf/101.conf.

За старт на vm

vzctl start 101

За настройка на root парола за vm

vzctl exec 101 passwd

Сега вече можете да се свържете към vm чрез SSH (пр. PuTTY) или пък командата

vzctl enter 101

За да излезете от конзолата на vm

exit

За спиране на vm

vzctl stop 101

За рестартиране на vm

vzctl restart 101

За изтриване на vm от HDD (преди да се извърши тази процедура първо се спира)

vzctl destroy 101

За листване на vms и техния статус

vzlist -a

root@server1:~# vzlist -a
VEID NPROC STATUS IP_ADDR HOSTNAME
101 5 running 192.168.0.101 test.example.com
root@server1:~#

За намиране на информация разположена в vm

vzctl exec 101 cat /proc/user_beancounters

root@server1:~# vzctl exec 101 cat /proc/user_beancounters
Version: 2.5
uid resource held maxheld barrier limit failcnt
101: kmemsize 593615 1721162 11055923 11377049 0
lockedpages 0 0 256 256 0
privvmpages 2111 2491 65536 69632 0
shmpages 645 661 21504 21504 0
dummy 0 0 0 0 0
numproc 6 11 240 240 0
physpages 1124 1427 0 2147483647 0
vmguarpages 0 0 33792 2147483647 0
oomguarpages 1124 1427 26112 2147483647 0
numtcpsock 2 2 360 360 0
numflock 0 1 188 206 0
numpty 1 2 16 16 0
numsiginfo 0 2 256 256 0
tcpsndbuf 24640 24640 1720320 2703360 0
tcprcvbuf 32768 0 1720320 2703360 0
othersockbuf 4480 21760 1126080 2097152 0
dgramrcvbuf 0 8384 262144 262144 0
numothersock 3 7 120 120 0
dcachesize 53848 57912 3409920 3624960 0
numfile 184 254 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@server1:~#

failcnt колоната е много важно, тя трябва да съдържа само нули, ако e обратното, това означава, че VM се нуждае от повече средства, отколкото понастоящем са разпределени за VM. Отворете конфигурационния файл на VM в /etc/vz/conf и намерете съответния ресурс след което рестартирайте VM.

За да можете да намерите повече информация за vzctl командата

man vzctl

7 Връзки

Напиши коментар