ugrás a tartalomhoz

Weblabor exkluzív: hogyan működött az Extra.hu?

DotRoll · 2010. Nov. 29. (H), 16.33
Weblabor exkluzív: hogyan működött az Extra.hu?

A közelmúltban szűntek meg az Extra.hu utolsó szerverei és ezzel már nem titok a titok: eláruljuk, hogyan működött.

Adattárolás

Amikor megörököltük az Extrát, az adatok fele Promise Vtrak M500 típusú „buta” dobozokon, a másik fele pedig egy HP EVA 6000 SAN egységen lakott. Mivel a 4 db Promise doboz fájlrendszere, berendezését tekintve nem volt tökéletes, sürgős volt az EVÁ-ra való átköltözés. Az Extra folyamatos terhelése és a fájlrendszer lassúsága miatt a költöztető szkript több hónapig futott mire már csak néhány ezer, javarészt régi, nem használt felhasználó maradt a dobozokon. Ekkor azonban közbeszólt a sors: megsérült a fájlrendszer. Hiába kísérleteztünk az adatok visszaállításával, a JFS fájlrendszeren egy a fejlesztők számára ismert hibából kifolyólag a szuperblokk eltűnt, az adatok pedig elvesztek.

Mind az EVA, mind a Promise dobozok előtt fibre chanelen (FC) rákötött gépek osztották ki NFS-en a tárhelyeket.

Mentés

Az Extrán már akkor is volt mentés, amikor megkaptuk, ezt a szoftvert írtuk újra úgy, hogy párhuzamosan tudjon futni. Ezzel lehetővé vált az SQL szerverekről a napi, a tárhelyekről a heti adatmentés. Nagy újdonság volt az is, hogy a mentéseket FTP-n keresztül elérhetővé tettük, így a felhasználók szükség esetén gyorsan hozzájuthattak.

Adatbázisszerverek

Mivel nem találtunk általános megoldást az adatbázisszerverek redundanciájára, minden felhasználó az SQL szolgáltatás aktiválásakor fölkerül valamelyik szerverre. Mivel az SQL szerverek lelki világukat tekintve nem voltak túl bonyolult lények, hardverhiba esetén üzembe állítottunk egy másik szervert, és arra költöztettük át, vagy állítottuk vissza mentésből az adatokat.

Az adatbázisoknál gyakoriak voltak az olyan problémák, amikor egy felhasználó elfelejtett indexeket rakni egy-egy táblára, vagy megpróbált full table scannel végigmenni egy több százezer rekordot tartalmazó táblán. Ennek következtében egy terheltebb oldalnál nagyon gyorsan betelt az SQL szerverek maximális kapcsolatainak száma és utána már senki nem tudott kapcsolódni. Néhány kirívó esetben a szerveren elfogyott a memória, és betelt a swap is, így újra kellett indítani a gépet. Hogy ennek elejét vegyük, korlátoztuk az egy felhasználó által maximálisan nyitható kapcsolatok számát 100-ra. Ezzel a probléma gyakorlatilag megszűnt.

Frontendek

A webkiszolgálást Apache szerverek végezték modulos PHP-val forgatva. Ezek NFS-en keresztül látták a felhasználók webtárhelyeit. Eleinte még kezdőbetű szerint voltak csoportosítva, azonban egy általunk végzett fejlesztés következtében tudtuk véletlenszerűsíteni a helykiosztást. A biztonságért és a szolgáltatás panel beszúrásáért két Apache modul volt felelős, amit később részben átírtunk.

Load balance megoldások

A beérkező forgalmat eleinte egy több oldalt is kiszolgáló Cisco CSM irányította 4 proxy-szerverre bérelt szolgáltatás keretében. A proxy-szerverek akkor váltak szükségtelenné, amikor a frontendeket átalakítottuk olyanra, hogy saját maguk is el tudják dönteni egy oldalról, hogy blokkolva lett-e.

Egyik syn flood támadás alkalmával egy másik, a CSM-en lakó oldal is elérhetetlenné vált, ezért röviddel ezután építettünk két LVS szervert, ezzel függetlenítve magunkat a CSM-től.

Mit tanultunk ebből?

Amikor a DotRoll tárhelyet építettük, eleve szempont volt az, hogy ne használjunk hálózati fájlrendszert. Ugyan ritkán fordult elő, de az NFS képes volt az egész, redundánsan megépített rendszert elrántani magával. Éppen ezért az Extránál épített SQL hostokhoz hasonlóan egyéni kiszolgálókra koncentráltunk.

