
V předchozích článcích jsme začali vyprávět o tom, co je Proxmox VE a jak funguje. Dnes si povíme, jak využít možnosti klastry a ukážeme, jaké výhody to přináší.
Co je tedy cluster a proč je potřebný? Cluster (z anglického cluster) je skupina serverů propojených rychlými komunikačními kanály, pracující jako celek a prezentující se uživatelům jako jednotná entita. Existuje několik základních scénářů využití clusteru:
- Zajištění vysoké dostupnosti (High-availability).
- Vyvažování zátěže (Load Balancing).
- Zvýšení výkonu (High Performance).
- Provádění distribuovaných výpočtů (Distributed computing).
Každý scénář má své vlastní požadavky na komponenty clusteru. Například pro cluster provádějící distribuované výpočty je hlavním požadavkem vysoká rychlost provádění operací s plovoucí desetinnou čárkou a nízká latence sítě. Takové clustery jsou často používány pro vědecké účely.
Jelikož jsme se dotkli tématu distribuovaných výpočtů, je dobré zmínit, že existuje také koncept grid-systému (z anglického grid — mříž, síť). I přes obecnou podobnost není dobré zaměňovat grid-systém a cluster. Grid není klasickým clusterem v běžném pojetí. Na rozdíl od clusteru jsou uzly tvořící grid nejčastěji heterogenní a mají nízkou dostupnost. Tento přístup zjednodušuje řešení úkolů distribuovaných výpočtů, ale neumožňuje vytvořit z uzlů jednotnou entitu.
Výrazným příkladem grid-systému je populární výpočetní platforma (Berkeley Open Infrastructure for Network Computing). Tato platforma byla původně vytvořena pro projekt (Search for Extra-Terrestrial Intelligence at Home), který se zabývá hledáním mimozemského života analýzou rádiových signálů.
Jak to fungujeObrovský objem dat získaných z rádioteleskopů je rozdělen na mnoho menších částí, které jsou odesílány na uzly grid-systému (v projektu SETI@home hrají roli takových uzlů počítače dobrovolníků). Data jsou zpracovávána na uzlech a po dokončení zpracování jsou odesílána na centrální server projektu SETI. Takto projekt řeší složitý globální problém, aniž by měl k dispozici potřebné výpočetní možnosti.
Nyní, když máme jasnou představu o tom, co je cluster, podíváme se, jak ho lze vytvořit a implementovat. Budeme používat systém virtualizace s otevřeným zdrojovým kódem. .
Je obzvlášť důležité před tím, než začneme vytvářet cluster, jasně chápat omezení a systémové požadavky Proxmox, a to konkrétně:
- maximální počet uzlů v clusteru — 32;
- všechny uzly musí mít shodnou verzi Proxmox (existují výjimky, ale pro produkci se nedoporučují);
- pokud plánujete využít funkci vysoké dostupnosti, musí být v clusteru alespoň 3 uzly;
- pro vzájemnou komunikaci uzlů musí být otevřeny porty UDP/5404, UDP/5405 pro corosync a TCP/22 pro SSH;
- zpoždění v síti mezi uzly by nemělo překročit 2 ms.
Vytvoření clusteru
Důležité! Následující konfigurace je testovací. Nezapomeňte se porovnat s Proxmox VE.
Abychom spustili testovací cluster, vzali jsme tři servery s nainstalovaným hypervizorem Proxmox se shodnou konfigurací (2 jádra, 2 GB RAM).
Pokud chcete zjistit, jak nainstalovat Proxmox, doporučujeme si přečíst náš předchozí článek — .
Původně, po instalaci OS, jednorázový server pracuje v Standalone-mode.

Vytvoříme cluster kliknutím na tlačítko Create Cluster v příslušném oddíle.

Zadáme název budoucího clusteru a vybereme aktivní síťové připojení.

Klikneme na tlačítko Create. Server vygeneruje 2048bitový klíč a zapíše ho spolu s parametry nového clusteru do konfiguračních souborů.

Nápis TASK OK potvrzuje úspěšné dokončení operace. Nyní, při pohledu na obecné informace o systému, je vidět, že server přešel do režimu clusteru. Zatím je cluster složen pouze z jednoho uzlu, takže zatím nemá možnosti, kvůli kterým je cluster potřebný.

Připojení k clusteru
Před tím, než se připojíme k vytvořenému clusteru, musíme získat informace pro provedení připojení. Pro tento účel přejdeme do sekce Cluster a stiskneme tlačítko Join Information.

V otevřeném okně nás zajímá obsah totožného pole. Ten je potřeba zkopírovat.

Zde jsou zakódovány všechny potřebné parametry pro připojení: adresa serveru k připojení a digitální otisk. Přejdeme na server, který má být zařazen do clusteru. Klikneme na tlačítko Join Cluster a v otevřeném okně vložte zkopírovaný obsah.

