Portál AbcLinuxu, 30. dubna 2025 18:45
Poučné vyprávění o lapálii včerejšího podvečera
Při aplikaci změn síťové konfigurace - viz včerejší blogpost na téma Jak skamarádit openvswitch a systemd, se ukázalo že onen pomyslný jásot byl poněkud předčasný. Neumím totiž ovlivnit pořadí služeb, jsou-li nahazované přes systemd, což je u Pacemakeru docela podstatná věc.
Dokud jsem měl nainstalován pouze balík systemd
, bez balíku systemd-sysv
, tak se systemd
pokoušel spustit corosync
a pacemaker
, ještě před nahozením openvswitche. To logicky končilo selháním, protože v tu dobu ještě rozhraní, přes které má probíhat komunikace corosyncu ještě neexistují.
Po doinstalování balíku systemd-sysv
byl výsledek ještě tristnější - k nahození virtuálních síťových rozhraní nedošlo vůbec. Možná by se to dalo pořešit přes obligátní:
.. up ip link set $IFACE up down ip link set $IFACE down ..
..jenže to už mi začala docházet trpělivost.
Nod gg, na kterém jsem s tím laboroval, se totiž začal chovat poněkud divně. Ačkoliv konfigurace sítě byla zcela identická jako u výchozího nodu ga - pochopitelně až na jiné adresy - síť po restartu nejprve naskočila pak škytla, spadla.. Po chvíli zase naskočila, pak zase spadla.. Při dalším naskočení jsem se přihlásil a zkusil systemd opět odinstalovat, jenže během této operace připojení upadlo definitivně. Nezbylo než dojít dolů do serverovny, zapíchnout monitor s klávesnicí a problém pořešit rovnou u stroje.
Na monitoru byl kernel panic. Zmáčknul jsem reset a koukal co se bude dít - opět kernel panic. Zkusil jsem starší kernel. Zase kernel panic. To už mi bylo divné. Najel jsem do ramdisku. Namountoval systémový disk. Potud vše ok. Chci se přepnout přes chroot do systému a tu to na mne zařvalo input/output error a nic. Zkusím ls, find. Žádný problém. No koukal jsem na to jako blázen, tak jsem si přizval na pomoc kolegu, Pavla Píšu.
Nebudu vás dále napínat. Ukázalo se, že systémový disk je na cestě do věčných lovišť a s vadnými sektory si ani Btrfs neporadí.
Až potud žádný problém. Systém všech nodů je identický. Vykuchal jsem disk, místo něj vrazil nový na který jsem naklonoval po síti systém z nodu ga. Nabootoval systemrescuecd, skočil do chrootu, upravil hostname, síťovou konfiguraci, nakopíroval certifikáty puppetu a reinstaloval grub2.
Jenže ouha! Systém najel, Puppet přeplácnul co měl, ale do clusteru se nod nezapojil. Co to?! No blbnul jsem s tím do dvou do rána, ovšem bezvýsledně. X krát jsem mazal konfiguraci i soubory které náleží ke corosyncu a pacemakeru. Kontroloval konfigurační soubory a nastavení práv - přičemž jsem odhalil i některé trapné chyby a překlepy. Ovšem stále nic. Nakonfiguroval jsem i druhý ring, protože stroje jsou propojené přes dva nezávislé switche. Furt nic. Stále to vypadalo takto:
Stack: corosync Current DC: gf (167904085) - partition with quorum Version: 1.1.12-2f2dcca 6 Nodes configured 0 Resources configured Online: [ ga gb gc gd ge gf gg ]
A na stroji gg takto:
Stack: corosync Current DC: gf (167904085) - partition with quorum Version: 1.1.12-2f2dcca 1 Nodes configured 0 Resources configured Online: [ gg ]
Během nesčetných restartů jsem kontroloval logy, abych zjistil co se děje, ale nic jsem z nich nevykoukal. Při nahození nodu gg bylo vidět že tam nějaká komunikace probíhá a corosync se o něco snaží, ale nikam to nevedlo.
Večer už jsem byl z toho tak zoufalý, že jsem si říkal, zda-li není problém v uuid virtuálního switche. Ten totiž po naklonování zůstal stejný jako u stroje ga. Podobné klonování nodu jsem již v minulosti jednou absolvoval, když mi chcípnul disk v jednom z nodů clusteru Peanuts. Tehdy to proběhlo bez problémů, ovšem tenkrát jsem ještě openvswitch nepoužíval. Ovšem to vyžadovalo opět fyzickou přítomnost u stroje. Nechal jsem to tedy na ráno, až budu opět v práci.
Po příchodu do kanclu už jsem byl odhodlán sejít dolů do serverovny, když tu mne napadla ještě jedna věc - co když jsem po výměně disku prohodil síťové kabely? Každá ze síťovek je sice zapojena do samostatného fyzického switche, ale co když při připojení přes ssh tcp pakety probublávají mezi sítěmi na nodu co dělá maškarádu? Komunikace corosyncu však probíhá přes udp a pro každý ring je jiný subnet a port. Pokud jsou kabely přehozené, logicky se pak gg s ostatními nody nedomluví.
Otevřel jsem si tedy soubor /etc/udev/rules.d/70-persistent-net.rules
, prohodil pojmenování síťových zařízení a nechal stroj restartovat.
A voilá! Po obživnutí síťového připojení se nod gg objevil mezi ostatními nody, jako to má být..
Pokud by vám někdy bylo líto vyhodit nějaký - svého času skvělý, rychlý, drahý - disk, jen proto, že se občas chová divně. Tak si vzpomeňte na tenhle blogpost.
Ledva jsem pořešil nod gg a začal konečně řešit co je třeba, vychcípnul disk v nodu ge. Naštěstí v btrfs raid6 poli, které jsem dosud nijak nevyužíval. A vzápětí pošel systémový disk v nodu gd. Bohužel podobným způsobem jako u gg, takže jsem dospěl k rozhodnutí pro jistotu všechny systémové disky nodů ze Schrotu přehodit na raid1, abych si ušetřil práci s klonováním.
A ta rada? Pochybné disky bez milosti vyhodoďte, nebo věnujte někomu, kdo vám pije krev.
Tiskni
Sdílej:
a co podivat tady ? http://www.freedesktop.org/software/systemd/man/systemd.directives.html
Neumím totiž ovlivnit pořadí služeb, jsou-li nahazované přes systemd, což je u Pacemakeru docela podstatná věc. Dokud jsem měl nainstalován pouze balík systemd, bez balíku systemd-sysv, tak se systemd pokoušel spustit corosync a pacemaker, ještě před nahozením openvswitche.tak buď do openvswitch.service dáš
Before=corosync.service pacemaker.service
, nebo obráceně do corosync.service a pacemaker.service dáš Before=openvswitch.service
, nebo pokud nosíš pásek i kšandy, tak dáš obojí.
Ale spíš to vypadá jako postěžování si, než že bys to chtěl nějak řešit a nešlo to.
To je mozne, i kdyz si myslim, ze vy ani ja to posoudit nemuzeme.Tak proč ho teda soudíš v každém svém příspěvku?
Jen se mi nelibi publikovani soukromych veci v pracovni dobe u zamestnance statem financovane instituce.Podle hodnocení příspěvku soudě, že budete nejspíš sám, kdo tento blogpost považuje za ryze soukromou věc publikovanou v pracovní době. Nehledě na samotný fakt, že "pracovní doba" je v případě mého zaměstnání pojem poněkud vágní. Pokud za ni považujete pouhou přítomnost na pracovišti, tak by vaše ataky možná měly nějaké opodstatnění, ale já nejsem vrátný, sekretářka, nebo účetní co pracují od do.
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.