HA cluster
- cluster
- je seskupení dvou a více fyzických počítačů (nodů), které navenek může vystupovat jako jeden subjekt.
- nod
- Je fyzický stroj (server, PC,..), vybavený pevnými disky (HDD) a alespoň jednou síťovou kartou, na kterém běží CRM (Cluster Resource Manager).
Typy clusterů
Výpočetní cluster
Výpočetní cluster ( angl. HPC - High-performance Computing) využívá výpočetního výkonu jednotlivých nodů, tvořených obvykle stroji nižší cenové kategorie, pro zpracování dílčích matematických operací. Celkový výkon je pak mnohonásobně vyšší než by bylo vůbec možné dosáhnout u jediného fyzického stroje.
Diskový cluster
Neboli také Storage cluster vytváří jeden virtuální diskový prostor jeho rozložením mezi fyzické disky nodů. Využít pro tento účel lze buď speciálních clusterových souborových systémů ( OCFS2, GFS2, Lustre, CEPH,...), které jsou schopny řešit rozložení zátěže a redundanci dat mezi nody, nebo clusterové verze LVM (cluster).
Škálovatelné clustery
Jsou spojením nodů, poskytujících podle potřeby paralelně stejný typ služby. V případě potřeby lze tak rozložit zátěž mezi více strojů, bez toho že by došlo k přetížení jednoho z nodů. Tato funkcionalita se angl označuje jako load ballancing. Jelikož lze takto celkový výkon clusteru podle potřeby navyšovat nebo snižovat, označuje se také tento typ clusteru jako škálovatelné (angl. scallable)
Grid
Grid někdo rovněž považuje za typ clusteru, ale není tomu tak. Grid sice připomíná svou funkcionalitou výpočetní a datový cluster, ale liší se tím, že jeho výpočetního výkonu není dosaženo paralelizací procesů, nýbrž jejich distribucí.
Stroje, které jsou v gridu jsou vzájemně nezávislé a tím co je jim společné je pouze aplikace, která rozděluje zpracování úkolu mezi jednotlivé výpočetní jednotky. Těmi nemusí být pouze jednotlivé fyzické servery, ale i celé clustery. Příkladem praktické implementace gridu může být internetová síť.
Pro grid je - na rozdíl od clusteru, naprosto normální že se u něj průběžně nody objevují nebo ztrácejí. Gridová aplikace je navržena tak aby s tím počítala.
Grid svým rozsahem je tedy spíše typem infrastruktury, která navíc může přesáhnout rámec jedné organizace či společnosti.
HA cluster
Z hlediska funkcionality může implementovat všechny výše zmíněné typy clusterů. Liší se od nich především v tom, že je navržen tak, aby byl schopen přežít selhání nodů, bey toho, že by to muselo vést ke ztrátě dat či omezení poskytované služby.
S tím koresponduje i angl. zkratka HA, která znamená vysoce dostupný (high availability). Někdy se tento typ clusteru označuje také jako Failover Cluster.
Schopnost přežití spuštěných služeb je zajištěna jednak tím, že jsou..
- Data uloženy redundantně (podobně jako u diskového clusteru)
- Nody vzájemně informovány o spuštěných službách, takže v případě selhání nodu může být služba spuštěna jinde (podobně jako u škálovatelných clusterů).
- Nody - jejich operační systém a hardware - navrženy tak, aby byly schopny přečkat i výpadek některého z lokálních disků, aniž by musely být odstaveny. U klasických výpočetních clusterů žádná data lokálně uložena nejsou, takže výpadek celého nodu není nijak kritický.
CRM - Cluster Resource Manager
O vzájemnou komunikaci mezi nody v rámci HA clusteru se stará CRM (Cluster Resource Manager). Komerční implementací CRM je např. LanderCluster, který může běžet jak na unixové platformě, tak na systémech od Microsoftu. Open source implementací CRM, které bude věnován zbytek tohoto manuálu, je Pacemaker - fork původní implementace linuxového HA clusteru, vyvíjené v rámci projektu Linux-HA.
Vysoká dostupnost služeb
CRM řeší kromě vzájemné komunikace nodů prostřednictvím lokálních agentů spouštění a zastavování služeb, podle nastavených pravidel. Cílem je aby byly spuštěné zdroje v rámci clusteru vždy k dispozici.
Náš cluster je určen především jako virtualizační platforma pro KVM. Vysoká dostupnost služeb tak není zajištěna přímo clusterem, ale virtuálními stroji, které lze..
- v případě plánovaného výpadku nodu včas přesunout
- v případě neplánovaného výpadku nodu znovu spustit
Aby bylo možné stroje migrovat za běhu, resp. provést spuštění po pádu původního nodu s minimální prodlevou, jsou všechny virtuální stroje umístěny v rámci jednoho sdíleného datového prostoru.
DRBD + OCFS2
NOD 1 NOD 2
/====\ /====\ /====\ /====\ | /====\ /====\ /====\ /====\
| HDD || HDD || HDD || HDD | | | HDD || HDD || HDD || HDD |
\====/ \====/ \====/ \====/ | \====/ \====/ \====/ \====/
/±±±±±±±±±±±\ /±±±±±±±±±±±±\ | /±±±±±±±±±±±\ /±±±±±±±±±±±±\
| RAID1 || RAID1 | | | RAID1 || RAID1 |
\±±±±±±±±±±±/ \±±±±±±±±±±±±/ | \±±±±±±±±±±±/ \±±±±±±±±±±±±/
/――――――――――――――――――――――――――\ | /――――――――――――――――――――――――――\
| LVM VG | | | LVM VG |
\――――――――――――――――――――――――――/ | \――――――――――――――――――――――――――/
/----------\ /-------------\ | /-------------\ /----------\
| LVM LV || LVM LV | | | LVM LV || LVM LV |
\----------/ \-------------/ | \-------------/ \----------/
/^^^^^^^^^^\ /++++++++++++++ ⇄ ++++++++++++++\ /^^^^^^^^^^\
| REISERFS || DRBD || REISERFS |
\^^^^^^^^^^/ \++++++++++++++ ⇄ ++++++++++++++/ \^^^^^^^^^^/
/∷∷∷∷∷∷∷∷∷\ /^^^^^^^^^^^^^^^ ⇄ ^^^^^^^^^^^^^^\ /∷∷∷∷∷∷∷∷∷∷\
∷ Linux ∷ | OCFS2 | ∷ Linux ∷
∷ OS ∷ \^^/^^^/^\^^^^^^ ⇄ ^^\^^^^^^^^^^^/ ∷ OS ∷
\∷∷∷∷∷∷∷∷∷/ / / \ \ \∷∷∷∷∷∷∷∷∷∷/
/∷∷∷∷∷∷∷∷∷\ / / \ \ /∷∷∷∷∷∷∷∷∷∷\
∷ Virtual - / \ ----------- Virtual ∷
\∷∷∷∷∷∷∷∷∷/----- --- ⇄ ---------------\∷∷∷∷∷∷∷∷∷∷/
CLUSTER
GlusterFS
NOD 1 NOD 2
/====\ /====\ /====\ /====\ | /====\ /====\ /====\ /====\
| HDD || HDD || HDD || HDD | | | HDD || HDD || HDD || HDD |
\====/ \====/ \====/ \====/ | \====/ \====/ \====/ \====/
/±±±±±±±±±±±\ /±±±±±±±±±±±±\ | /±±±±±±±±±±±\ /±±±±±±±±±±±±\
| RAID1 || RAID1 | | | RAID1 || RAID1 |
\±±±±±±±±±±±/ \±±±±±±±±±±±±/ | \±±±±±±±±±±±/ \±±±±±±±±±±±±/
/――――――――――――――――――――――――――\ | /――――――――――――――――――――――――――\
| LVM VG | | | LVM VG |
\――――――――――――――――――――――――――/ | \――――――――――――――――――――――――――/
/----------\ /-------------\ | /-------------\ /----------\
| LVM LV || LVM LV | | | LVM LV || LVM LV |
\----------/ \-------------/ | \-------------/ \----------/
/^^^^^^^^^^\ /^^^^^^^^^^^^^\ | /^^^^^^^^^^^^^\ /^^^^^^^^^^\
| REISERFS | | | | | | | REISERFS |
\^^^^^^^^^^/ \^^^^^^^^^^^^^/ | \^^^^^^^^^^^^^/ \^^^^^^^^^^/
/∷∷∷∷∷∷∷∷∷∷∷∷∷∷∷∷∷∷∷∷∷∷∷∷∷∷\ | /∷∷∷∷∷∷∷∷∷∷∷∷∷∷∷∷∷∷∷∷∷∷∷∷∷∷\
∷ Linux ∷ | ∷ Linux ∷
∷ OS ∷ | ∷ OS ∷
\∷∷∷∷∷∷∷∷∷∷∷∷∷∷∷∷∷∷∷∷∷∷∷∷∷∷/ | \∷∷∷∷∷∷∷∷∷∷∷∷∷∷∷∷∷∷∷∷∷∷∷∷∷∷/
/∷∷∷∷∷∷∷∷∷\ /^^^^^^^^^^^^^^^ ⇄ ^^^^^^^^^^^^^^\ /∷∷∷∷∷∷∷∷∷∷\
∷ Virtual <= GlusterFS => Virtual ∷
\∷∷∷∷∷∷∷∷∷/ \^^^^^^^^^^^^^^^ ⇄ ^^^^^^^^^^^^^^/ \∷∷∷∷∷∷∷∷∷∷/
CLUSTER
Výpočetní výkon
V případě nouze lze virtuální stroje spustit i na jediném nodu, ale za normálního provozu lze virtuální stroje podle potřeby a aktuálního zatížení mezi nody migrovat a dosáhnout tím optimálního rozdělení výkonu jak fyzických strojů, tak jejich hardwarových prostředků.