High Availability a Linux (3)

5. 1. 2004
Doba čtení: 4 minuty

Sdílet

V dnešním dílu seriálu o High Availability clusterech si ozřejmíme, kterak zajistit replikaci dat na discích obou spárovaných strojů.

Sdílený filesystém

Pro většinu služeb je potřeba použít nějaký způsob sdílení dat. Typickým příkladem je mailserver a uživatelské mailboxy: v klidovém stavu potřebujeme, aby na obou počítačích byl aktuální stav mailboxů. Jen tak je možné zajistit, že v případě výpadku neztratíme žádnou informaci.

Potřebujeme tedy při konfiguraci clusteru způsobit stav, kdy se v klidovém stavu obsah filesystému na jednom počítači replikuje (česky: propisuje :-) na druhý počítač. Při havárii začne přeživší počítač využívat svoji kopii disku, čímž je zajištěno, že pracuje s poslední zdravou verzí dat. Při oživení havarovaného počítače je potřeba opět sesynchronizovat oba disky.

CODA

Pro replikování disků mohou být výhodné síťové filesystémy, které jsou distribuované a odolné proti výpadkům, například CODA. Vzhledem k tomu, že se mi ji po několika dnech experimentování včetně čtení manuálů nepovedlo uspokojivě rozchodit, nepoužil jsem ji. Předpokládám ale, že CODA by mohla být dobré řešení, nejspíš jsem jí nevěnoval dostatek času. (Možná časem…)

SW-RAID + NBD

Pavel Machek do jádra Linuxu implementoval Network Block Device. Jde o blokové zařízení, které umožňuje přistupovat přes síť k jinému blokové zařízenímu. Jeden z prvních pokusů o sdílení disku jsem prováděl právě se softwarovým RAIDem (RAID1) a NBD, tato varianta je doporučovaná i na stránkách projektu HA Linux. SW-RAIDu však při startu dělalo problémy se spojit dohromady s druhým diskem na vzdáleném počítači. Poté, co jsem našel projekt drbd, který implementuje všechny potřebné vlastnosti a je určen přímo pro heartbeat, experimentů s SW-RAIDem i NBD jsem zanechal.

Nechcete-li používat různé exotické jaderné moduly, je SW-RAID a NBD jednoduchá a možná i funkční varianta.

drbd

DRBD je patch do jádra od Philipa Reisnera. Jde o jakousi variaci na síťový RAID-1.

Po kompilaci a instalaci DRBD (make; make install) bude vytvořen nový modul do jádra drbd.o, konfigurační soubory /etc/drbd.conf, skript pro heartbeat/etc/ha­.d/resource.d/da­tadisk, obecný startovací skript /etc/init.d/drbd, program pro manipulaci se zařízeními /sbin/drbdsetup a trochu dokumentace. Po vložení modulu drbd do jádra vznikne blokové zařízení /dev/nb0. Modifikací konfiguračního souboru toto zařízení namapujeme na jiné blokové zařízení, např. /dev/hdc1 a spárujeme jej se zařízením na druhém počítači. Zařízení se budou chvíli synchronizovat (postup synchronizace, stejně jako celkový stav zařízení, můžeme sledovat v souboru /proc/drbd).

Po synchronizaci obou nositelských zařízení je pár zařízení /dev/nbX připraven k použití. Vždy jedno ze zařízení může být primární, kdy je možné jej používat pro zápis i pro čtení, druhé zařízení je možné použít pouze pro čtení. Všechny změny na primárním zařízení se přitom okamžitě posílají na zařízení sekundární, kde se provádějí. Chceme-li použít sekundární zařízení pro zápis, musí se nejprve primární zařízení přestat využívat (umountovat), pak prohlásit za sekundární a stávající sekundární zařízení prohlásit za primární. Všechny změny stavu Primární/Sekundární probíhají automaticky (automagicky?) v ovladači. Uživatel musí pouze zajistit, aby se nepokoušel namountovat zařízení na obou počítačích pro zápis. Kromě stavů Primární/Sekundární existuje i třetí stav, kdy zařízení nemá připojeno svoje „dvojče“. Pro přechod z tohoto stavu do primárního je potřeba provést replikaci dat – ovladač při korektním rozpojení umí poznat, která data se změnila a provést pouze rychlou replikaci, při nekorektním rozbití je potřeba počkat na synchronizaci celého pole.

Celý ovladač je chystán pro využití démonem heartbeat, proto je do něho jednoduše integrovatelný.

Možnost stažení balíčku DRBD je na stránkách projektu http://www.drbd­.org/, pro velký rozsah a (domnívám se) malou informační hodnotu konfiguraci nebudu popisovat zde. V případě zájmu ji mohu popsat jako další článek.

Poznámky: modul drbd provozuji dost dlouhou dobu i na SMP stroji, takže by mohl být SMP safe. Naopak, bez úprav se nesnese s NBD, protože používá stejné major číslo zařízení. Když jsem DRBD instaloval, ještě neexistovala samostatná stránka projektu a pro jádra 2.4 se zdrojové kódy stahovaly z CVS. Jak je to dnes, nevím.

SCSI či FibreChannel

Máme-li dost peněz či zkušenosti, můžeme místo „partyzánských“ metod sdílení disku použít „civilizovanou“ sběrnici, která je na sdílená zařízení stavěná. Bohužel s ní zatím nemám praktické zkušenosti. (Nějaký sponzor? :-)

Replikace vlastními prostředky

Některé programy umožňují replikaci vlastními prostředky, například. OpenLDAP server. Budeme-li chtít nasadit vysoce dostupný LDAP server, je pravděpodobně nejjednodušší variantou použít heartbeat pro IP takeover, slapd a slurpd pro poskytování a replikaci dat.

3…2…1…zážeh!

Máme-li nachystáno všechno, co potřebujeme ke startu prvního clusteru, můžeme jej zkusit zapnout. Na obou počítačích spustíme démona heartbeat běžným způsobem

# /etc/init.d/heartbeat start

a budeme pozorovat, co se děje. Démon nevypisuje startované služby na standardní výstup, jeho stav a případné chyby je možné dohledat v logovacích souborech.

Testování

Pokud na obou počítačích nastartovaly správné služby, můžeme zkusit pro jeden z počítačů simulovat vypnutí. Měkkým způsobem vypnutí je pouhé vypnutí démona heartbeat

bitcoin školení listopad 24

# /etc/init.d/heartbeat stop

V krátké době by počítač, který zůstal „naživu“ měl převzít služby svého „mrtvého“ kolegy. Stalo-li se tak, můžeme vyzkoušet opětovné zapnutí „mrtvého“ počítače. Služby by opět měly přemigrovat na původní počítače. Funguje-li i opětné nahození, můžeme se pokusit shodit druhý počítač a pak i tvrdé vypnutí pomocí síťového vypínače. Občas může být záludné i současné nahození obou počítačů najednou, je proto vhodné vyzkoušet i to, jak se bude cluster chovat po výpadku elektřiny a jejím obnovení.

Poté, co jsme odladili veškerou myslitelnou konfiguraci, můžeme se jenom radovat, jak jsme šikovní, a jít žádat svého zaměstnavatele o zvýšení platu (osobám samostatně výdělečně činným se omlouvám).

Autor článku

Věroš Kaplan pracuje jako nájemný správce serverů na volné noze. Před několika lety objevil kouzlo automatizace a už ho to nepustilo. Zastává názor, že nudné úkoly mají dělat počítače – a měly by se tedy používat i pro správu dalších počítačů.