Startup/Shutdown összehangolás - Heartbeat-tel?

Fórumok

Több, egymástól függő szerver indítását, leállítását szeretném összehangolni.
Korábban már javasolták erre a Heartbeat-et, ami akkor még teljesen kínai volt számomra. Most már megismerkedtem vele, HA/failover megy, értem is, hogy mit, miért, hogyan csinál, de ezt nemigen tudom lefordítani a fenti alapproblémámra. Úgy érzem, teljessen máshogy kéne hozzáálni, de nem tudom, hogyan.

A Heartbeat sajnos nem mondható agyondokumentáltnak, így tőletek várnék némi segítséget.

Az elv - gondolom - hogy minden gépen csak a heartbeat indul automatikusan (persze a hierarhiában legalsó gépet kivéve), ellenőrzi, hogy rendelkezésre állnak-e a szükséges szolgáltatások, ha igen, indítja a sajátjait. - ez még talán a könnyebbik eset.
Amit már nehezebben tudnék felvázolni, az a korrekt leállítás, de csak akkor, ha valóban szükséges.

Hozzászólások

Egyszer foglalkoztam heartbeattel érintőlegesen, de úgy emlékszem, hogy lehet definiálni scriptet ami lefut, ha megszakad/visszajön a kapcsolat (illetve van több szint is). Scripttel meg már azt csinálsz, amit akarsz. Persze kikapcsolt gépet nem indít be :) (bár ha WOL van, akkor lehet)
-------------------------
E-learning szolgáltatások nyílt alapokon
Weblap és Bemutató rendszer

Amennyire én tudom, igazán korrekten csak hardveresen lehet ezt megoldani, ha egy hoszt magához ragadta a főszerepet, az kikapcsolja a többi alól az áramot.
stonith nevű cuccot emlegettek még ilyenben.

A full fapados megoldás az, ha felrakod az snmp csomagot, definiálsz egy snmp trapet, ami egy scriptet indít és az megoldja, amit neked kell. Majd elküldöd ezt a trapet arról a node-ról, amelyik fő gép lett a többire.

több host esetén resource dependency-t lehet csinálni a crm-es konfigban, ha jól tudom
persze ez általában olyan szokott lenni, hogy ha van IP? akkor indítsa csak a szervízt, ha fut a szervíz akkor indítsa a másikat.
De biztos be lehet valahogy csapni, hogy ezt gépekkel csinálja.

Rajtad nem segít, de okoskodok egyet.

Azért nem szoktunk (szoktam) ilyet csinálni, mert ha egy cluster leáll vagy elindul, akkor annak oka van. Valami biztosan történt, és jobb ilyenkor kézzel ellenőrizni mindent, hogy érdemes-e elindítani az egész hóbelevancot, vagy megvan ugyan a fájlrendszer, de csak a tömb fele jött vissza, mert a fél elektromos hálózat elnyekkent, és bármikor halhat a másik fele, stb. stb.

Az egymástól függő szerverek éppilyenek, ha a lánc egyik tagja beteg és a "felette" lévők ráindulnak, akkor akár nagyobb kárt is tehetnek.

Amúgy meg lehet lehetne scriptelni, hogy a felbootolt gépeken csak az OS fut, és a "legalsó" indítja az alkalmazást, és ha mindent rendben talált, akkor indítja a felette lévő gépen a cuccot, ami épp így adja tovább az egészet, de ezt szerintem egyszerűbb magadnak megírni pl. egy mysql-apache[1-4]-balancer-fw láncra mint valami nem erre valóból kikényszeríteni a dolgot.

Van benne igazság, hogy jobb kézzel indítani, csak sajnos nem mindig van rá lehetőség (legalábbis nem olyan gyorsan, ahogy azt az ügyfél szeretné.)

Számomra is nem stabil láncszemre történő "ráindítás" tűnik a legkritikusabbnak, de hát pont ezt kéne ezekkel a scriptelésekkel kivédeni. Megpróbálom összelogikázni, remélem összejön.

Sokkal kritikusabbnak tűnik viszont a leállítás. Talán egyetlen eset, mikor automatizált szabályos leállításra van szükség, az a hosszú áramszünet, mikor már a szünetmentesek is kezdenek kifeküdni. Ekkor viszont jó lenne nem ad-hoc módon kirángatni egymás alól a szolgáltatásokat. Ebben az esetben sokkal bonyolultabbnak tűnik minden szervernek megnézni, hogy leállás esetén marad e aki átvegye a helyét? Ha nem, akkor szólni "felfelé", hogy "Fiúk, leállunk!", majd kivárni, hogy ez meg is történjen. De mi van, ha valami miatt mégsem történik meg?

Szóval, kicsit kaotikus. Jobb lenne valami kigondolt, jól felépített solution.