Ötletelni kezdtem, hogyan lehetne olyan kicsi szerverparkot építeni, ami jó egyensúly a viszonylag olcsó, megbízható és gyors között, és elmegy egy irodának, ahol elég a 99%-os rendelkezésre állás. Sokszor fogom használni a viszonylag szót, mert én is tudom, hogy határ a csillagos ég.
Az alapfelállás legyen mondjuk 15 "szerver" (ne menjünk bele, hogy ki mit hív annak, vannak szintek), szerintem elég sok helyen jellemzőek az ilyesmi számok. Az a bajom, hogy nagyon heterogén szerverek szoktak összejönni, és a redundanciára csak nagyon speciális, leginkább alkalmazás szintű módszerek a jellemzőek. Pl. az X gép az apache webszerver, az Y gép az Exchange szerver, tök más a hardver kiépítésük, az X gép redundanciája valami Z load balancer szerverrel van elintézve, az Exchange-hez egy DAG van, csak egy darab virtuális hoszt szerver van, amin fut néhány developer szerver, stb. Ilyen kis számosságú szerverpark esetén túl nagy kiadás lenne mindenből rendesen kettőt beállítani, egyszerre gyorsat is meg még inkább. Marad az, hogy vegyes lesz a rendszer, sok az SPOF, és ha valami elromlik, akkor van vele egy kis szívás, nehezen átpakolható egyik szolgáltatás a másik gépre. De a kis számosság miatt ez ritkán fordul elő, tehát még mindig jobban megéri így. A heterogén elrendezés miatt a terhelés is nagyon egyenetlen, sok gép nincs kihasználva, mások meg nagyon is.
Az jutott eszembe, hogy felhő jellegű megoldást egész olcsón meg lehetne építeni egész jóra. Mellőzzük a drága és jó enterprise megoldásokat, meg az automatikus failovert, meg minden ilyesmit. Nem kell kinevetni, egyszerűen nem mindenki engedheti meg, hogy N darab milliós szervert bepakol, enterprise support, mittudomén, és no para, atomháborút is túlélünk. Ez most az összes többi embernek szól. Összesen az a minimum elvárás, hogy a kieső elemeket minimális szívással lehessen helyettesíteni, de még manuálisan, és teljes halál helyett inkább a teljesítmény degradálódásával még maradjon életben a rendszer. Talán viszonylag szemét alapanyagból is lehet viszonylag jó rendszert összerakni, ha okosan csináljuk, volt már rá példa a történelem során.
Elsőként meg kell oldani a storage-ot. 15 oprendszer elfér 500 GB-on, és mondjuk 3 TB nagyon kritikus adattal számolva 4 TB az adat, RAID1-ben még a leggagyibb 100 ezer forintos PC is simán elviszi 4x2 TB SATA diszkkel. Ebből a storage gépből vegyünk két egyformát, és csináljunk egy blokk szintű szinkront. Ez eddig olcsó. Ha egyik elromlik, átállunk a másikra, pár klikk, ez már viszonylag megbízhatónak is elmegy. Mitől lesz viszonylag gyors? Van olyan szoftveres megoldás, amivel a két storage gép párhuzamosan elosztja a terhelést? Vessünk be RAID0-t és/vagy több kisebb diszket? Dobjunk be 1-2 SSD-t cache-nek? Sok olcsó RAM? Ja és persze a storage jellegű gépből kell egy 3. is, kicsit nagyobb tárhellyel, viszont kisebb redundanciával, pl. RAID5, backupnak. Ahogy halad előre az idő, jelennek meg a 3, 4, X TB-os diszkek, tehát ha nincsenek extra igények, akkor a mindenkor aktuális desktop hardverrel bővíthető még sokáig.
Aztán vegyünk 3 db PC-t, viszonylag jobb számítási teljesítménnyel és RAM-mal. Nem kell ma már hozzá óriási befektetés, hogy egyszerűbb alaplapba sokmagos processzort meg 32 GB RAM-ot belepakoljunk. Darabonként 200 ezer forint, és már lehet sokat mondtam. Mind a hármon virtualizálunk. Manuálisan elosztjuk, hogy az elsőn fut 5 gép, a másodikon is 5, a harmadikon is 5. Megvan mind a 15 "szerver", több gép nem lesz, tehát eddig ez is olcsó. Ha az egyik megdöglik, akkor a futó gépeket elosztjuk a másik kettőn, csak 50-50% extra terhelés, és másnapra veszünk egy újat. A kis számosság és viszonylag alacsony elvárt rendelkezésre állás miatt ez kivárható időtartam. A storage ugyanaz a gépek alatt, tehát semmiből se tart átmigrálni egy virtuális gépet. Kicsit lassabban, de el fog döcögni a rendszer, esetleg 1-2 kevésbé használt gépet leállítunk. Ha tud ilyet mondjuk az OpenStack vagy a VMWare vagy bármi, akkor felőlem automatikus is lehet a failover, de bőven elég a manuális is. Ez lefedi a megbízhatóságot. A gyorsaság meg itt kevésbé problémás, hacsak nem csillagászati kutatásokat végzünk, a processzorok sokat fognak unatkozni, és a RAM-ok is inkább cache-elt adatokkal lesznek tele.
Túl sok tapasztalatom ilyen téren nincs, de nekem érzésre úgy tűnik, hogy ez nem kerül sokkal többe, mint az eredeti szerverpark, viszont sokkal homogénebb, a döglött hardverek kiváltása sokkal egyszerűbb, és a teljesítmény is sokkal jobban el van osztva. Szerintetek működhet egy ilyen? További ötletek?