Xen 4.4 Debian Jessie howto

Nemrég telepítettem Xen VPS-eket Debian Jessie-n. Gondoltam leírom a tapasztalatokat. Egyfelől, hogy más ne szívjon azzal, amivel én, másfelől ide lehet majd kommentálni, hogy mit szúrtam el, had tanuljak én is.

A hardver egy Dell T110 II volt 2db hw raid1-be kötött 500G-s vinyóval. Annak idején sokáig volt bent saját szerverem, de most már csak bérelt szerver, vagy VPS. Volt hogy éjfélkor jött a telefon, hogy kidöglött a táp, azonnal menjünk cserélni, én meg épp vidékről próbáltam intézni valakit, aki megoldja. A bérelt szerverre garanciát vállal a szolgáltató, bármi tönkremegy, azonnal cserélik, csak egy telefonba kerül. Bármikor kérhető, lemondható, fejleszthető, és a sima hostinghoz képest pár ezer Ft a különbség. Egyszerűen a legtöbb esetben nem éri már meg a saját hardver, semmilyen szempontból.

Az 500G-s virtuális vinyón (a raid miatt ugye csak 1 látszik) csináltam egy 80G-s rendszer particiót, némi swap-et (nem tudom, hogy szokás-e swap-et raid-re tenni, de mivel csak az volt, nem volt sok választás), a maradék >400G-t pedig LVM kötetnek jelöltem meg. Felment szépen a jessie, reboot, és el is indult szépen. Hálózat konfig, network restart (kicsit bénáztam, mert resolv.conf-ban elfelejtettem beállítani a névszervereket), és ment minden jól.

A követező lépés az lvm konfig. Van erre jó howto: https://wiki.debian.org/LVM, úgyhogy csak a lényeget írom. A >400G-s particióból csináltam pv-t, a pv-ből vg-t. Az lv-ket nem kell létrehozni, mert van xen-hez nagyon jó script, ami megcsinálja a virtuális géppel együtt, de erről majd írok később. 

A Xen-t ez alapján a howto alapján teleptettem: https://wiki.debian.org/Xen . Nem írok le minden lépést, mert itt le van írva, csak zanzásítva a lényeget. Xen csomagot telepítsük, dom0-nak dedikáljunk egy processzor magot, és 1G ramot, állítsuk be grub-ban a xen konfigot defaultnak, majd reboot után már a xen fog bebootolni, és dom0-ban találjuk magunkat. Szóval ez sem egy nagy varázslat.

Amivel aztán sokat szívtam, az a hálózat. Kell csinálni egy bridge-et. Én br0-nak neveztem el az enyémet. Mivel statikus ip-je van a host-nak, ezért eth0-hoz be volt az konfigurálva, és akármit csináltam, sehogy nem akart menni. A trükk végül az volt, hogy az eth0-t át kell álltani manual-ra és a bridge-nél kell megadni az ip-t. Mivel igazából programozó vagyok, rendszergazdának (vagy minek hívják ezt most? szerver nindzsa?) a legnagyobb jóindulattal sem nevezném magam, ezért az okát nem firtattam nagyon a dolognak, megelégszem annyival, hogy így működik, mert csak.

Ha megvan a bridge, utána már nem olyan bonyás a dolog. Van egy xen-create-image script, ami mindent megcsinál. A xen-tools.conf-ba meg kell adni az alapbeállításokat, pl. hogy melyik vg-re hozza létre a virtuális géphez az lv-t, meg hasonlókat, kell neki egy hostnév, egy ip, talán más nem is, és puff, létrehozza a virtuális gépet. Én annak idején ezt kézzel csináltam, debootstrap-el, chroot-al, meg hasonlókkal. Ehhez képest ez a script tiszta windows, ahol megnyomod a gombot, ozt nesze, ott egy vm. Az /etc/xen-be létrejön egy <hostnev>.cfg, és már indíthatod is a vm-et xl create <hostnev>.cfg-vel. Benézni pedig xl console <hostnev>-el tudsz. Ha minden jól ment, akkor bent is megy a net. Telepítesz be ssh-t, és már kívülről is el lehet érni.

Bónusznak még leírom hogy működik a vps backup, mert az azért jól szokott jönni, és sikerült egy (szerintem) jó megoldást találni. Még a szolgáltató ajánlotta, hogy tegyünk be egy külső USB vinyót. Találtam is egy jó fajtát (1Tb sigate backup plus). Ez fel van csatolva /backup-ba. Az LVM tud egy csodálatos dolgot, aminek snapshot a neve. Egy felcsatolt lv-ről csinálhatsz egy snapshot lv-t, ami igazából nem foglal helyet a vinyón, mert a rendszer ide csak a változásokat jegyzi fel. Tehát egy pillanat alatt csinálhatsz egy másolatot mondjuk egy 200G-s particióról, ami igazából nem jelent másolást, de minden szempontból úgy kezelheted, mint egy másolatot. Mivel ez csak az eredeti lv-t tartalmazó vg-re lehet csinálni, ezért fontos még az elején gondolni rá hogy a vg-n hagyj pár G helyet erre! Ha megvan a snapshot, akkor simán dd-vel és gzip-el kimásolatod egy fájlba a backup vinyóra. Mikor próbáltam, egy 200G-s partíciót nekem <1 óra alatt kimásolt USB vinyóra. Ez olyasmi, amit az ember hetente azért megengedhet magának. Semmit nem kell leállítani, nem annyira erőforrás igényes, és nem is tart túl sokáig. Ráadásul pl. egy ilyen webszerver esetén ilyen full backupot elég rendszerfrissítések után csinálni, napi szinten elég a mysql-t, a webtartalmat, levelezést, és hasonlókat menteni, mondjuk simán tar+gzip-el. Ezek elfutkosnak a háttérben esténként. Persze egy USB vinyóra azért senki ne bízza az életét. De semmi gond, ott van nekünk az Amazon S3. Kell regisztrálni, létrehozni egy bucketet, és infrequent storage class-al eltárolni a fájlokat (vagy lehet glacier-be is, ha sajnáljuk rá a pénzt, de cserébe elfogadjuk, hogy adott esetben pár órát kell várni, míg előkaparják az adatainkat a pincéből). Infrequent Access Storage-el számolva 100G backup terület 1,25$ (kb. 300 Ft) havonta. Nem ez fog földhöz vágni. Feltölteni nagyon egyszerű a dolgokat, mert van egy parancs soros interfész S3-hoz (https://aws.amazon.com/cli/), ami simán tud fájlokat felmásolni, sőt még sync-elni is tud. Felnéz az S3-ra, aztán a megadott könyvtárra, és csak azokat a fájlokat másolja fel, amik változtak. Szóval legegyszerűbb, ha szépen összerakjuk a backupot az USB vinyóra, aztán sync, és hadmenjen. Mindig lesz egy másolatunk a felhőben (occsóér) az USB vinyóról, így ha beüt az atomapokalipszis, és a szerver terem helyén csak egy csúnya nagy kráter marad, akkor is van backupunk.

Hát, röviden ennyit akartam írni a témáról. Remélem lesz akinek a segítségére lesz ez a kis írás, illetve aki érez rá késztetést, lehet bekommentelni a jobbnál jobb ötleteket, amiket előre is köszönök. 

#blog