Az internet tele van sikersztorikkal, ami most következik az nagyon nem az. Most elmesélem, hogyan basztam ki magammal, de nagyon. A történetemben igyekszem megfogni a saját hibáimat okulásként. A történet kedden 16 órakor kezdődött, de még nincs teljesen vége.
Már nagyon régóta aktuális lett volna a szerverem lecserélése, de ami működik azt kár basztatni, meg a fene se tudja, hogy a fürdőkádgörbe melyik részén járok. Mivel igény jelentkezett arra, hogy kellene egy Windowsos VPS, amit RDP-vel használnék, gondoltam itt az ideje, a szerver upgrade-nek.
Alapvetően eddig mindig úgy csináltam -amikor megvettem egy új szervert-, hogy kapott egy szűz telepítést. Ezt követően egy stressztesztet. Majd szépen lassan belaktam és átköltöztettem a szolgáltatásokat. Most nem így tettem.
Mielőtt megkapnám a kioktatást, el kell mondjam, ritkán veszek szervert. Minden vásárláskor újratanulom a dolgokat. A kiválasztott Dell kereskedőt meglátogatva, ledemózta nekem, hogy felesleges az előbbi óvatos procedúrámat végigcsinálnom. Csak állítsam le a 310-et, diszkeket rakjam át a 450-be, raidkártyával olvassam be a konfigot a hdd-ről és boldogság lesz. Ez nagyon tetszett. Fáradt voltam és semmi kedvem nem volt a szokásos tortúrához. Aznap hajnal háromkor keltem, ekkor meg már délután volt. Nem gondolkodtam, megvettem a gépet és irány a hosting cég. Közben a munkaidő letelt nálunk, gondoltam ideje a cserének. A csere pont úgy ment, ahogy a demón láttam. Nagyon büszke voltam magamra, hogy képest voltam átszerelni 4 diszket és a BIOS-ban beolvasni a raid konfigot. 🙂 Igazi mérnöki tudomány. 😛 A rendszer szépen elindul, volt egy megasas kernel modul error, de ment mindent. Gondoltam ezt majd távolról meggyógyítom. Gondoltam. Naivan.
Mire az Expo térről a Moszkvára értem már nem volt elérhető a szerverem. Nocsak. A biztonság kedvéért jeleztem előre, hogy ne várjanak otthon vacsival, a dolgozószobámban fogok enni, mert valami nagy szar lehet a szerverrel.
Menedzsmentkártya felületéről bootoltam, és picit több hibaüzenetet láttam. Huha. Ez nem lesz jó. Beléptem, de valami kis gond mindig volt. Bármit csináltam akadályokba ütköztem. A hibaüzenet egyre több lett, majd kb 1 óra után, már userként nem engedett semmit, már belépni sem. Ok, akkor restart. Ekkor voltam utoljára beloginolva a rendszerben. Ezután soha többé nem tudtam belépni. ;(
Mielőtt bárki aggódna, volt mentés 3 másik helyre, de az utolsó mentések aznap hajnaliak voltak.
Amikor realizáltam, hogy ebbe a rendszerbe már nem fogok tudni belépni, akkor bebootoltam egy live rendszert.
Az alábbi meghajtó fikció, a módszer nem:
Live Linux start:
mount /dev/sda1 /mnt
cd /mnt
mount --bind /dev dev
mount --bind /proc proc
mount --bind /sys sys
mount --bind /run run
chroot /mnt
Szuper. Látok mindent. Most root vagyok, de legyek oregon
su oregon
Oops! Semmit sem tudok csinálni, a saját home alkönyvtáraiba sem tudok belépni. Nincs hozzá jogom. WTF!? Ok, akkor root-ként adok rá 777-et, megint su oregon, megint ugyanaz. Semmihez sem férek hozzá userként. Semmit sem tudok futtatni, se könyvtárba belépés, se /usr/bin-ből bármi. A /usr/bin könyvtárba sem tudtam belépni. Na itt kapott el az ideg. Tudtam, hogy a legfontosabb, hogy egyek és, hogy megnyugodjak. Ideges ember ritkán hoz jó döntéseket.
Akkor realizáljuk mi is van itt és most. Van egy rendszerem ami nem bootol (belefagy), és userként nem érem el chroot alól sem. Jelenleg látom őt rootként live alól és kb semmi más. Első gondolatom az volt, hogy a jogok elbaszódhattak valami miatt, de ezt elvetettem, mert miután jogot adtam, sem tudtam userként belépni. Rám tört a para, hogy az új gépnek van valami alacsony HW szintű biztonsági problémája egy 0day pedig megtalált.
Legjobb döntés ilyenkor a mentés, mivel fogalmam sincs mi van. Megkezdtem a friss inkrementális mentést, majd egy full backupot távolra.
Már éjfél volt, 5 órája birkóztam a szerverrel. Jött az ötlet, hogy visszarakom a HDD-ket a régi gépbe. (Perc H755 -> Perc H700)
Kocsiba be, irány az Expó tér. Már nem láttam az idegtől. Átszereltem a hdd-ket a másik bay-be, de a régi szerver ledjei sem világítottak. Utólag azt, gondolom, hogy ezt itt én basztam el, mert esélyes, hogy rossz lukba csavartam be a hdd-kt, így nem érintkeztek a csatlakozóval. Ezt már nem fogom megtudni, csak egy tipp, mert később észrevettem, hogy ez lehetséges. Feladtam ezt az ötletet, mindent vissza a 450-be és irány haza.
Hajnal kettőre értem haza. Még leültem a gépem elé, a mentéseket újra elindítottam, amiket elkezdtem. Azt gondoltam, a legjobb lesz, ha aludni megyek, mert kell majd az erő és a tiszta fej ezt az egész szart megoldani. A jó döntésekhez szerzetesi nyugalomra van szükség. Ideges ember ne csináljon semmit, illetve de: nyugodjon meg! 🙂
Pár óra alvás után kidobott az ideg az ágyból. Reggelre lényeg már le lett mentve. A szerveren volt backup máshonnan, amiről már azt se tudtam, hogy mi. Ez is egy tanulság, amiről nem tudod, hogy mi és régóta nem kellett senkinek, arra jó az offline backup is. Nem kell mindig, mindennek online elérhetőnek lennie. Amikor baj van, az ilyen adatok csak lassítanak.
Mivel aggódtam, hogy azon backup-ban lehetnek olyan kódok, ami a termelőgépek forráskódjai, így inkább amellett döntöttem, hogy folytatom a mentést.
Azt nem is írtam, hogy a távoli mediáról boot napközben nagyon nem ment. Illetve mivel gyakori volt, nagyon lelassított. Ekkor azt találtam ki, hogy felrakok egy 32GB-s pendrive-ra Ventoyt, majd alá pár iso-t -ami jól jöhet a műveletek során- és berakom a szerverbe fixen. Elkészítettem a pendrive-ot és irány az Expo tér.
Ezt követően bementem az irodámba, ahol megnéztem milyen hw-k vannak a szerverszobában, amik segítségemre lehetnek. Próbáltam megnyugodni és átgondolni, hogy milyen eszközök beszerzése nem pénzkidobás és hasznos most is és később is. Ezeket megrendeltem, és a kollégámat elküldtem értük. Este hazafelé megint bementem az Expó térre és rákötöttem egy külsős USB-SSD-t, hogy gyorsabb legyen a mentés, és később a komplett partíciót is le tudjam húzni. Itt jön a második tanulság. Kliens gép nélkül ne menj szerverteremben (ekkor már nem volt szabad port a gépemen, mindenhonnan lógott valami nélkülözhetetlen). Valamint, soha ne bízz a LED-ekben! 🙂 Szépen világított az USB-SSD LED-je, de otthon derült ki, hogy az annyit tesz: áram alatt van, lsusb viszont nem látja. Mountolni nem tudom. 🙁
Miközben ezen káromkodtam, végett ért a full mentés. Uhhh! El sem hiszem. Már 28 órája nem elérhető a szerver. Eközben nekem jutott kb 3 óra alvás. Nagyon fáradt és kimerült voltam. Ekkor írtam magamnak egy csekklistet, ami alapján végig tudom venni a folyamatot. Lényegében tervet készítettem, majd úgy döntöttem, hogy túl fáradt vagyok végrehajtani, majd holnap. Aludtam kb 5 órát, de megint kidobott az ágy és a kötelességtudat vagy a bűntudat a balfaszságomért.
Eközben a cégem papíron tolta az ipart. Az kapott árut aki megjelent és semmilyen rendelést nem fogadtak el. A helyszínen kézi szállítólevelet állítottak ki, azoknak akiknek nagyon kellett az áru és amúgy is jó a kapcsolat van velük. A termelés leállt.
Az 5 óra alvás után, reggeli közben azon gondolkodtam, hogyan lehetne ezt elkerülni a jövőben. Az nem fér bele, hogy az adataim egy RAID vezérlőtől függjenek, így az SW Raid mellett döntöttem. Hiszen reális kockázat az, hogy ha egy ilyen kártya meghal, csak újabbat kapok, akkor ugyanígy járok. Ezt soha többet nem akarom átélni. Ezt már tudtam. A lehető legkevesebb vendorlocking-ra vágyom.
Miközben az események zajlottak egy itteni fórumtárs volt a lelki és szakmai segítségem. Leginkább ilyenkor egy nyugodtabb ember társasága kell, akivel megköpködtettem azokat az ötleteimet, amiket végre kívánok hajtani. Egy ilyen stresszes helyzetben az ember ön-sorsrontó.
Már 30 órája álltunk, amikor megkezdtem a mini infrastruktúra újratervezését. Egy host Linuxon van most 3 db Linux VPS-ben. Innen még 24 óra kellett, hogy elinduljon az első szolgáltatás. kb pénteken 10 órakor indult el a webáruház és a mögötte lévő ERP. Mindez adatvesztés nélkül. Vagyis majdnem, a /var/cache/named-t nem volt lementve. Írtam a domain szolgáltatómnak, hogy küldjön egy exportot, és az alapján már az ő névszervereikbe bepakoltam a domainjeimet. Korábban azért használtam saját DNS szervert, mert nem engedték a szolgáltatónál a wildcardot. Ma már ez nincs így, emiatt a saját szerver üzemeltetése feleslegessé vált.
Át tudtam-e volna állni másik szerverre rövid idő alatt? Igen, de akkor csak az előző napi mentésből. Azzal kb 15 perc alatt megvagyok, de akkor 1 napi tranzakciónak annyi, aminek a reprodukálása kb 1 nap lett volna az egész cég számára. ..és hatalmas stressz, nem csak nekem. Valamint, az könnyebben elbaszható. Lehet, még hetekig gondunk lett volna belőle.
Hogyan építettem fel az új gépet?
2 db fix ip-m van és kábelem. Egyik az iDrac-ban másik az host OS-nek.
Tudom szentségtörés, de host-nak Kubuntu-t választottam, a vps-eket pedig ubuntu szerver verziók adják. Tudom-tudom, szerverre nem teszünk DE-t. Igen, én is olvastam erről még 1997-ben. (Ezt majd a Windows szerver adminoknak is mondjátok el! :P) Csak a vizuális megjelenés az adminban is nagy segítség. Valamint 1 rendszeruser van a gépen (én) és pár port nyitva. Az ssh-n kívül, minden portot nginx proxyzik vagy streammel tovább valamelyik vps felé.
Szóval nem para 2023-ban a (K)DE szerveren. Ami para: felrakni a gépre, mert nem része az mdadm. Így egy olyan gép, ahol sw-raid-en van egy lvm, nem fog elindulni. Ezt és beszoptam, de csak egy újabb ujjgyakorlat. Mondjuk aki nem hákkol, annak nem is lesz md0-ja már installkor sem, mert már ahhoz is a live alá fel kell rakni az mdadm csomagot. Persze erre sokan azt mondják nem szerverre való. Oké, erre én meg azt mondom bármelyik Linuxból lehet szervert csinálni. Azoknak akik nem akarnak ebben így elmélyülnivalóban, inkább nem javasolt.
Megoldás a nem bootolásra:
Live bebootol. Éles rendszer felmountol (lásd e bejegyzés elején a folyamatot) mdadm és cryptsetup-initramfs csomagok feltelepít. Ekkor már bootol.
Mielőtt bárki nekem esne. Nem ez a munkám főállásban. Nem napi szinten kell ilyen szopásokkal megvívnom. Számos hibát elkövettem az eset kapcsán. Okulásként osztottam meg. Kérem senki ne jöjjön a nagyvállalati megoldásaival, vagy ezért kell felhőbe menni. Mindennek oka van, annak is, hogy magamnak üzemeltetem a rendszert. Azzal se jöjjön senki, hogy bízzam szakemberre, mert ismerem a szakembereket. Aki jó, az erre a szintre le sem hajol. Aki lehajol, az lehet nekem kevés, mert ha guru is, egyszemélyes EV, aki önmagában kockázat nekünk.
ps.: Nem a Dell vagy a kereskedő a hibás a dologban. Ezt fontos rögzíteni, mert visszaolvasva félreérthető a dolog. Egyedül az én felelősségem az egész.