Počítačový cluster

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 se navenek mohou tvářit 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č 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ů

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

Související informace naleznete také v článku 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í

Související informace naleznete také v článku 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

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

Ú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

Související informace naleznete také v článku 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

Serverový cluster je vytvářen několika servery, které mezi sebou úzce spolupracují (jsou seskupeny). Lze vytvořit i serverový cluster, který je kombinací výše uvedených typů. Toto seskupení má přínos především v oblasti virtualizací.

Například u virtualizační platformy VMware lze za předpokladu spolupráce několika hypervizorů (ESXi) dosáhnout současně High availability i Load ballancing clusteru. V případě, je-li nějaký z hypervizorů (serverů) vytížen, jsou některé z virtuálních strojů přesunuty (přemigrovány) na hypervizor (server), který má nejmenší vytížení (utilizaci). Pakliže jeden z hypervizorů (serverů) selže, jednotlivé virtuální stroje jsou spouštěny na dalších funkčních hypervizorech (serverech) v daném clusteru.

Charakteristika

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ěť

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ů

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

Související informace naleznete také v článku 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

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ů

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í

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

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

Paralelní programování

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í

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

Některé aplikace používají „Checkpointing“ 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.

Klastry IBM i používají k monitorování života uzlů funkci označovanou jako Heartbeat monitoring. Toto "sledování tepu" zjišťuje, zda jsou uzly aktivní odesláním signálu z každého uzlu v klastru do všech ostatních uzlů. Když Heartbeat signál uzlu selže, zdrojové služby klastru provedou příslušnou akci.[1]

Historie

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 nejenom 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. Další dva význačné a obchodně úspěšné clusterové systémy byly Tandem Himalaya a IBM S/390 Parallel Sysplex, představené v letech 1993 a 1994.

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

Reference

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

Externí odkazy

Média použitá na této stránce

Balanceamento de carga (NAT).jpg
Autor: Nuno Tavares, Licence: CC BY-SA 2.5
A load balancing cluster (for NAT)
Nec-cluster.jpg
Autor: Hindermath, Licence: CC BY-SA 3.0
The new Nehalem cluster
SPEC-1 VAX 05.jpg
(c) Joe Mabel, CC BY-SA 3.0
The SPEC-1 VAX, the VAX 11/780 that was used as the benchmark for the speed of each of DEC's VAXes. Now on display at the Department of Computer Science & Engineering, University of Washington, Seattle, Washington.
Us-nasa-columbia.jpg
Columbia, the new (2004) supercomputer, built of 20 SGI Altix clusters, a total of 10240 CPU. Original caption: "Birds-eye view of the 10,240-processor SGI Altix supercomputer housed at the NASA Advanced Supercomputing facility."