Hlavní navigace

High Availability a Linux (4)

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

Sdílet

V tomto závěrečném dílu seriálu si rozebreme některé problémy teoretické i praktické a blíže se podíváme na živá realizovaná řešení.

Problémy

Problémy teoretické

Jak říká klasik, každá kladná věc má i svou stinnou stránku, je zřejmé, že i řešení s heartbeatem budou nějakým způsobem omezená.

  • Je zřejmé, že pokud se najednou porouchají dva počítače, nepomůže nám ani heartbeat. Dá se však ukázat, že porucha dvou počítačů najednou je (při předpokladech nezávislosti) méně pravděpodobná než porucha jednoho. (Že by úloha do nových skript z pravděpodob­nosti?)
  • Heartbeat umožňuje clusterovat pouze dva počítače. V manuálu se tvrdí, že je rozšiřitelný i nad dva počítače, nezkoušel jsem to. I kdyby rozšiřitelný nebyl, neměl by být problém monitorovat například tři počítače čtvrtým, stačí vhodně nakonfigurovat tři instance heartbeatu na záložním počítači. V praxi jsem toto řešení nezkoušel.
  • Pokud spadne heartbeatová linka, démon může být zmaten. Je proto lepší do obou počítačů přidat jednu síťovou kartu s vyhrazenou IP adresou, která bude zajišťovat propojení obou počítačů přes křížený kabel. Používáte-li drbd, je možné tuto druhou linku použít i pro synchronizaci obsahu disků (rekord asi 8.5MiB/s). Praktickou realizaci ponechávám jako domácí úkol laskavému čtenáři.

Problémy praktické (tedy caveats)

Jak praví Murphy: „I tam, kde není žádný problém, je jeden malý, který by rád ven.“ Při reálném nasazení heartbeatu můžete narazit na problémy, které jsou skryty v počátečním nadšení pro HA:

  • Nevýhodou clusteringu je fakt, že všechno musí být zdvojené. V praxi to řeším tak, že dva stroje s rezervou výkonu spáruji. Například mail server a HTTP proxy server hlídají navzájem jeden druhého. Když vypadne mailer, proxy server začne přijímat a odesílat maily, v případě výpadku proxy serveru jeho služby dočasně zastane mailer. Ve většině času je každý jeden počítač zatížen pouze jednou službou.
  • Aby služby byly opravdu identické, je potřeba udržovat stejné konfigurační soubory na obou strojích. Zatím to řeším pomocí scp, další možnost je rsync či sup. Zajímavou možností, která mne napadla, je použít User Mode Linux (UML) pro běh clusterovaného počítače. Velmi by se tím mohla zjednodušit správa konfiguračních souborů. S UML zatím nemám žádné zkušenosti, takže myšlenky jsou pouze v teoretické rovině.
  • Je zřejmé, že heartbeat je možné nasadit pouze pro některé démony – zejména pro služby, které jsou založené pouze na krátkodobých spojeních a démoni svůj stav ukládají na disk. I přesto však jde o dobrou možnost, jak zvýšit odolnost vašich serverů a služeb, neboť většina síťových služeb této podmínce vyhovuje. Je možné nasadit heartbeat relativně jednoduše pro mail server, sambu, LDAP. Pokud chcete ale zálohovat například freeciv server, musíte vynaložit větší množství úsilí.
  • Budete-li clusterovat mailserver, nezapomeňte, že některé programy (cron) mají ve zvyku posílat maily správci systému. Je proto velmi vhodné, aby i na neaktivním počítači byl /usr/bin/sendmail, který bude i v případě neaktivity přeposílat maily na druhý stroj. V praxi jsem to vyřešil vhodně sestavenými skripty, které mění konfiguraci qmailu a pak jej restartují.

Vyzkoušená řešení

Mail a web

Tabulka č. 531
První stroj Druhý stroj
Mailer Webserver, mailing list, databáze
qmail Apache, Mailman
Courier IMAP MySQL

Oba stroje jsou značkové repasované počítače, všechny disky jsou SCSI v RAIDu1. Replikované disky pro mailboxy, webové stránky a databázi jsou řešeny přes drbd. Do počítačů je přidaná další síťová karta, která slouží jako heartbeat a zároveň se používá pro replikaci disků. Původně byl první počítač nainstalován samostatně, po měsíci provozu jsem jej spojil do clusteru s druhým. Toto řešení chodí bez problémů už několik měsíců.

Našli jsme pro něho s kolegou i další uplatnění – při restartech počítačů (třeba kvůli výměně jádra) se koncovým uživatelům neprojeví žádné velké přerušení dostupnosti služby.

Mail a firewall

Tabulka č. 532
První stroj Druhý stroj
Mailer Firewall, proxy server
qmail Squid

Po počátečních problémech (stroje při převozu a havárii proletěly zadním okénkem od auta) a drobných potížích s konfigurací i tento pár také funguje ke spokojenosti jeho uživatelů. Disk pro mailboxy se replikuje pomocí drbd. Squid běží na obou strojí trvale, uživatele ověřuje proti LDAPu.

Jiné reference

V jedné nejmenované české firmě mají na Linuxu postavené dvě replikované databáze. Na dvou velkých serverech běží dva databázové stroje, které sbírají data z výroby. Disky jsou připojeny ze sdíleného diskového pole přes SCSI (nebo FibreChannel). Při poruše jednoho z počítačů se diskové pole přemountuje do druhého, přebere se jeho IP adresa a obě databáze fungují dále. Celé to působí velmi pěkným dojmem.

Informační systém Masarykovy univerzity používá pro distribuci zátěže na farmu linuxových strojů počítač, který přijímá HTTP požadavky a přeposílá je dále (LVS). Tento stroj je také zálohován heartbeatem. (Dle vyjádření Yenyi Kasprzaka.)

Na Internetu je možné najít další reference (Samba, LDAP, apod.), dobrou startovní adresou může být např. www.linux-ha.org či přímo stránky démona heartbeat www.linux-ha.org/heartbeat/

CS24_early

Závěr

I přes popsané nevýhody se domnívám, že nasazení heartbeatu je velmi lákavá a výhodná varianta. V praxi jej již mám nasazen přibližně půl roku a věřím, že mi ušetřil mnoho času i nervů.

Na tomto místě bych rád poděkoval Petrovi „Klokanovi“ Přidalovi za pomoc při psaní článku a korekturách.

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