GNU Linux/Linux-VServer
Linux-VServer yra atvirojo kodo sistema skirta Linux branduoliui. Naudojama kurti virtualius, serverius, veikiančius viename fiziniame kompiuteryje (serveryje).
Linux-VServer leidžia kurti virtualius privačius serverius (VPS), kurie veikia kaip normalūs Linux serveriai, tačiau jų gali būti daug. Visi virtualūs serveriai veikia vienoje sistemoje, tačiau galima įjungti arba išjungti atskiras paslaugas (ssh, mail, web, duomenų bazes) kiekvienam virtualiam serveriui taip pat, kaip ir administruojant realius serverius. Kiekvienas virtualus serveris turi savo atskirus vartotojų duomenų bazę ir administratorių. Tarpusavyje jie yra nepriklausomi ir negali turėti įtakos kitų virtualių serverių veikimui.
Linux branduolio diegimas
keistiLinux-VServer naudojimui reikalingas Linux branduolys palaikantis VServer, t.y. galintis izoliuoti atskirus virtualių serverių branduolius, kurie veiktų nepriklausomai vienas nuo kito.
Branduolio parinkimas
keistiLinux branduoliai su pataisymais tinkantys VServer nurodyti čia: http://linux-vserver.org/Welcome_to_Linux-VServer.org.
Branduolio versiją galima sužinoti terminalo lange įvedus:
uname -r
Naudojant Ubuntu 8.04, branduolio versija yra 2.6.24-16-generic, kuri nėra tinkama VServer naudojimui. Taigi kompiliuosime Linux branduolį Ubuntu sistemai. Iš lentelės pasirenkame branduolį.
Pirmiausia įsitikinam, kad visi branduolio atnaujinimui reikalingi paketai yra įdiegti:
apt-get install build-essential gcc make g++ libncurses5-dev ssh ncurses-base patch libc6-dev
Toliau sukuriame naują direktoriją ir pereiname į ją, kur bus reikalingas branduolys:
cd /usr/src/ mkdir kernel cd kernel
Parsiunčiame Linux branduolį bei pataisų paketus:
wget http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.22.19.tar.bz2 wget http://people.linux-vserver.org/~harry/patch-2.6.22.19-vs2.2.0.7-grsec2.1.11-20080317.diff
Išskleidžiame archyvą ir pereiname į sukurtą direktoriją:
tar xfjv linux-2.6.22.19.tar.bz2 cd linux-2.6.22.19.tar.bz2
Branduolio atnaujinimas
keistiAtnaujiname branduolio failus:
cat ../patch-2.6.22.19-vs2.2.0.7-grsec2.1.11-20080317.diff | patch -p1
Galime palikti tuos pačius nustatymus, kokie buvo mūsų pradinėje sistemoje, nukopijavę esamą failą:
cp /boot/vmlinuz-2.6.24-16-generic /usr/src/kernel/linux-2.6.22.19.tar.bz2
Sukuriame konfigūracinį failą pagal dabartinės sistemos konfigūravimo nustatymus. Jums lieps pasirinkti tik tuos nustatymus, kurių nebuvo anksčiau. Beveik visus nustatymus galite palikti pagal nutylėjimą (jei nepatyrę vartotojai), išskyrus šiuos:
- Enable Legacy kernel API
- Enable Proc Security
- Enable Hard CPU Limits
Jie turėtų būti įjungti (pasirenkame Y). Kuriant naujus nustatymus naudotumėm make config
make oldconfig
Įvykdome dar vieną komandą, kuri atveria meniu pasirinkimo langą (galima nieko nekeisti):
make menuconfig
Branduolio kompiliavimas
keistiKompiliuojame ir instaliuojame naują branduolį (komandos make vykdymas gali užtrukti 30-60 min.).:
make make install make modules_install
Sukuriame branduolio paleidimo failą:
mkinitramfs -o /boot/initrd.img-2.6.22.19-grsec2.1.11-vs2.2.0.7 2.6.22.19-grsec2.1.11-vs2.2.0.7
Branduolio paleidimo įrašai
keistiPaskutinis žingsnis - užtikrinti, kad branduolio paleidimo sąraše būtų įrašas, leidžiantis užkrauti naująjį branduolį. Reikia patikrinti ir paredaguoti /boot/grub/menu.lst failą:
vi /boot/grub/menu.lst
Ir prieš visus esančius įrašus įrašyti:
title Ubuntu, 2.6.22.19-grsec2.1.11-vs2.2.0.7 (VServer) root (hd0,0) kernel /boot/vmlinuz-2.6.22.19-grsec2.1.11-vs2.2.0.7 root=/dev/sda1 ro quiet splash initrd /boot/initrd.img-2.6.22.19-grsec2.1.11-vs2.2.0.7 savedefault boot
Naudojamo branduolio patikrinimas
keistiIšsaugojam papildytą failą ir perkrauname sistemą su nauju branduoliu (shutdown -r now). Patikrinus užkrautą branduolį (uname -r) turime pamatyti:
2.6.22.19-grsec2.1.11-vs2.2.0.7
Perkrovus sistemą man atsirado baltas langas ir prie grafinės aplinkos nepavyko prieiti, bet per terminalo langą (Ctrl+Alt+F[1-12]) viskas veikia.
Linux-VServer diegimas
keistiĮ paruoštą sistemą reikia instaliuoti util-vserver ir vserver-debiantools. Tai galima padaryti naudojant Paketų tvarkyklę Synaptic arba įvedę eilutę į terminalą:
apt-get install util-vserver vserver-debiantools
Linux-VServer diegimo problemos
keistiČia pateikiu problemas su kokiomis aš susidūriau norėdamas paleisti VServer, kokius pranešimus gavau ir ne į visus radau atsakymus internete. Tikiuosi kažkam bus naudingi.
Testavimas su skriptu
keistiAr sėkmingai įdiegtas ir tinkamai veikia VServer galima patikrinti atsisiuntę ir paleidę šį skriptuką.
wget http://vserver.13thfloor.at/Stuff/SCRIPT/testme.sh chmod +x testme.sh sudo ./testme.sh
Jei gavome žemiau esantį pranešimą, tai reiškia, kad Linux branduolys nepalaiko VServer. Reikia įdiegti palaikantį Linux branduolį, kaip aprašyta pirmame skyriuje.
Linux-VServer Test [V0.17] Copyright (C) 2003-2006 H.Poetzl chcontext: tools were built without legacy API support; can not continue chcontext failed! WARNING: --nid is not supported by this version chbind: kernel does not provide network isolation WARNING: --nid is not supported by this version chbind: kernel does not provide network isolation chbind failed! Linux 2.6.24-16-generic #1 SMP Thu Apr 10 13:23:42 UTC 2008 i686 Ea 0.30.214 273/glibc (DSa) <v13,net,v21,v22,v23,netv2> VCI: <none> (Tn) ---
Virtualaus serverio kūrimas
keistiBandome sukurti virtualų serverį:
newvserver -v --hostname test1 --domain "pavyzdys.lt" --ip 193.169.100.2 --interface dummy0
Jeigu nepavyko sukurti virtualaus serverio ir gaunate pranešimą, tai reiškia mūsų branduolys negali saugiai atskirti virtualių serverių, t.y. nepalaiko VServer. Žiūrėti pirmąjį skyrių.
newvserver error: Must be run from the host server (security context 0) on a "vserver/ctx-patch" enabled kernel See: http://www.solucorp.qc.ca/miscprj/s_context.hc
Linux-VServer konfigūravimas
keistiVServer tinklo konfigūravimas
keistiPirmiausia reikia sukurti tinklą ir priskirti jį VServer paketui. Ubuntu ir Debian sistemose taip galime padaryti į failą /etc/network/interfaces įrašę tokias eilutes:
auto dummy0 iface dummy0 inet static address 193.169.100.1 netmask 255.255.255.0
Jeigu viskas veikia, mes galime pamatyti susietą adresą su sukurtu interfeisu dummy0 įvedę eilutę:
ip addr show dev dummy0
Turėtumėt gauti kažką panašaus:
5: dummy0: <BROADCAST,NOARP,UP,10000> mtu 1500 qdisc noqueue link/ether 6e:07:f6:a2:7d:d1 brd ff:ff:ff:ff:ff:ff inet 10.1.1.1/24 brd 10.1.1.255 scope global dummy0 inet6 fe80::6c07:f6ff:fea2:7dd1/64 scope link valid_lft forever preferred_lft forever
Tinklo paketai, siunčiami iš virtualaus serverio, turi ateiti iš šio sukurto interfeiso. Tačiau norint gauti išorinius paketus į virtualų serverį, reikia šiam interfeisui nustatyti nukreipimus.
echo 1 >/proc/sys/net/ipv4/ip_forward iptables -t nat -A POSTROUTING -s 193.169.100.1/32 -j SNAT --to-source $IP
čia $IP yra išorinio interfeiso adresas. Šis nukreipimas turi būti atliekamas kiekvieną kartą perkraunant tinlą, todėl geriausia šias komandas įkelti į sistemos startavimo failą.
Virtualaus serverio valdymas
keistiVirtualių serverių valdymas vyksta gana paprastai, naudojant paprastas komandas: start, stop, enter, delete.
Virtualaus serverio kūrimas
keistiVirtualiems serveriams kurti naudojant VServer paketą reikalingas internetas, todėl įsitikinkite, kad Jūsų serveris prijungtas prie jo. Įjungiame Linux sistemą su branduoliu, palaikančiu VServer. Kurti virtualius serverius turime su super administratoriaus teisėmis.
sudo -s
Kuriame virtualų serverį:
newvserver --hostname test1 --domain pavyzdys.lt --ip 193.169.100.2/32 --interface dummy0
Virtualaus serverio įjungimas
keistiPaleidžiamas virtualus serveris:
vserver start test1
Įėjimas į virtualų serverį
keistiPatekti į virtualų serverį galime:
vserver enter test1
Dabar galime vykdyti visas komandas, kaip ir paprastame serveryje, nepriklausomai nuo kitų veikiančių virtualių serverių.
Virtualaus serverio stabdymas
keistivserver stop test1
Virtualaus serverio šalinimas
keistivserver delete test1 Are you sure you want to delete the vserver test2 (y/N) y
Virtualių serverių statistika
keistiĮ virtualių serverių paketą įeina ir vserver-stat programa, kuri pateikia duomenis apie visus fiziniame serveryje veikiančius virtualius serverius. Iškviečiama komanda, turint super administratoriaus teises (sudo):
vserver-stat
Išvedama lentelė su veikiančiais virtualiais serveriais:
CTX PROC VSZ RSS userTIME sysTIME UPTIME NAME 40001 2 14.8M 1.4M 0m00s32 0m00s16 9m06s29 test1 40003 2 14.8M 1.4M 0m00s24 0m00s24 9m03s32 test3