Hlavní navigace

High Availability a Linux (2)

29. 12. 2003
Doba čtení: 6 minut

Sdílet

Další díl seriálu o rozchození High Availability clusteru pod Linuxem. Dnes si přiblížíme démon heartbeat, pomocí nějž bude celé řešení realizováno, jeho instalaci a konfiguraci.

heartbeat? heartbeat!

Nejjednodušší implementací třídního řešení s pracujícím a dozorcem je právě démon heartbeat. Původně pochází z http://www.linux-ha.org/heartbeat/, dnes se však vyskytuje v každé slušné distribuci (v distribuci Debian to je balík heartbeat).

Heartbeat umožňuje standardně propojit do clusteru právě dva počítače. Pro každý počítač je definována sada služeb, která na něm má v klidovém stavu běžet. Po startu démona se nejprve pokusí domluvit s démonem na druhém počítači v clusteru, pokud zjistí, že funguje, nastartuje služby, které mají běžet. Pak si pravidelně s démonem na druhém počítači vyměňují zprávy: „Jak se máš? Já se mám dobře.“ Pokud démon v průběhu činnosti zjistí, že druhý počítač mu dostatečně dlouho neodpověděl, rozhodne se jednat. Ověří si, že druhý počítač je opravdu mrtvý, a potom na svém počítači nastartuje služby, které běžely na havarovaném počítači, případně přebere i jeho IP adresu. Havárie by se měla projevit maximálně několikaminutovým výpadkem – to je součet doby, než démon zjistí, že druhý počítač neodpovídá, a doby potřebné pro start služeb. Poté, co se havarovaný počítač zotaví, jeho démon ohlásí: „Já už se mám zase dobře“, počká, až se jeho služby na zdravém počítači vypnou a přebere se IP adresa a služby se spustí znova na původním počítači.

Tolik princip, jak na to?

Návrh

Předtím, než začneme instalovat, je dobré provést nějaký návrh.

Víme, že jeden démon heartbeat umí obsloužit cluster pouze o dvou počítačích. Určíme si službu či démona, který má být trvale dostupný. Aby byla služba dostupná i při migraci na druhý server, je potřeba kromě běžných IP adres obou počítačů vybrat i další IP adresu, na které by měla být služba dostupná pro ostatní počítače. O tuto IP adresu se budou oba počítače v případě havárie „přetahovat“.

Posílání a zpracovávání zpráv „Jak se máš? Já se mám dobře.“ se občas také říká heartbeat či heartbeating. Démon heartbeat podporuje tři typy těchto zpráv: heartbeat zasílaný jako UDP datagramy, multicast či heartbeat po sériové lince. I tady musíme rozhodnout, kterou volbu (či jejich kombinaci) použít.

Příklad: mějme dva počítače bob (192.168.0.1/24) a bobek (192.168.0.2/24). Chceme stejně jako Honza postavit mail server, zajímavé služby tedy budou SMTP, POP3 a IMAP4. Tyto služby by měly běžet na adrese 192.168.0.250, v klidovém stavu poběží všechny služby na počítači bob. Služby se startují a zastavují startovacími skripty /etc/init.d/mailer, /etc/init.d/pop3a /etc/init.d/imapd. Vřele doporučuji najít nějaký sériový kabel (třeba ten, co dodává HP ke svým switchům :-)) a použít ho také jako linku pro heartbeating. Připojíme ho na obou počítačích na port /dev/ttyS0.

Instalace

Poté, co jsme si ujasnili, co vlastně chceme, můžeme démona stáhnout a nainstalovat. Na obou počítačích provedeme instalaci balíčku příkazem

# apt-get install heartbeat

Vzhledem k tomu, že heartbeat jsem zkoušel pouze na Debianu (woody), budu dále používat cesty a nastavení, které jsou standardní na tomto systému.

Budeme-li instalovat pomocí debianího balíčkovacího systému, bude nám tento klást různé záludné otázky, k nim patřící odpovědi posléze zapíše do konfiguračních souborů. Správné odpovědi na tyto otázky ponechám laskavému čtenáři za domácí úlohu, po přečtení tohoto článku by toho měl být schopen.

Démon se má občas po instalaci (či instalacích, deinstalacích a jiných experimentech) tendenci spouštět, proto je vhodné jej před změnami konfigurace vypnout. Protože je heartbeat standardní služba, můžeme ho vypnout běžným startovacím skriptem:

# /etc/init.d/heartbeat stop

Konfigurace

