Pacemaker

Z DCEwiki
Skočit na navigaci Skočit na vyhledávání

CRM (Cluster Resource Management) je sada démonů, která v rámci HA clusteru zajišťuje vzájemnou komunikaci a manipulaci se zdroji (resource). Zdrojem může být prakticky libovolná služba, kterou má HA cluster poskytovat (web server, virtuální stroj, sdílený disk & etc..). Existuje více řešení CRM, mezi open-source patří Pacemaker.

Pacemaker

http://www.clusterlabs.org/

Pacemaker je CRM manager, který zajišťuje spouštění či naopak zastavování konkrétních služeb (nastavení IP adres, spouštění serverů aj.) na jednotlivých nodech. Aby věděl která služba má kde být spuštěna, musí mít k dispozici démona, který udržuje v rámci infrastruktury clusteru vzájemnou komunikaci mezi jednotlivými nody.

Pacemaker vzniknul v rámci projeku Linux-HA, což mělo být komplexní řešení clusterové infrastruktury, postavené na Linuxu. Na počátku šlo o jeden balík démonů, ale postupem času se vývoj projektu rozdělil na tři samostatné větve:

  • Nejprve se oddělil vývoj Cluster Glue (samostatný od verze 1.0), což je sada démonů zajišťujících spolupráci nodu s infrastrukturou clusteru.
  • vývoj démona obstarávajícího vzájemnou komunikaci nodů, s názvem heartbeat se oddělil od hlavního projektu od verze 2.1.4 Jeho název se často používal jako synonymum pro celý projekt Linux-HA.
  • samostatný vývoj správce zdrojů (Resource Agents) s názvem Pacemaker začal na sklonku roku 2003, kdy začal Andrew Beekhof pracovat na novém CRM, který by odstranil omezení původního verze. Ta totiž, mimo jiné, umožňovala vytvořit cluster maximálně se dvěma nody. První zárodek Pacemakeru se objevil 30. července 2005 v rámci vydání Heartbeat v. 2.0.0. K úplnému osamostatnění projektu došlo na konci roku 2007.

Pacemaker komunikuje prostřednictvím heartbeatu, nebo corosyncu s CRM na ostatních nodech a zároveň s lokálním systémem nodu.

  • cib - zajišťuje replikaci konfigurace, tak aby byla na všech nodech identická
  • crmd - interpretuje pravidla nastavená v konfiguraci a podle potřeby volá buď lokální lrmd, stonith nebo pengine
  • stonith - zajišťuje v případě potřeby odstřelení vzpurného nodu
  • lrmd - spouští či zastavuje lokální služby v rámci nodu
  • attrd
  • pengine - zajišťuje správné pořadí spouštění služeb, aby nedošlo případně ke konfliktu


Poznámka Heartbeat i corosync zajišťují jednu a tu samou věc, tudíž nemá smysl je spouštět zároveň. Pacemaker může stejně používat vždy jen jeden z nich, a nikdy ne oba dva najednou. Navíc může v případě špatné konfigurace docházet i k nežádoucím kolizím v rámci infrastruktury clusteru.

Heartbeat

http://linux-ha.org/wiki/Heartbeat

Jak už bylo zmíněno Heartbeat byl pokračováním původního projektu Linux-HA. Původní vývojáři jej však opustili, protože je pro ně výhodnější stavět nad corosyncem, za jehož vývojem stojí Red Hat. Vývoje Heartbeatu se chopil Linbit (viz DRBD8, ale výsledný produkt má asi nějaké nepříjemné bugy, které se v našem konkrétním případě projevovaly tím, že při spouštění heartbeatu byl vždy nabourán linuxový kernel, což vedlo k opakovaným restartům systému.

Jinak konfigurace Heartbeatu je poměrně triviální. Viz obsah souboru /etc/heartbeat/ha.cf

Poznámka
use_logd off
logfile /var/log/ha-log.log
debugfile /var/log/ha-debug.log
crm on
autojoin none
mcast6 eth3 ff02::1 694 1 0
#mcast eth3 224.0.0.1 694 1 0
node charlie-brown
node snoopy
pacemaker

Poznámky ke konfiguračnímu souboru:

  • Cesta /etc/ha.d je u Debianu pouze symlink na adresář /etc/heartbeat
  • Nody se hledají přes multicast. V konfiguraci je uvedeno na kterém rozhraní se mají pakety posílat.
  • Identifikace lokálního nodu se provádí přes jeho hostname
  • ve výchozí stavu use_logd loguje do /var/log/daemon.log
Upozornění Heartbeat až do verze 3.0.4 (vydané v prosinci 2010) nepodporoval IPv6 protokol, a maintainer debianího instalačního balíku heartbeat-3.0.4-1 opoměl plugin mcast6 do něj přidat!

Autorizace

Autorizace u heartbeatu se provádí na základě klíče v souboru /etc/heartbeat/authkeys. Pozor! Výchozí jméno i obsah tohoto autorizačního souboru jsou jiné, než při autorizaci co používá #corosync.

/etc/heartbeat/authkeys je textový soubor, kde je uveden typ použitého šifrování a heslo, případně jeho hash. Viz níže:

Poznámka
auth 1
1 sha1 (stdin)= df6973cd744d4de118b85c72eee3625

Corosync

http://www.corosync.org/

Corosync Vzniknul jako derivát projektu openais, jehož cílem byla implementace jednotného API pro komunikaci v rámci clusteru.

Vývoj původního projektu openais trval téměř šest let a během té doby si mnoho projektů vytvořilo své vlastní komunikační mechanismy. Proto byl na základech tohoto projektu postaven Corosync Cluster Engine, který umožnil jejich sjednocení do jednoho komunikačního rozhraní a protokol openais se tak stal jejich pojítkem.

Autorizace

Autorizační klíč pro corosync je umístěn v binární klíčence, což je (ve výchozím nastavení) soubor /etc/corosync/authkey.

Upozornění Pro vygenerování autorizačního klíče není třeba téměř nic, kromě spuštění následujícího příkazu..
Poznámka
nod-1:~# corosync-keygen

.. a trochy entropie. Podtržení není vůbec náhodné. Natrápil jsem se docela dlouho, než jsem zjistil, že při vzdáleném přístupu přes ssh můžete klepat do klávesnice jako zběsilí a nestane se vůbec nic. V takovém případě je třeba potřebnou entropii pro vygenerování klíče dodat jiným způsobem. Stačí k tomu kupř. paralelně spustit na stroji nod-1 příkaz find na nějaký větší rozsáhlejší adresář.

O dodání potřebné entropie se pak postarají IO operace.