Počítačový cluster

Z Wikipedie, otevřené encyklopedie
Skočit na: Navigace, Hledání
Příklad počítačového clusteru.
Load balancing cluster s dvěma servery a 4 uživatelské stanice
Beowulf-cluster

Počítačový cluster (anglicky computer cluster) je seskupení volně vázaných počítačů, které spolu úzce spolupracují, takže navenek mohou pracovat jako jeden počítač. Obvykle jsou propojeny počítačovou sítí. Clustery jsou obvykle nasazovány pro zvýšení výpočetní rychlosti nebo spolehlivosti s větší efektivitou než by mohl poskytnout jediný počítač, přičemž jsou levnější než jediný počítač o srovnatelné rychlosti nebo spolehlivosti.

Clustery slouží k paralelním výpočtům složitých početních úloh (např. faktorizace na prvočísla, simulace vývoje počasí, analýza velkého množství statistických dat, atp.), nebo se používají pro zajištění vysoké dostupnosti určité služby (např. databáze, SMS centra, apod.). Používají se buď specializované víceprocesorové stroje propojené sítí, nebo obyčejné počítače třídy PC. Úlohy, určené pro urychlení za pomoci výpočetního clusteru, musí být speciálně navrženy.

Typy clusterů[editovat | editovat zdroj]

Clustery můžeme rozdělit na několik typů. Ve skutečnosti se jednotlivé funkce clusterů prolínají, aby bylo dosaženo optimálních parametrů.

Výpočetní cluster[editovat | editovat zdroj]

Hlavní článek: Výpočetní cluster

Výpočetní cluster (anglicky High-performance computing, zkratka HPC) slouží k zvýšení výpočetního výkonu pomocí více počítačů, které na výpočtu spolupracují. Obvykle jsou použity počítače střední cenové hladiny propojené pomocí vysokorychlostní počítačové sítě. Tímto způsobem vznikne vysoce výkonný celek, který je mnohonásobně levnější, než jeden vysoce výkonný počítač.

Cluster s vysokou dostupností[editovat | editovat zdroj]

Hlavní článek: High-availability cluster

Cluster s vysokou dostupností (anglicky High-availability cluster nebo Failover cluster) zajišťuje pomocí několika počítačů nepřetržité poskytování nějaké služby i při výpadku počítače z důvodu hardwarové závady nebo plánované údržby. Službu poskytuje jeden počítač, který je v případě výpadku automaticky zastoupen jiným počítačem.

Cluster s rozložením zátěže[editovat | editovat zdroj]

Cluster s rozložením zátěže (anglicky Load ballancing cluster nebo Scallable cluster) snižuje možnou míru zátěže tím, že službu poskytuje několik počítačů, které mají stejný obsah (služba je poskytována paralelně). Stejný obsah je zajištěn replikací obsahu mezi všechny propojené počítače nebo existencí specializovaného centrálního úložiště.

Úložný cluster[editovat | editovat zdroj]

Úložný cluster (anglicky Storage cluster) zprostředkovává přístup k diskové kapacitě, která je rozložena mezi více počítačů z důvodu dosažení vyššího toku dat (paralelizace toku dat) nebo pro zajištění vyšší spolehlivosti pro tok dat. K zajištění služby jsou používány speciální souborové systémy, které jsou schopny zajistit rozložení zátěže, redundanci dat, pokrytí výpadků jednotlivých uzlů, distribuovaný mechanismus zamykání souborů a další doprovodné služby.

Gridový cluster[editovat | editovat zdroj]

Hlavní článek: Gridový cluster

Klasický cluster je tvořen počítači, které nemají jiný úkol, než poskytovat svůj výpočetní výkon ve prospěch clusteru. Gridový cluster (anglicky Grid cluster) je složen z nezávislých počítačů, které jsou typicky určeny pro jinou činnost (například desktop, server) a poskytování výpočetního výkonu pro využití v clusteru je jejich doplňkový úkol (i když z hlediska využití výpočetního výkonu může být situace obrácená). Jednotlivé počítače gridového clusteru jsou proto z principu velmi různorodé (tzv. nehomogenní cluster) a vzájemná součinnost je zajištěna na úrovni aplikačního software, což umožňuje využít i různých platforem (hardwarových i softwarových). Navíc nemusí být jednotlivé počítače sdružené v gridovém clusteru umístěny pohromadě, ale mohou využívat pro vzájemnou komunikaci síť LAN, WAN nebo dokonce celý Internet.

Serverový cluster[editovat | editovat zdroj]

Charakteristika[editovat | editovat zdroj]

NEC cluster

Během 70. let, kdy se počítačové clustery objevily, došlo k odlišení od současně vznikajících superpočítačů.

Paměť[editovat | editovat zdroj]

Počítačové clustery (tzv. multipočítače) sdílenou operační paměť nepoužívají, protože každý počítač zapojený v clusteru disponuje vlastní pamětí, která je jeho procesoru přímo dostupná. Tím se cluster odlišuje od superpočítačů, u nichž všechny procesory používají společnou operační paměť (tzv. multiprocesory).

Systémy souborů[editovat | editovat zdroj]

Využití clusterového (seskupeného) systému souborů je základem moderních počítačových clusterů. Příkladem jsou GFS, IBM General Parallel File System, Cluster Shared Volumes od Microsoftu, Oracle Cluster File System a další.

MPI[editovat | editovat zdroj]

Hlavní článek: Message Passing Interface

