Product SiteDocumentation Site

10.3.6. Multi-state Constraints

In most cases, a multi-state resources will have a single copy on each active cluster node. If this is not the case, you can indicate which nodes the cluster should preferentially assign copies to with resource location constraints. These constraints are written no differently to those for regular resources except that the master’s id is used.
Când ţinem cont de resursele multi-state în restricţii, pentru majoritatea scopurilor este suficient să le tratăm ca pe clone. Excepţia survine atunci când sunt folosite câmpurile rsc-role şi/sau with-rsc-role (pentru restricţii de colocare) şi câmpurile first-action şi/sau then-action (pentru restricţii de ordonare).

Tabel 10.7. Opţiuni de restricţionare adiţionale relevante la resurse multi-state

Câmp Descriere
rsc-role
An additional attribute of colocation constraints that specifies the role that rsc must be in. Allowed values: Started, Master, Slave.
with-rsc-role
An additional attribute of colocation constraints that specifies the role that with-rsc must be in. Allowed values: Started, Master, Slave.
first-action
An additional attribute of ordering constraints that specifies the action that the first resource must complete before executing the specified action for the then resource. Allowed values: start, stop, promote, demote.
then-action
An additional attribute of ordering constraints that specifies the action that the then resource can only execute after the first-action on the first resource has completed. Allowed values: start, stop, promote, demote. Defaults to the value (specified or implied) of first-action.

În exemplul de mai jos, myApp va aştepta până când una din copiile bazei de date a fost pornită şi promovată la master înainte de a fi ea însăşi pornită. Doar dacă nici o copie nu poate fi promovată va fi împiedicată apache-stats de a fi activă. În mod adiţional, baza de date va aştepta ca myApp să fie oprită înainte să fie degradată.

Exemplu 10.8. Exemple de restricţii implicând resurse multi-state

<constraints>
   <rsc_location id="db-prefers-node1" rsc="database" node="node1" score="500"/>
   <rsc_colocation id="backup-with-db-slave" rsc="backup"
     with-rsc="database" with-rsc-role="Slave"/>
   <rsc_colocation id="myapp-with-db-master" rsc="myApp"
     with-rsc="database" with-rsc-role="Master"/>
   <rsc_order id="start-db-before-backup" first="database" then="backup"/>
   <rsc_order id="promote-db-then-app" first="database" first-action="promote"
     then="myApp" then-action="start"/>
</constraints>

Colocarea unei resurse obişnuite (sau a unui grup) cu o resursă multi-state înseamnă că poate rula pe orice maşină cu o copie activă a resursei multi-state care se alfă în starea specificată (Master sau Slave). În exemplu, clusterul va alege o locaţie în funcţie de unde rulează baza de date în mod curent ca Master, şi dacă sunt mai multe instanţe de Master va lua în considerare şi preferinţele proprii de locaţie ale myApp când va decide care locaţie să aleagă.
Colocarea alături de clone obişnuite şi alte resurse multi-state este posibilă de asemenea. În astfel de cazuri, setul de locaţii permise pentru clona rsc este (după filtrarea rolului) limitat la nodurile pe care resursa multi-state with-rsc există (sau va exista) în rolul specificat. Alocarea este atunci efectuată în mod normal.