A másik igen fontos szempont az volt, hogy felépítéséből adódóan sosem működött megfelelően a kvótázás, és a PHP-ban rendszeresen megjelenő open_basedir bypass miatt folyamatosan frissíteni kellett, hogy ne nyíljon lehetősége bárkinek a másik könyvtárába belenézni. A DotRoll tárhely szolgáltatás kiépítésénél sokat kísérleteztünk azon, hogy lehetne a virtuális felhasználókat valódi felhasználókká tenni. Írtunk többek között egy komplett dinamikus konfigurációs modult az MPM ITK-hoz, de végül úgy döntöttünk, hogy valamilyen FastCGI variánst fogunk használni. Ez megoldja a szeparációs és kvótaproblémákat is.

A FastCGI-jal egyébként egy érdekes lehetőség nyílt meg előttünk, ami elsőre kissé meredeknek tűnt, ám a gyakorlati teszt során fényesen szerepelt, és ezért megmaradt. Minden felhasználónak szimuláltunk egy majdnem teljes Linuxot, amibe chroot-tal bezártuk. Ez nem csak a belépésére igaz, hanem a PHP futtatására is. Innentől kezdve igazából nem kellett félni az open_basedir bypasstől, mert minden felhasználó csak a saját környezetét látja – mindezt virtualizáció nélkül. Innen már csak egy lépés volt az SSH hozzáférés biztosítása, majd később a jelenleg tesztelés alatt levő felhasználónkénti Memcached.

 
DotRoll arcképe
DotRoll
A Docler Holding tagja. DotRoll domain regisztráció és minőségi webtárhely, VPS szolgáltatás.
1

Érdekfeszítő volt olvasni,

prom3theus · 2010. Nov. 30. (K), 11.51
Érdekfeszítő volt olvasni, köszi!
2

Pedig milyen jó volt az Extra.hu

morocztamas · 2010. Dec. 4. (Szo), 09.46
Már nincs egy jó ingyen tárhely sem.
3

Hát ez látod igaz :(

prom3theus · 2010. Dec. 4. (Szo), 20.56
Hát ez látod igaz :(
4

ingyenes tarhely

csabessz47 · 2010. Dec. 4. (Szo), 21.25
Ingyenes, de nem magyar. Viszonylag lassu, nagyon ritkan elofordul, hogy nem elerheto..... :/
De ingyenes :) (ja es ez csak tarhely)

http://www.000webhost.com/

Bar az extra.hu-t en is sajnalom...
5

Voltak bajok vele

janoszen · 2010. Dec. 4. (Szo), 21.34
Voltak bajok vele, amikor megszűnt az extra, olvastam, hogy egy Gallery2-vel már kivágták onnan az embereket. Már sok témában kifejtettem, ha nem hobbyprojektről van szó, akkor érdemes azt a havi néhány sör árát kifizetni egy rendes tárhelyre.
7

Nem olyan jó, ez jobb

morocztamas · 2011. Jan. 1. (Szo), 22.27
A 000webhot-ot én is kipróbáltam, sok mindenbe beleköt egy php kódnál, enyhén szólva hibás a rendszer.
A http://bplaced.net/ színvonalasabb nála, igaz nem használtam sokat, és valami német szöveg is keveredett az angollal nálam, de ismerősöm azt használta, azt mondta jó, (ő már nem használja), ajánlottam egy másik ismerősömnke és mióta megszűnt az extra, azóta azt használja.
6

Nehéz

janoszen · 2010. Dec. 4. (Szo), 21.38
Nehéz kérdés ez. Ha a fenti (műszaki) problémáktól eltekintünk, még mindig ott van az a kérdés, hogy hogy kezeled ezeket a problémákat:

  • A felhasználó ott hagyta a CMS-ét, a spambotok belenyomtak pár százezer bejegyzést és az azon futtatott selectek megölik az SQL szervert.
  • A felhasználó kevés forgalmat produkál, ellenben sok helyet foglal, tehát a reklámbevételek messze nem fedezik a "fogyasztását".
  • Egy site rengeteg sávszélességet eszik, de kevés számszerű látogatót hoz, ezért megint csak kevés a reklám bevétel.
  • A felhasználó, mivel nem keletkezik róla semmi értelmesen ellenőrizhető nyom (bankkártya, átutalás, telefonos befizetés, stb) illegális tevékenységre használja a tárhelyet.
  • stb.


Összességében a világ egyre inkább abba az irányba halad, hogy a szolgáltatók vagy komplett üzemeltetést adnak (Django, ROR, stb container), vagy csak a vasat (legyen az fizikai, virtuális vagy "cloud") és innen Neked kell megoldani.

Egy biztonságos és stabil tárhely-szolgáltatás építése és karbantartása folyamatosan sok energiát és tudást igényel. Mindig lesz olyan ügyfél, akinek valami nem megy, de a másik szolgáltatónál pedig ment, ami annak köszönhető, hogy egyszerűen túl sok komponense van a feladatnak. Pontosan ezen komponensek csökkentése érdekében válik szét a piac, így lesz jobb a szolgáltatás a flexibilitás rovására.