CRM (konfigurace zdrojů)
CRM (Cluster Resource Management) pracuje se "zdroji" (resource). "Zdroje" jsou ve své podstatě pojmenované konfigurace agentů, co zajišťují běh různých, vzájemně na sobě závislých služeb. Agent je ve své podstatě spustitelný skript, připravený takto pojmenovanou konfiguraci zpracovat a na základě výsledku jejího zpracování pak vrací hodnotu, kterou crm zobrazuje jako stav zdroje.
Takovým zdrojem je kupř. služba která zajistí nahození IP adresy, spuštění webového serveru, namountování adresáře do určitého bodu, aj.
Jednotlivé zdroje mohou (ale nemusí) být na sobě závislé. Některé mohou být vázané jen na učité stroje a u jiných zase může být důležité pořadí spouštění - tohle všechno řeší Pacemaker.
init skripty (LSB) versus zdroje
Při použití Pacemakeru by se měly prostřednictvím init skriptů automaticky spouštět pouze služby, které jsou nezbytné pro jeho nahození. Spouštění ostatních služeb by již měla ošetřit jeho konfigurace.
Je třeba si uvědomit, že init skripty jsou určeny k lokálnímu použití a samy o sobě nemají k dispozici prostředky k tomu, aby mohly zajistit, po spuštění nedojde ke konfliktu s konfigurací jiného stroje.
Pacemaker - díky tomu, že využívá v rámci infrastruktury clusteru komunikační vrstvu (corosync nebo Heartbeat) - ví o tom, kde co zrovna běží a tak může potencionálnímu konfliktu včas zabránit. Pochopitelně pouze v případě, že jde o službu kterou spravuje.CIB
Interně jsou veškerá data clusteru, včetně konfigurace a stavových informací, uchovávána v XML souboru zvaném CIB ( zkratka z angl. Cluster Information Base ).
Ten je lokálně uložen jako /var/lib/heartbeat/crm/cib.xml
a průběžně replikován démonem /usr/lib/heartbeat/cib
mezi ostatní nody.
Celá konfigurace a aktuální stav clusteru je rozparcelována v CIB souboru do dílčích elementů, se kterými lze pracovat jako s tzv. scope
- configuration - Obsahuje konfigurační nastavení, které lze upravovat také přes CLI
- crm_config - nastavení clusteru
- nodes - nody
- resources - zdroje
- constraints - pořadí spouštění a lokace zdrojů
- status - Obsahuje informace o aktuální situaci zdrojů na jednotlivých nodech
- node_state
- lrm - pro každý nod existuje samostatný element
- lrm_resources - elementy s informacemi o aktuálním stav zdrojů na příslušném nodu
- lrm - pro každý nod existuje samostatný element
- node_state
Veškeré operace s CIB se provádí výhradně prostřednictvím nástrojů k tomu určených. Při každé změně se totiž původní CIB soubor přejmenuje a místo něj se zapíše pod stejným názvem CIB nový. Současně se při tom vygeneruje jeho kontrolní součet. Pokud by došlo k dodatečné editaci, tak by se stal tento kontrolní součet neplatný, což by Pacemaker vyhodnotil jako chybu - proto se důrazně nedoporučuje editovat tyto soubory přímo! |
Ke správě CIB souboru lze použít buď přímo konzolové nástroje k tomu určené (cibadmin, crm_attribute, ...) nebo CLI rozhraní, které je z hlediska administrace intuitivnější. Ze CLI rozhraní se nejčastěji používá shellový crmsh, který se spouští příkazem crm, ale lze použít také nástroj pcs, napsaný v jazyce python (Red Hat).
SUSE Linux Enterprise má pro crmsh navíc k dispozici také webové rozhraní Hawk (HA Web Konsole), naprogramované v programovacím jazyce ruby. |
cibadmin
Lze brát jako základní nástroj pro manipulaci s CIB souborem. Jeho prostřednictvím lze nejenom data z CIB souboru získat, ale také měnit. V jistém smyslu se jedná o XML editor, který může pracovat v několika módech, specifikovaných jako atribut.
- --query | -Q
- Umožňuje z CIB souboru vypsat určitou oblast (scope), která odpovídá příslušnému XML elementu, ale také obsah všech XML elementů, které vyhoví předanému Xpath výrazu.
- --delete | -D
- Odstraní první element, který vyhoví předaným parametrům
Odstranění elementu rsc_order s identifikačním jménem or-test
nod-1:~# cibadmin --delete --xml-text '<rsc_order id="or-test"/>'
|
- --erase | -E
- Na rozdíl od --delete odstraní všechny elementy, které vyhoví předanému parametru.
- --create | -C
- Umožní vytvořit nový element v určité oblasti. Jeho syntaxe však musí být správná. Pokud syntaxe nového uzlu obsahuje chybu, nebo položku, která z hlediska syntaxe do elementu nepatří, pak změna realizována není. Příkaz nejprve vypíše chybu a za ní vysype celý XML obsah CIB souboru. Z chyby však lze vyčíst proč ke vložení uzlu nedošlo.
- --modify | -M
- Umožňuje element upravit (nemám odzkoušeno)
- --replace | -R
- Umožňuje nahradit buď obsah celého CIB souboru, nebo jenom jeho vybrané oblasti či elementu obsahem předaným jako XML buď přímo na řádce jako hodnota atributu --xml-text, nebo ze souboru s modifikovaným obsahem přes atribut --xml-file, kde se jako hodnota předá cesta k modifikovanému XML obsahu.
- --patch | -P
- --upgrade | -u
- --bump | -B
crm_attribute
Pro rychlou práci s atributy v konfiguraci CRM - k jejich vytvoření, i následnému dotazování, lze použít nástroj crm_attribute. Příkladem použití příkazu crm_attribute může být např. níže uvedený postup přidání poznámky do konfigurace ke stroji nod-2..
Použití
Stejná operace realizovaná prostřednictvím crm
Zdroje
Zdroje jsou v CIB potomky elementu resources
Základní zdroje - primitiva
Základem všech zdrojů jsou primitiva. Není-li takový zdroj součástí zdroje typu master/slave nebo klon, spouští Pacemaker takto nakonfigurovanou službu vždy pouze na jednom nodu.
Součástí konfigurace primitiva však mohou být i parametry, které Pacemaker vezme v potaz až v případě, že se stane součástí zdroje složitějšího.
Pro testování má Pacemaker k dispozici testovacího agenta Dummy (více viz kapitola CRM (Resource Agents)). Následující příklad demonstruje vytvoření testovacího primitiva s id test-dummy a jak takové primitivum vypadá ve formě XML elementu
Po každé úpravě konfigurace je před odesláním změn příkazem commit dobré příkazem verify ověřit, jestli náhodou při editaci nedošlo k překlepu, nebo konfliktu.
Komentáře
Každá rozsáhlejší konfigurace se může po čase stát nesrozumitelnou, proto lze ke každému vytvořenému zdroji pro větší srozumitelnost přidat komentář. Ten se ke zdroji přidá jako hodnota atributu description. Komentář pak bude viditelný i ve statusu zdroje.
I když by CRM s UTF-8 interně problém mít nemělo, jeho konzolové nástroje s ním pracovat neumí, proto se diakritice v komentářích raději vyhněte. |
Složené zdroje
Složené zdroje se tvoří vždy z exitujícího primitiva, které by mělo ve své konfiguraci obsahovat také nastavené parametry pro monitorování zdroje v roli Master i Slave.
master/slave
Zdroj se vytvoří z primitiva, které pak vždy na jednom z nodů běží v dominantním režimu (ve stavu master) a na druhém zpravidla v režimu závislém (ve stavu slave). To však nemusí platit vždy!
Kupř. DRBD může poskytovat zdroj v režimu master na obou nodech, protože si řeší paralelní přístup k datům interně. Ve většině případů však zdroj typu master/slave na master nodu zajišťuje normální provoz služby, kdežto zdroj spuštěný na slave nodu slouží pouze jako záložní pro případ selhání master nodu. Dojde-li k němu, pak se příslušné role zdroje mezi nody prohodí.
Toto přehození lze také vyvolat záměrně příkazem promote. V konfiguraci však v takovém případě zůstane záznam o vynucené lokaci, který lze odstranit tak, že je po přehození aplikován příkaz demote.
K tomu, aby zdroj fungoval jako master/slave, musí to podporovat agent výchozího primitiva. V případě testovacího Dummy agenta Pacemaker zdroj spustí na obou nodech jako slave/slave.
Zdroje typu master/slave nelze přesouvat! Příkaz move u nich vede k tomu, že oba nody skončí ve stavu slave. |
klon
Klonované zdroje jsou takové, u kterých není žádný z nodů dominantní.
Klonované zdroje má smysl přesouvat pouze v případě, je-li nakonfigurován běh pouze pro omezený počet paraleleních instancí.