Specifikace MPI (Message Passing Interface) vznikla na počátku 90. let po diskuzi mezi 40 organizacemi. Její vývoj byl podporován organizací ARPA a Národní vědeckou nadací (National Science Foundation). Specifikace MPI čerpala různé vlastnosti dostupné v komerčních systémech tehdejší doby a byly podle ní vytvořeny různé implementace (například MPICH nebo OpenMPI). Pro komunikaci používá TCP/IP a unixové sokety. MPI je k dispozici v různých programovacích jazycích, jako je jazyk C, Fortran, Python a další. Hlavním rozdílem mezi MPI a PVM je v tom, že zatímco MPI je pouze specifikace, tak PVM je konkrétní implementace.

PVM[editovat | editovat zdroj]

PVM (anglicky Parallel Virtual Machine) byl vyvinut v Národní laboratoři Oak Ridge kolem roku 1989. PVM musí být nainstalován přímo na každém uzlu a poskytuje soubor softwarových knihoven, které zobrazují uzel jako „paralelní virtuální zařízení“. PVM poskytuje prostředí pro předávání zpráv, správu úkolů a zdrojů a chybová hlášení. PVM může být využito programy napsanými v programovacích jazycích C, C++, Fortran atd.

Správa clusterů[editovat | editovat zdroj]

Jedním z problémů v použití počítačových clusterů je cena jejich administrace, které v určitých případech může být vysoká jako administrace N nezávislých zařízení, pokud má cluster N uzlů. V některých případech toto dává výhodu architekturám se sdílenou pamětí s menšími náklady.

Úkol plánování[editovat | editovat zdroj]

Pokud víceuživatelský cluster potřebuje přístup k velkým objemům dat, je nutné pro plánování úloh využít např. programovací model MapReduce vytvořený Googlem v roce 2004 nebo jiné algoritmy (např. Apache Hadoop).

Správa chyb v uzlech[editovat | editovat zdroj]

Když uzel v clusteru selže, strategie jako „oplocení“ (angl. fencing) mohou udržet zbytek systému v provozu. Oplocení je proces izolování uzlu nebo ochrany sdílených zdrojů, pokud se uzel jeví jako nefunkční. Existují dvě metody oplocení. Jedna vypne uzel jako takový a druhá znemožní přístup ke zdrojů (např. sdílené disky).

Vývoj software a správa[editovat | editovat zdroj]

Paralelní programování[editovat | editovat zdroj]

Clustery s proměnlivou zátěží, jako webové servery, používají clusterové architektury k podpoře velkého počtu uživatelů a obvykle žádost každého uživatele je přesměrována ke konkrétnímu uzlu. To umožňuje paralelní úkoly bez kooperace více uzlů, vzhledem k tomu, že hlavním cílem systému je poskytnutí rychlého přístupu uživatele ke sdíleným datům. Počítačové clustery, které provádějí komplexní výpočty pro malé množství uživatelů, potřebují využít výhodu schopnosti paralelního zpracování mezi několika uzly.

Ladění a sledování[editovat | editovat zdroj]

Vývoj a ladění paralelních programů v clusteru vyžaduje vhodné nástroje. Nástroje jako totalView byly vyvinuty k ladění paralelních implementací v počítačových clusterech, které využívají MPI nebo PVM pro předávání zpráv.

Berkley NOW (Síť Stanic) systém shromažďuje data clusterů a ukládá je do databáze, zatímco systém jako PARMON (vyvinutý v Indii) umožňuje vizuální pozorování a řízení rozsáhlých clusterů.

V aplikacích muže být „Checkpointing“ použit k obnovení daného stavu systému, když uzel selže během dlouhého víceuzlového počítání. Toto je základem ve velkých clusterech, vzhledem k tomu, že s rostoucím počtem uzlů roste i pravděpodobnost selhání uzlu pod velkým výpočetním zatížením. Checkpointing může obnovit systém do stabilního stavu, aby výpočty mohly pokračovat bez nutnosti přepočítat výsledky.

Historie[editovat | editovat zdroj]

SPEC-1 VAX 05

Historie prvních počítačových clusterů je více či méně přímo svázána s historií prvních sítí, jelikož jedna z hlavních motivací pro rozvoj sítě bylo propojení výpočetních zdrojů a vytvoření de facto počítačového clusteru.

Dle Grega Pfistera nebyly clustery vynalezeny žádným konkrétním prodejcem ale zákazníky, jejichž práce se nemohla vejít na jeden počítač nebo pro potřebnou zálohu dat. První komerční clustrovací produkt byl ARCnet, vyvinut firmou Datapoint v roce 1977. Clustrování jako takové se nerozvinulo, dokud DEC (Digital Equipment Corporation) nevydala svůj VAXcluster produkt v roce 1984 pro operační systém VAX/VMS . Produkty ARCnet a VAXcluster nejen že podporovaly paralelní výpočty, ale zároveň sdílely systémy souborů a periferní zařízení. Cílem bylo poskytnout výhody paralelních výpočtů při udržení spolehlivosti dat a jedinečnosti. Dvě další pozoruhodné časné obchodní clustery byly Tandem Himalaya a IBM S/390 Parallel Sysplex, oba dva z roku cca. 1994.

České superpočítače naleznete v článku superpočítač.

Reference[editovat | editovat zdroj]

V tomto článku byl použit překlad textu z článku Computer cluster na anglické Wikipedii.

Logo Wikimedia Commons
Wikimedia Commons nabízí galerii k tématu