ARM-re költöztünk

illusztráció: építési terület tábla
Talán észrevetted, talán nem, de az utóbbi néhány napban elköltöztünk. Néhány száz kilométerrel és pár szerverrel nyugatabbra lakik néhány napja az oldal és, ha ez nem lenne elég, még minket is elért a zöld informatika. De ne szaladjunk ennyire lőre, lássuk, mi is történt az elmúlt hónapokban.

Előzmények

A költözés, legyen az „digitális”, szerverről szerverre, vagy fizikai lakásból lakásba, mindig macera. Az ember legalább kétszer átgondolja, hogy biztosan menni akar-e. Mi is pont így tettünk. Nem új keletű az oldal másik szerverre mozgatásának az ötlete, egy ideje már érlelődik bennünk.

A lacyc3eu számára a legfontosabb tényező egy szerver esetében a megbízhatóság. Ugye, mit érünk, ha pont akkor állunk le, mikor pont szükség lenne ránk? Az utóbbi időben ez volt az egyik kulcs momentum, ami arra sarkallt bennünket, hogy váltsunk. Az oldal egy saját magam konfigurált VPS-en fut. Egy ideig (viszonylag) elégedett voltam azzal a céggel, ami számunkra ezt biztosította. Bár (relatív) drága volt a szolgáltatás, mégsem váltottam, mert hozta, amit elvártam tőle: megbízhatóságot, kiszámíthatóságot. Legalább egy héttel, de sokszor egy hónappal korábban megkaptam az ütemezett karbantartásról szóló értesítést, a karbantartás folyamán várható összes lehetőséggel együtt (virtuális gép újraindulása, a leállás időablakában automatikus kikapcsolása, elérhetetlenné válása stb.). Normális szolgáltatásért hajlandó vagyok az átlagnál többet fizetni. Nekem ennyit megér a kiszámíthatóság.

illusztráció: EKG
Azonban néhány hónapja ez megváltozott. Olyan vállalhatatlan problémák adódtak, melyekre az elmúlt években nem volt példa: megtelt a VPS alatti tároló, aminek egyenes ági hatása, hogy a gépen is I/O hibák jelentkeztek. Vagy említhetném azt, hogy a gép valamilyen oknál fogva kikapcsolt állapotba került. De se egy naplóüzenet a VPS konzolban, se egy e-mail értesítés, hogy mi történt, semmi. Csak off és kész. Ezt a kikapcsolgatást többször is eljátszotta a gép, ami után az volt a különösen idegesítő, hogy a rendszer nem bootolt be. Az különösen idegesítő, mert akkor az ember álljon neki hibát keresni…, mindezt nyilvánvalóan csúcsidőszakban. Miután ezt eljátszották néhányszor, elpárolgott az eddigi bizalmam feléjük, szóval ha nem is teljesen aktívan, de elkezdtem alternatívákat keresni.

A következő szög a koporsóban a VPS rugalmas bővíthetőségének teljes hiánya. Feltételeztem, hogy ha (még) többet fizetek nekik, akkor jobban figyelnek majd rám és visszatér az eddigi bizalom. Ismerjük azokat a terveket ugye, amik gondolatban jól működnek, a valóságban meg sehogy. Nos, ez is ilyen volt. Én csak memóriát és diszket akartam bővíteni, de a „csomagoknak” köszönhetően csak teljes „hardvert” tudok fejleszteni, nyilván jóval drágábban. Olyan ez, mint a kábeltévés csomagok: hiába szeretnél az alapcsomaghoz még csak 1 db csatornát hozzárendelni, azt nem engedik. Vidd az egész „Családi” vagy „Extra” csomagot mindössze 4000 Ft felárral. Aha, hogyne…

Nem is lenne olyan nagy gond a RAM és a lemez szűkössége, hiszen az utóbbi időben megtanultunk takarékoskodni mindennel. Kinőttük a helyet, ez kétségtelen, de egyáltalán nem lenne sürgős a mozgás ha…, nos igen, ha meglenne az eddigi megbízhatóság. Így viszont teljesen más a leányzó fekvése.

Keresés

Új hely kell, lehetőleg nem sokkal drágábban mint az eddigi (olcsóbbról nem is álmodtam) és minimum ilyen, de inkább magasabb felszereltséggel. Keresés alatt azt kell érteni, hogy a legtöbb VPS szolgáltató ár-érték arányát hasonlítottuk össze. Komponensről, komponensre. Terveztünk előre és hátra. Végeredménynek az jött ki, hogy inkább több memóriára és tárhelyre van szükségünk, mint számítási teljesítményre. Mivel a legtöbb helyen előre elkészített csomagok vannak (vagy a régi tárhelyünkhöz hasonlóan rugalmatlanok a lehetőségek értelmes áron belül), ezért ezekből próbáltuk kiszúrni a legjobbat.

Megoldás

illusztráció: okostelefon
Problémáinkra egy lehetséges megoldás onnan jött, ahonnan nem is gondoltuk volna, hogy komplett segítség jöhet: az ARM-től. Igen, attól az ARM-től, ami jó eséllyel az okostelefonodban lévő processzort, esetleg grafikus egységet is tervezte. Nevetséges, gondolhatnád és gondoltuk mi is, hogy gyakorlatilag (és némi csúsztatással) egy modernebb okostelefon hardvere szolgálja ki a weboldalunkat. Egy ilyen egység mégis, hogyan is lenne rá képes. Persze, ott a Raspberry Pi immár harmadik iterációja, de neki is megvannak a komoly korlátai..

Először nevetnek rajtad…