Téměř celá konfigurace démona heartbeat je uložena v adresáři /etc/ha.d/, výjimkou jsou pouze startovací skripty služeb. Heartbeat při hledání startovacích skriptů hledá v adresářích příslušných dané distribuci (tedy /etc/init.d/) a potom ve vlastním adresáři /etc/ha.d/resou­rce.d/. Některé služby však nemají svůj skript v /etc/init.d/ a musíme ho umístit do druhého adresáře – některé skripty, například pro IP takeover (to je to přebrání IP adresy), jsou již v tomto adresáři připraveny.

Všechny standardně nainstalované konfigurační soubory obsahují dostatečné množství dobře napsaných komentářů, takže není příliš velký problém vyladit si konfiguraci podle svého.

/etc/ha.d/authkeys

Obě instance démona při heartbeatu mohou používat autentizaci pro ověření, že si opravdu povídají se správným partnerem. V souboru authkeys je definováno, který způsob ověřování bude použit. Na výběr jsou 3 varianty: žádné ověřování (pouze CRC), sha1 a md5. Pro sha1 i md5 musí být zadán klíč, který se použije pro generování autentizačního hashe. Na obou počítačích je zapotřebí zadat stejný způsob autentizace i klíč. V případě instalace na Debianu tento soubor nemusíme upravovat, při instalaci balíčku je automaticky upraven.

/etc/ha.d/hare­sources

Do tohoto souboru se zapisují služby (resp. startovací skripty), které mají na obou strojích běžet. Soubor obsahuje dvě řádky se jmény strojů (Definice: jméno stroje je to, co dostanete po výpisu uname -n), za jménem stroje jsou uvedeny služby (startovací skripty), které dotyčný stroj v klidovém stavu obhospodařuje. Jména startovacích skriptů mohou být následována parametry oddělenými čtyřtečkou (::). Doporučuje se, aby soubor haresources byl na obou počítačích shodný. (V praxi to není potřeba, je však velmi dobré vědět, co člověk dělá.) Soubor haresources pro náš příklad může vypadat například následovně (pro oba počítače):

bob mailer pop3 imapd IPaddr::192.168.0.250/24
bobek

Po startu démona heartbeat se tento pokusí navázat spojení s druhým počítačem v clusteru, pokud se mu to v určené době podaří, zkusí spustit všechny startovací skripty uvedené v souboru haresources. Startovací skripty se hledají v adresářích /etc/ha.d/resou­rce.d/ a /etc/init.d/. Démon na počítači bob tedy postupně spustí následující příkazy:

# /etc/init.d/mailer start
# /etc/init.d/pop3 start
# /etc/init.d/imapd start
# /etc/ha.d/resource.d/IPaddr 192.168.0.250/24 start

První tři příkazy jsou zřejmé a tedy nezajímavé, poslední příkaz volá skript IPaddr, který je dodáván s balíčkem heartbeat. Tento skript způsobí přidání IP adresy na vhodné síťové rozhraní a rozeslání ARP paketu s oznámením o změně MAC adresy do připojené sítě. („Vhodné síťové rozhraní“ znamená patřící do stejné sítě jako jiné již zkonfigurované rozhraní, podrobnější pravidla jsou ve vzorovém konfiguračním souboru haresources.) Tímto se pro obsluhované počítače zpřístupní adresa 192.168.0.250/24, na které poslouchá mailer. Počítač bobek nespustí nic, neb to po něm v konfiguračním souoru není požadováno.

Při vypínání služeb probíhají operace analogicky, místo start se použije stop. V případě výpadku počítače bob to po určitém timeoutu počítač bobek zjistí a nahodí služby, které dosud běžely na počítači bob – tj. zavolá opět ony čtyři startovací skripty. Po obnovení počítače bob se oba počítače domluví, bobek služby (opět) pomocí startovacích skriptů vypne a bob je na sobě spustí. Primitivní, ale účinné, že?

I soubor haresources se na Debianu upravuje automaticky po instalaci balíčku a nemusíme do něho zasahovat.

CS24_early

/etc/ha.d/ha.cf

V tomto souboru se nastavuje ostatní konfigurace démona heartbeat, například, zdali bude heartbeating probíhat přes UDP či sériovou linku, nastavení UDP paketů či sériové linky, nastavení logovacích souborů, různé timeouty a rozličná další nastavení. Vzhledem k tomu, že konfigurace je velmi dobře okomentovaná přímo v souboru, domnívám se, že ji zde není nutné popisovat. I tento soubor se na Debianu upravuje automaticky po instalaci balíčku.

Služby

Kromě konfigurace démona heartbeat je samozřejmě ještě velmi vhodné nastavit i normální služby, např. zmiňovaný SMTP démon. Protože zálohované služby budou startovány až heartbeatem, je vhodné ujistit se, že jsou odstraněny z běžných startovacích posloupností (adresáře /etc/rcX.d).

Byl pro vás článek přínosný?

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čů.