Počítačový 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
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í
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
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
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
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ů.
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
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č.
Externí odkazy
- Obrázky, zvuky či videa k tématu počítačový cluster na Wikimedia Commons