CRM (Resource Agents)

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

Provoz jakékoliv zdroje zajišťuje tzv. Resource Agent, což může být buď shellový skript, nebo binární soubor, který je pravidelných intervalech spouštěn. Základní sady těchto "agentů", jsou součástí několika instalačních balíků cluster-agents, lsb... Postupy ke konfiguraci CRM, které se válí na internetu, jsou většinou založeny na jejich použití. Můžete se však dostat do situace, kdy žádný z nich vašim potřebám vyhovovat nebude. V takovém případě máte dvě možnosti:

  1. Vyzkoušet použít agenta od jiného poskytovatele ("providera") Viz seznamu agentů na kterém naleznete mj. i popis k těm distribučním
  2. Napsat si agenta vlastního. Tomu, jak takový agent má vypadat bude věnována až následující kapitola.

Resource agent obsahuje funkce a nastavení výchozích proměnných, které se při konfiguraci přenastaví podle potřeb zdroje. Tato konfigurace se provádí prostřednictvím konzolového nástroje crm, a to buď při výchozí konfiguraci zdroje ( crm -> configure ), nebo i operativně, později za běhu ( crm -> resource ). Jaké parametry lze u použitého agenta nastavit, se lze dozvědět přes jejich informační rozhraní ( crm -> ra )

Poznámka Jelikož mi zpočátku dlouho nebylo jasné, co je u crm konzolový příkaz a co konfigurační sekvence, pokusil jsem se pro větší přehlednost u konfiguračních sekvencí uvádět znaky ->, kterými jsem chtěl naznačit krok - "dopiš a dej enter"

Zcela konkrétně. Sekvence crm -> ra -> help by měla vést k tomu, že se na konzoli vypíše přehled dostupných příkazů v rámci sekvence ra, což je oblast v níž lze zjišťovat informace o dostupných agentech - jak lze u nich použít parametry, jaké jsou u nich doporučené hodnoty, atp.

Při nastavení zdroje se cesta k agentovi, který má být použit uvádí přes tři parametry, navzájem oddělené dvojtečkami:

class:provider:agent

Třída - "class" seskupuje agenty určitého typu. Jelikož může být na jednu službu dostupných více agentů od různých poskytovatelů (poskytovatel - "provider"), může v rámci hierarchické struktury crm existovat ještě tzv. "provider", což je vlastně podadresář, v němž je skript (nebo binární soubor) resource agenta umístěn. Pokud se tedy nějaký "provider" v rámci třídy vyskytuje, je vypsán při sekvenci crm -> ra -> classes za lomítkem..

Poznámka
crm(live)ra# classes
heartbeat
lsb
ocf / dce heartbeat linbit pacemaker
stonith

Jak už bylo zmíněno, class a provider nejsou v podstatě nic jiného, než popis cesty k resource agentu..

heartbeat
/etc/ha.d/resource.d/ (skripty)
lsb
/etc/init.d (systémové spouštěcí skripty)
ocf
/usr/lib/ocf/resource.d/ (skripty)
stonith
/usr/lib/stonith/plugins/stonith2 (binárky)
/usr/lib/stonith/plugins/external (skripty)
Upozornění Než začnete psát vlastního agenta byste měli vědět jak se crm pracuje a pak začít, dejme tomu s úpravou některého již osvědčeného agenta. V základní sadě je agent s názvem Dummy, který nedělá nic jiného, než demonstruje kde běží. Na něm si můžete odzkoušet přesuny zdroje mezi nody, seskupování, zastavování, spouštění atp.

Tato kapitola je věnována poznámkám pro tvorbu vlastního "Resource Agenta". Jak použít stávající agenty se můžete dočíst v samostatných článcích:

Vlastní agent

Vlastního agenta je nejlépe začít tvořit ve vlastním "provider" adresáři, tak aby nemohl nabourat ostatní agenty.

Vzhledem k tomu, že by skript agenta měl být identický na všech nodech, ulehčí práci skript, kterým po každé změně můžeme provést jejich rozkopírování mezi nody. Abychom se přitom nemuseli zdržovat zadáváním hesla, je vhodné nastavit pro vzájemnou autorizaci mezi nody, u uživatele pod kterým agenta chcete psát autorizaci přes veřejné ssh klíče.

Když se objeví ve skriptu nějaká chyba, lze ji nejsnáze nalézt, je-li zavolán crm jako příkaz, když crmd démon neběží. Jinak se objeví pouze oznámení o chybě, bez konkrétního výpisu.

Poznámka
nod-2:~# crm configure ra info ocf:dce:drbd

Základem každého agenta je funkce meta_data, skrz kterou se do CRM načítá výchozí konfigurace zdroje ve formátu XML. V tomto XML zdroji se rovněž definují proměnné se kterými případně budete v rámci agenta pracovat (element parameter) a výchozí časové intervaly pro akce (element action).

Upozornění Agenti nemají žádnou lokalizaci, přestože parametr lang="en" v elementech budí dojem, že ano. Ve skutečnosti CRM u elementů nastavením tohoto parametru ignoruje, takže když do něj naprasíte text v utf8, tak se na konzoli normálně vypíše včetně diakritiky.