Az ARM gondolat olyannyira viccesnek ígérkezett, hogy kíváncsiak lettünk a képességeire. Hála a szolgáltató által belengetett ingyenes próbahónapnak, úgy gondoltam, hogy fájdalommentes tapasztalatszerzés és szórakozás vár rám. Az előre elkészített rendszer lemezképek közül természetesen az Ubuntut választottam, abból a 14.04 LTS-t. Ha már tesztelünk, ugye, legyen következetes. Majd a szokott módon (és kellemes sebességgel) húztam fel egyik komponenst a másik után: nginx, PHP, MySQL és Drupal. Gondoltam, hogy jól el fog mazsolázni a kis doboz a telepítéssel. Nos, nem igazán. Minden legalább olyan gyorsan (ha nem gyorsabban) történt, mint a meglévő szerveren. A mosoly látványosan az arcomra fagyott, úgy le lettem nyűgözve. Persze, egy LNMP stack + Drupal telepítése még messze van egy napi használatban lévő, nyúzott kiszolgálótól, de jó kezdés.

Tesztelni – Tesztelni – Tesztelni!

Következő lépésen nyúztam a rendszert viszonylag tisztességesen: látogatókat szimuláltam, Drupal modulokat és egyéb olyan dolgokat telepítettem, ami kell. A kis ARM pedig szorgalmasan tette a dolgát. Nem is igazán éreztem rajta (a kapcsolatfelépítési időn kívül) hogy ő más lenne, mint a többiek. Mire észrevettem magam, kvázi minden felkerült a tesztgépre és ment. Egy jó nagy adag hümmögés után megállapítottam, hogy tetszik.

Ezek után Charmed nagyon bizakodó volt. Gyerünk, csináljuk, menni fog, minden rendben lesz, hagyjuk ott a régit! Ami engem illet, én még mindig szkeptikus voltam, hogy tényleg minden menni fog. Éppen ezért úgy döntöttem, hogy a költözés szépen, fokozatosan történik. Első körben azokat a szolgáltatásokat viszem át, melyek részei az oldalnak, melyek nagyon jó ha betöltenek, ugyanakkor egy rövidebb ideig tartó kiesésük még nem okoz katasztrófát. Így szépen, fokozatosan terheljük a leendő gépünket, és ha „kikoppan” tudni fogjuk.

Költözés illusztráció: szekrényt cipelő emberek

Nem koppant ki

Legnagyobb meglepetésemre, a kisegítő szolgáltatások átköltöztetésekor nem történt semmi. A grafikonokon látszik, hogy használva van, gyűlnek a statisztikák. De semmi olyan, ami miatt igazán aggódnom kellene. Ami azt illeti, a HTTPS kapcsolat felépítése viszonylag lassú (emiatt némileg még aggódom), ugyanakkor miután felépült a kapcsolat, nincs (szerintem) érezhető különbség az ARM szerver és a régi közt.

A következő nagyobb lépés a főoldal áthelyezése az új helyre. Ugye lényegében a lacyc3.eu generálja a terhelés nagy részét. Gondolkoztam round-robin DNS-sel „rácsepegtetni” a terhelést az új helyre, de az eddigi eredmények olyan megbízhatóak voltak, hogy egy kis biztatás után beadtam a derekam: rendben, próbáljuk meg, de ha…

Nincs ha

A teljes főoldal átköltözött, és ahogy mindenkinél frissültek a DNS bejegyzések, úgy lett egyre nagyobb a próbatétel. Némi utólagos gyorsítótár és MySQL hangolás után a kis ARM rendszer úgy szolgálja ki az oldalt mint a kis angyal. Nem gondoltam volna, hogy ilyen ügyes lesz.

Költözés illusztráció: holmik dobozban
A következő lépés a webstatisztika költöztetése lesz. Ez lehet még nagyobb falat, főleg ami az esetleges adatbázis frissítéseket illeti. Reálisan elképzelhetőnek tartom, hogy némileg több törődést igényel majd a hibátlan működése mint eddig. Ha megjöttek az első tapasztalatok, akkor annak eredményét majd frissítésként csatolom a cikkhez.

Mennyi az annyi?

Ilyen jól beharangoztam a kis gép teljesítményének meglepetését, itt az ideje, hogy beszéljek a „száraz” tényekről is.
CPU: Marvell PJ4Bv7 processzor [562f5842] revision 2 (ARMv7) 4 mag.
Memória: 2GB
Háttértár: 50 GB SSD (NFS-en keresztül kiajánlva)
Mindezt az eddigi költségek harmadáért. A hülyének is megéri, nekünk pedig pláne.

Hogyan tovább?

A szolgáltató vízszintes skálázódásra van berendezkedve, azaz sok kis gép egy (vagy néhány) nagy helyett, ami a rendszerünk felépítéséhez tökéletesen passzol. Az eddigi tapasztalatok azt mutatják, hogy a kis gép leginkább a TLS kapcsolat felépítésével foglalkozik a kelleténél többet. Az összesített rendszerterhelés adatai alapján az nginx körülbelül 10x annyi processzoridőt evett, mint a PHP és több, mint 9x annyit, mint a MySQL. Ebből következik, hogy ha teljesítménygondok jelennek meg, akkor az első lépésben a TLS-t kell leválasztani minden mástól. Ezen felül is vannak tervek, hogy mit fogunk csinálni, ha olyan dinamikusan bővülne az olvasótábor, hogy újabb részegységek kiszervezésére lenne szükség. Nagyobb strukturális átalakítások nélkül úgy gondolom, hogy szükség esetén egész hamar képesek lehetünk a jelenlegi látogatásokhoz képest körülbelül háromszoros olvasótábor kiszolgálására is. De ez még a jövő és az eddigi trendek alapján az igazán távoli jövő.