Product SiteDocumentation Site

1.3. Arhitectura Pacemaker

La cel mai înalt nivel, clusterul este compus din trei părţi:
Conceptual overview of the cluster stack

Fig. 1.1. Vederea Conceptuală a Stivei


When combined with Corosync, Pacemaker also supports popular open source cluster filesystems. [3]
Due to recent standardization within the cluster filesystem community, they make use of a common distributed lock manager which makes use of Corosync for its messaging capabilities and Pacemaker for its membership (which nodes are up/down) and fencing services.
The Pacemaker StackThe Pacemaker stack when running on Corosync

Fig. 1.2. Stiva Pacemaker


1.3.1. Componente Interne

Pacemaker însuşi este compus din patru componente cheie (ilustrate mai jos cu aceeaşi schemă de culori ca şi în diagrama anterioară):
  • CIB (aka. Cluster Information Base)
  • CRMd (aka. Cluster Resource Management daemon)
  • PEngine (aka. PE sau Policy Engine)
  • STONITHd
Subsystems of a Pacemaker cluster running on Corosync

Fig. 1.3. Componente Interne


The CIB uses XML to represent both the cluster’s configuration and current state of all resources in the cluster. The contents of the CIB are automatically kept in sync across the entire cluster and are used by the PEngine to compute the ideal state of the cluster and how it should be achieved.
This list of instructions is then fed to the DC (Designated Co-ordinator). Pacemaker centralizes all cluster decision making by electing one of the CRMd instances to act as a master. Should the elected CRMd process, or the node it is on, fail… a new one is quickly established.
The DC carries out the PEngine’s instructions in the required order by passing them to either the LRMd (Local Resource Management daemon) or CRMd peers on other nodes via the cluster messaging infrastructure (which in turn passes them on to their LRMd process).
Nodurile vecine raportează toate rezultatele operaţiunilor înapoi către DC şi pe baza rezultatelor aşteptate şi a rezultatelor actuale, fie va executa orice acţiuni care necesitau să aştepte ca şi cele anterioare să termine sau va anula procesarea şi va ruga PEngine-ul să recalculeze starea ideală a clusterului pe baza rezultatelor neaşteptate.
În anumite cazuri, ar putea fi necesar să oprească alimentarea nodurilor pentru a proteja datele partajate sau pentru a termina recuperarea resurselor. Pentru acest lucru Pacemaker vine cu STONITHd. STONITH este un acronim pentru Shoot-The-Other-Node-In-The-Head (împuşcă celălalt nod în cap) şi este implementat de obicei cu un switch de alimentare cu curent controlat de la distanţă. În Pacemaker, dispozitivele STONITH sunt modelate precum resursele (şi configurate în CIB) pentru a permite monitorizarea facilă a acestora în caz de eşec, totuşi STONITHd se ocupă de înţelegerea topologiei STONITH astfel încât clienţii acestuia să solicite pur şi simplu ca un nod să fie evacuat forțat şi acesta se va ocupa de rest.


[3] Even though Pacemaker also supports Heartbeat, the filesystems need to use the stack for messaging and membership and Corosync seems to be what they’re standardizing on. Technically it would be possible for them to support Heartbeat as well, however there seems little interest in this.