High Availability a Linux (4)
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í.
Seriál High Availability a Linux
- High Availability a Linux
- High Availability a Linux (2)
- High Availability a Linux (3)
- High Availability a Linux (4)
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ěpodobnosti?)
- 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
| 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
| 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/
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.
Školení: Pokročilejší kurz jazyka Java
Java je multiplatformní programovací jazyk, který vytvořila a vyvíjí společnost Sun. Java je silný, objektově orientovaný jazyk se širokou komunitou, nabízející především vysokou produktivitu vývoje.
- Práce s řetězci
- Regulární výrazy
- Kolekce
- Generiky
- Smyčka typu "for" ve verzi Java 1.5
- Výčty
- Vlákna, synchronizace
- Polymorfismus, RTTI
- Java Beany
- JDBC (práce s databázemi)
- GUI (knihovny AWT a Swing)
- Java na serveru (servlety, JSP)
Podrobnější informace a přihláška
Seriál High Availability a Linux
- High Availability a Linux
- High Availability a Linux (2)
- High Availability a Linux (3)
- High Availability a Linux (4)
Přehled názorů
Tento text je již více než dva měsíce starý. Chcete-li na něj reagovat v diskusi, pravděpodobně vám již nikdo neodpoví. Pro řešení aktuálních problémů doporučujeme využít naše diskusní fórum.