Pole Adresa peer a Fingerprint budou vyplněny automaticky. Zadejte heslo root pro uzel číslo 1, vyberte síťové připojení a stiskněte tlačítko Připojit.

Během procesu připojování k clustru se webová stránka GUI může přestat aktualizovat. To je v pořádku, stačí stránku znovu načíst. Stejným způsobem přidáme další uzel a nakonec získáme plnohodnotný cluster ze 3 funkčních uzlů.

Nyní můžeme řídit všechny uzly clustru z jednoho GUI.

Organizace vysoké dostupnosti
Proxmox „out of the box“ podporuje funkčnost organizace HA jak pro virtuální stroje, tak pro LXC kontejnery. Nástroj ha-manager detekuje a reaguje na chyby a selhání, provádí přepnutí na funkční uzel v případě selhání. Aby mechanismus fungoval správně, musí mít virtuální stroje a kontejnery společné úložiště souborů.
Po aktivaci funkčnosti vysoké dostupnosti začne softwarový stack ha-manager nepřetržitě sledovat stav virtuálního stroje nebo kontejneru a asynchronně komunikovat s ostatními uzly clustru.
Připojujeme sdílené úložiště
Pro příklad jsme nasadili malé NFS úložiště na adrese 192.168.88.18. Aby všechny uzly clustru mohly používat, je potřeba provést následující kroky.
Vybereme v menu webového rozhraní Datacenter — Storage — Přidat — NFS.

Vyplňte pole ID a Server. V rozbalovací nabídce Export vyberte požadovaný adresář z dostupných a v seznamu Obsah — potřebné typy dat. Po kliknutí na tlačítko Přidat bude úložiště připojeno ke všem uzlům clustru.

Při vytváření virtuálních strojů a kontejnerů na libovolném z uzlů uvádíme naše úložiště jako úložiště.
Nastavujeme HA
Pro příklad vytvoříme kontejner s Ubuntu 18.04 a nastavíme pro něj vysokou dostupnost. Po vytvoření a spuštění kontejneru přejdeme do sekce Datacenter — HA — Přidat. V otevřeném poli uvedeme ID virtuálního stroje/kontejneru a maximální počet pokusů o restart a přesun mezi uzly.
Pokud toto množství bude překročeno, hypervizor označí VM jako selhanou a převede do stavu Chyba, po čemž přestane vykonávat jakékoliv akce.

Po stisknutí tlačítka Přidat utilita ha-manager oznámení všem uzlům klastru, že nyní je VM s uvedeným ID řízena a v případě selhání ji je třeba restartovat na jiném uzlu.

Způsobíme selhání
Abychom viděli, jak přesně mechanismus přepínání funguje, odpojmeme nečekaně node1 od napájení. Sledujeme z jiného uzlu, co se děje s klastrem. Vidíme, že systém zaznamenal selhání.

Funkce mechanismu HA neznamená nepřetržité fungování VM. Jakmile uzel „selže“, činnost VM se dočasně zastaví do doby automatického restartu na jiném uzlu.
A teď nastává „kouzlo“ — klastr automaticky přidělil uzel pro provádění naší VM a během 120 sekund byla činnost automaticky obnovena.

Odpojujeme node2 od napájení. Podíváme se, zda klastr vydrží a zda se VM automaticky vrátí do pracovního stavu.

Bohužel, jak vidíme, máme problém, že na jediném zbývajícím uzlu není dostatek kvóra, což automaticky deaktivuje činnost HA. V konzoli dáme příkaz pro vynucení nastavení kvóra.
pvecm očekával 1 
Po dvou minutách mechanismus HA fungoval správně a nenašel-li node2, spustil naši VM na node3.

Jakmile jsme opět zapnuli node1 a node2, činnost klastru byla plně obnovena. Všimněte si, že VM se sama na node1 nepřesune, ale lze to provést ručně.
Shrnutí
Pověděli jsme vám, jak funguje mechanismus clusteringu v Proxmoxu, a také jsme ukázali, jak se nastavuje HA pro virtuální stroje a kontejnery. Správné využívání clusteringu a HA významně zvyšuje spolehlivost infrastruktury a také zajišťuje zotavení po selhání.
Před vytvořením klastru je nutné hned naplánovat, k jakým účelům bude využíván a jak moc bude v budoucnu potřeba škálovat. Také je třeba zkontrolovat síťovou infrastrukturu zda je připravena pracovat s minimálními zpožděními, aby budoucí klastr fungoval bez selhání.
Dejte nám vědět — používáte možnosti clusteringu v Proxmoxu? Těšíme se na vaše komentáře.
Předchozí články na téma hypervizoru Proxmox VE:
Zdroj: habr.com
