====== Linux LAMP szerver migráció OpenVZ virtualizációra ====== Az alábbiakban igyekszem összefoglalni azokat a szempontokat és teendőket, melyek egy [[http://en.wikipedia.org/wiki/LAMP_(software_bundle)|LAMP]] szoftverekkel használt, több külsős cég számára teljes internetes megjelenést biztosító Linux szerveren az [[http://wiki.openvz.org|OpenVZ]] "konténer alapú" virtualizációs technológia bevezetésével járnak. ===== Miből ===== Kiindulási rendszerünk tehát egy általános Linux web- és mail-kiszolgáló. Egy ilyen gép jellemzően számos - egymástól részben független - feladat ellátására szolgál. Ezek jelen dokumentum tekintetében a következők: - HTTP - a gép elsődleges feladata a rajta futó céges weblapok kiszolgálása, ez gyakran több virtuális hostot jelent. Jelen dokumentumban az Apache web szerver felhasználását feltételezem. - FTP/WebDAV - a webfejlesztőknek és tartalomfelelősöknek lehetőséget kell biztosítani a weblapok anyagának kezelésére illetve fejlesztés alatt álló webtartalmak elkülönítésére. Több felületen is elérést biztosíthatunk ezekhez a tartalmakhoz. Közös követelmény, hogy a webszerver kiszolgálási környezetét a lehető legkisebb mértékben legyenek képesek módosítani, vagyis lehetőleg egy adott felhasználó ne férjen hozzá mások adataihoz és saját anyagainak Linux jogosultságait se legyen lehetősége befolyásolni - ezek miatt a követelmények miatt az SSH/SCP rendszer használatát ezen a területen nem vesszük számításba. - PHP - a rendszeren futó weblapok elsődleges motorja, a szerver oldali alkalmazások virtuális hostokra elkülönített kiszolgálásáért felelős. - SMTP - a rendszer egyéb felhasználói általában levelezési rendszert igényelnek, amihez gyakran társul spam- és vírusszűrés, POP3 és IMAP mailboxok valamint esetlegesen egy webmail felület is. A levelezési rendszer kialakításához a Postfix és Dovecot szoftverek felhasználása mellett a ClamAV, MailScanner, procmail és SpamAssassin kerül majd terítékre. - MySQL - a rendszer hátterét képző adatbázis kezelésére is szükség van. Jelen dokumentum nem foglalkozik más SQL rendszerek (PostgreSQL, Firebird, stb...) konfigurációs problémáival. - DNS - a weblapokhoz és céges levelezéshez általában saját domain nevek is társulnak, ezek kiszolgálását el kell végezni. Esetünben a bind9 kiszolgáló kerül számításba. ===== Miért ===== Mire jó ez az egész? Miben különbözik egy klasszikus módon telepített Linux webszerver egy OpenVZ alapú rendszertől? Első sorban az alábbi szempontok alapján javaslom az áttérést: - **Biztonság** - a fent felsorolt szoftverekhez tartozó adminisztratív és felhasználói teendők a lehetőségekhez mérten elkülönítendők. A legtöbb esetben biztonsági szempontból az a célszerű, ha a rendszer különböző elérési pontjai eleve elkülönítve futnak, vagyis például egy hibásan megírt weblapon történő kódfuttatás közvetlenül nem érintheti a levelező rendszert vagy az adatbázis kezelő szoftvereket. A biztonság egy másik aspektusa a szolgáltatásbiztonság. Virtualizáció mellett könnyen nyílik lehetőségünk az egyes szolgáltatások komplett archiválására és szükség esetén másik fizikai számítógépen való újraindítására. - **Adminisztráció** - egy elkülönített szoftverek karbantartása egy bizonyos összetettség felett egyszerűbbé válik ha az egyes alkalmazási területek operációs szempontból is külön virtuális gépekben foglalnak helyet. Könnyebbé válik a rendszer frissítése, konfigurációja, ráadásul az egyes változtatások előzetesen körültekintően tesztelhetők is. - **Terheléselosztás** - egy bizonyos terhelés fölött egyes szolgáltatások prioritását a többiekéhez képest csökkenteni lehet. Például a természeténél fogva kötegelt feldolgozást végző SMTP szolgáltatás prioritása egy streaming web tartalomhoz képest jóval alacsonyabb is lehet. Az OpenVZ segítségével lehetőség nyílik a Linux adta natív erőforrás-megosztási eszközöknél jóval finomabban szabályozni, melyik szolgáltatásnak mennyi erőforrás jusson. Szükség szerint jóval egyszerűbbé válik az egyes szolgáltatások külön dedikált számítógépre való költöztetése is. ===== Mit ===== Az elkészíteni kívánt rendszer elsődleges operációs rendszere ("Hardware Node" - //HN//((ezen kívül még //HW//, //VE0// és //CT0// néven is nevezik))) csak a virtuális gépek futtatását és az alapvető rendszergazdai felületet nyújtó SSH szolgáltatást végzi, a HN által futtatott virtuális környezet az alábbi részekből áll (minden egyes pont egy külön virtuális gépet ("Virtual Environment" - //VE//((nevezik még a "Container" szó alapján //CT//-nek is))) jelöl) - a felsorolás egyben a VE-k standard indítási sorrendjét is megadja: - LDAP felhasználói adatbázis - feladata a rendszerben ismert felhasználók központi tárolása és adminisztrációja. Erre azért van szükség, mert az egyes VE-k karbantartása meglehetősen nehéz lenne, ha egy konkrét személyez tartozó nevet és jelszót az összes szolgáltatás esetében külön kellene felvenni és módosítani. Az LDAP segítségével hálózati azonosítási szolgáltatást nyújtunk a VE-ken futtató helyi - virtuális - hálózaton. Ez későbbiekben lehetővé teszi az egy darab HN-ről a több párhuzamosan futó HN-re való könnyebb áttérést is (vö: terheléselosztás). - DNS szolgáltatás - elkülönítése azért is célszerű, mert általában nem igényel a központi adminisztrátoron kívül más felhasználók (pl. ügyfelek) számára hozzáférést. - SMTP szolgáltatás - egybekötve a SPAM- és vírusszűréssel, valamint a felhasználói mailboxok POP3 és IMAP protokollon való szolgáltatásával. A levelek fogadását (Dovecot) és küldését (TLS + SASL auth) LDAP alapú azonosítás előzi meg. - MySQL (és más SQL szerverek) - Linux operációs rendszer szinten - a DNS-hez hasonlóan - ez sem igényel külön felhasználói hozzáférést, hiszen az SQL szerver saját felhasználó-adminisztrációval rendelkezik. A MySQL sajnos jelenleg nem támogat semmilyen más (pl. LDAP) azonosítást, ezért ezen a ponton mindenképp kettős felhasználó-adminisztrációra kell számítani (ahogy egyébként "normál" esetben is). - HTTP - az előző VE-k szolgáltatásaira építve ezen a ponton megkezdődhet a weblapok kiszolgálása. Ebben a VE-ben fut az Apache és a PHP, biztonsági okokból célszerűen kiegészítve az [[http://mpm-itk.sesse.net/|ITK MPM workerrel]]. Az esetleges WebDAV elérés az LDAP szolgáltatás segítségével valósítható meg. - FTP - a céges tartalomfelelősök számára nyújtott fájlátviteli szolgáltatás célszerűen egy újabb VE-be kerül. A jogosultságkezelésről az FTP szerver az LDAP alapján gondoskodik. ===== Hogyan ===== A dokumentumnak ez a része még fejlesztés alatt áll. Az itteni változtatások feltehetőleg visszahatnak majd a fenti szövegrészekre is! ==== Előkészület ==== A rendszer előkészítésének első lépése az OpenVZ virtualizációs technológia telepítése. Ehhez legalább a kernel lecserélésére és a szükséges adminisztrációs eszközök (vzctl, stb...) feltelepítésére van szükség. Ezt követően szükség van a tervezett virtualizált rendszer alapjainak lefektetésére. Első feladat az LDAP VE létrehozása és a rendszer felhasználóinak átemelése az LDAP adatbázisba. Ezt a virtualizált rendszer építése során még többször meg kell tenni, hogy az eredeti felhasználói adatbázis változásait követni lehessen, ezért ehhez egy migrációs script megírására lesz szükség. A következő lépés a DNS szerver külön VE-be való költöztetése, mely nem okozhat elvileg különösebb problémát, mivel egy elég zárt konfigurációval rendelkező, önálló szolgáltatásról van szó. A DNS szerver konfigurációját ki kell egészíteni a helyi VE-k privát IP címeit tartalmazó forward és reverse címeket tartalmazó segédzónával, mely segítségével a VE-k egymás közti kommunikációja függetleníthető azok IP címétől.