Proč cluster?
Velmi pěknou definici clusteru podává Wikipedie. Bohužel zde není uveden autor nebo původní zdroj tohoto textu. Zde bych měl asi podotknout, že v našem případě se jednalo o cluster výpočetní. Hned na začátku musím vysvětlit, proč jsme se pouštěli do stavby clusteru. Dnes častý argument proti clusterům je, že je levnější (a hlavně jednodušší) nakoupit jeden výkonný počítač, než se pouštět do stavby clusteru z několika slabších počítačů. To bohužel nebylo v našem případě možné, protože jsme státní organizace a nebylo možné koupit počítač přes 40 000 Kč (aby to nebyl základní prostředek). Naopak jsme mohli nakoupit několik počítačů v ceně pod 40 000 Kč. Za tuto cenu jsme pořídili 4 počítače se čtyř-jádrovými procesory Intel Xeon a 16 GB RAM a dále jsme již měli k dispozici jeden počítač o něco slabší a jeden o něco silnější (ten se stal Masterem). Tedy ideální situace pro sestrojení clusteru.
Důležité pojmy a topologie clusteru
Nyní se seznámíme s některými dále použitými pojmy z topologie clusterů:
- Master
- Řídící počítač clusteru. Na něm běží různé služby, jako např. NFS, LDAP, DHCP, DNS a dále serverové části programů pro paralelizaci výpočtů. Obvykle se neúčastní samotných výpočtů, pouze úlohu rozděluje pro jednotlivé uzly.
- Nod
- Jednotlivé výpočetní uzly clusteru.
Než začnete s realizací clusteru, měli byste se rozhodnout pro jednu z dvou topologií (Obrázky 1 a 2).
Výhodou první topologie je vyšší propustnost a tím i rychlejší výpočty. Nevýhodou je obtížný (anebo nemožný) přístup zvenčí přímo k jednotlivým nodům. U druhé topologie je tomu naopak.
Ještě bych zde měl uvést, že dvě základní metody paralelizace výpočtů jsou PVM a MPI.
Naše první pokusy
Na počátku jsme řešili výběr vhodné technologie pro sestrojení clusteru. Zjistili jsme, že existují dva otevřené projekty, a to openMosix a Beowulf, a jedno komplexní řešení Rocks Clusters, založené na distribuci CentOS. Popis sestavení clusteru Beowulf mi přišel poměrně složitý (pravděpodobně se mnou nebudou někteří souhlasit), a proto jsme se rozhodli pro řešení openMosix na Gentoo. Bohužel když jsme chtěli k realizaci přistoupit, objevila se na jeho www stránkách zpráva o ukončení tohoto projektu.
Proto jsme nakonec přistoupili k realizaci clusteru pomocí distribuce Rocks Clusters ve verzi 4.3. Tento cluster jsme také úspěšně sestavili, přičemž jsem použili topologii z obrázku 1. Bohužel tento cluster nesplňoval všechny naše požadavky (například nefungovala technologie PVM a byly problémy i s mpi). Rovněž jsme zjistili, že dokumentace ze serveru Rocks Clusters je hodně nepřesná a zavádějící (obsahuje zřetelně i takové informace a nastavení z původních verzí, které již neplatí). Proto jsme po zveřejnění verze 5.0 přistoupili k přeinstalování clusteru. Bohužel u Rocks Clusteru není možný upgrade a při přechodu na novější verzi je nutné cluster přeinstalovat. Verze 5.0 však pro nás byla zklamáním. Nejen, že nebyly opraveny chyby, ale navíc po nějaké době přestal být z jednotlivých uzlů „vidět internet“, což byl problém např. při doinstalovávání modulů do Perlu. Dali jsme této distribuci ještě jednu šanci a hned po vydání verze 5.1 jsme přistoupili k její instalaci. Tuto verzi však považuji za naprostý propadák. Obsahuje fatální chyby v instalačních skriptech a není možné ji nainstalovat bez úpravy těchto instalačních skriptů. Obsahuje také všechny již popsané chyby, včetně zmatečné dokumentace. Při hledání v diskuzních skupinách jsme navíc narazili na skutečnost, že stejné problémy popisují i jiní uživatelé.
Za této situace jsme se již rozhodovali o ukončení pokusů o linuxový cluster, když jsme objevili informaci, že na Filipínách byl sestrojen cluster pro předpověď počasí s operačním systémem Debian Linux. Po krátkém hledání jsme objevili stránky Debian Clusters a rozhodli se pro sestrojení obdobného clusteru. Sestavení tohoto clusteru popíši v dalším textu.
Projekt Debian Clusters a jeho instalace
První, co asi upoutá návštěvníka stránek projektu Debian Clusters for Education and Research: The Missing Manual, je stáří stránek. Poslední změna zde proběhla před více než rokem. Předpokládám, že je to dáno tím, že autoři těchto webových stránek je vytvářeli tak, jak jejich projekt vznikal a po jeho dokončení je přestali vyvíjet. Předpokládám, že se k nim vrátí při tvorbě dalšího clusteru, neboť některé věci jsou již zastaralé. Přesto není třeba se obávat, cluster lze dle tohoto postupu jednoduše vytvořit, avšak je nutné počítat s možností, že bude nutné vyhledat nějaký problém v diskuzních skupinách, zejména pokud použijete novější verze programů. Já sám jsem se k tomuto kroku musel několikrát uchýlit, ale myslím, že na vině mohla být i moje neznalost některých základních postupů a řešení.
Problémem tohoto řešení je nutnost kompilace některých programů a úprava linuxového jádra. Z toho vyplývá i pozdější obtížná aktualizace systému. Pokud totiž zaktualizujete některé knihovny, na kterých jsou závislé přeložené programy, můžete způsobit nefunkčnost těchto programů.
Ve všech případech, kdy bylo nutné nějaký program přeložit, jsem se snažil stáhnout z domovských stránek tohoto programu co nejnovější verzi a tu pak použít. Pouze jádro, na které je nutné aplikovat patch perfctr, jsem musel použít 2.6.26, novější mi nešlo přeložit. Testoval jsem to na jádrech 2.6.27 a 2.6.30-rc (přesné verze si již nepamatuji).
Ostatní postupy fungovaly velmi dobře, pouze LDAP jsem instaloval podle jiného návodu, neboť zde uvedený postup zřetelně popisuje nějakou starší verzi. DHCP a DNS jsem nepotřeboval, tudíž tuto část návodu nemohu posoudit. Klonování nodů podle zveřejněného návodu mi také nefungovalo, zřejmě jsem dělal nějakou chybu, proto jsem použil kopírování pomocí image disku.
Současná topologie našeho clusteru je zobrazena na následujícím obrázku. Master má dvě síťové karty, na jedné je připojen do sítě a na druhé je připojeno diskové pole.
Závěr
Přes uvedené výtky a zkušenosti mohu tvorbu clusteru pomocí tohoto postupu doporučit. Připravte se na to, že pokud budete chtít použít novější verze použitých programů, budete si možná muset najít řešení některých problémů na Internetu, ale neměl by to být problém. Máte-li možnost opatřit si větší množství slabších počítačů, tak toto je cesta, jak z nich vytvořit výkonnou výpočetní jednotku.
V příští části si povíme něco o zkušenostech z nasazení a programech, které využíváme.