7.3. Configurer le fencing

La configuration du fencing consiste en (a) la spécification d'un (ou plusieurs) périphérique(s) fence dans un cluster et en (b) la spécification d'une (ou plusieurs) méthode(s) fence pour chaque nœud (à l'aide du ou des périphériques spécifiés).
Configurez cluster.conf comme suit en vous basant sur le type des périphériques et des méthodes fence requis pour votre configuration :
  1. Dans la section fencedevices, spécifiez chaque périphérique fence à l'aide d'un élément fencedevice et d'attributs dépendants au(x) périphérique(s) fence. L'Exemple 7.3, « Périphérique fence APC ajouté à cluster.conf » montre un exemple de fichier de configuration avec un périphérique fence APC qui lui est ajouté.
  2. Sur la section clusternodes, dans l'élément fence de chaque section de clusternode, spécifiez chaque méthode fence du nœud. Spécifiez le nom de la méthode fence à l'aide de l'attribut name de method. Spécifiez le périphérique fence pour chaque méthode fence à l'aide de l'élément device et de ses attributs, name et des paramètres spécifiques au périphérique fence. L'Exemple 7.4, « Méthodes fence ajoutées à cluster.conf » montre un exemple de méthode fence avec un périphérique fence pour chaque nœud dans le cluster.
  3. Pour des méthodes fence non-alimentées (c'est-à-dire le fencing SAN/stockage) dans la section clusternodes, ajoutez une section unfence. Ceci vous assure qu'un nœud fenced n'est pas ré-activé tant que le nœud n'a pas été redémarré. Pour plus d'informations sur l'unfencing d'un nœud, reportez-vous à la page man fence_node(8).
    La section unfence ne contient pas de sections method comme la section fence. Elle contient des références device, qui mettent en miroir les sections des périphériques correspondants pour fence, avec l'addition notable de l'action explicite (action) sur "on" ou sur "enable". La même section fencedevice est référencée par les lignes fence et unfence device et les mêmes arguments par nœud devraient être répétés.
    La spécification de l'attribut action sur "on" ou sur "enable" active le nœud lorsque redémarré. L'Exemple 7.4, « Méthodes fence ajoutées à cluster.conf » et l'Exemple 7.5, « cluster.conf : Multiples méthodes fence par nœud » incluent des exemple des éléments et attributs unfence.
    Pour obtenir plus d'informations sur unfence, reportez-vous à la page man fence_node.
  4. Mettez à jour l'attribut config_version en incrémentant sa valeur (par exemple, en la modifiant de config_version="2" à config_version="3">).
  5. Enregistrez /etc/cluster/cluster.conf.
  6. (Optional) Validez le fichier mis à jour sur le schéma du cluster (cluster.rng) en exécutant la commande ccs_config_validate. Par exemple :
    [root@example-01 ~]# ccs_config_validate 
    Configuration validates
    
  7. Exécutez la commande cman_tool version -r pour propager la configuration au reste des nœuds du cluster. Ceci exécutera aussi une validation supplémentaire. Il est nécessaire que ricci soit exécuté dans chaque nœud de cluster afin de pouvoir propager les informations mises à jour sur la configuration du cluster.
  8. Vérifiez que le fichier de configuration mis à jour a été propagé.
Si nécessaire, vous pouvez configurer des configurations complexes avec de multiples méthodes fence par nœud et de multiples périphériques fence par méthode fence. Lors de la spécification de multiples méthodes fence par nœud, si le fencing échoue avec la première méthode, le démon fence, fenced, tente la méthode suivante et continuera d'essayer les méthodes successivement jusqu'à ce qu'une d'entre elles fonctionne.
De temps en temps, le fencing d'un nœud requiert la désactivation de deux chemins d'E/S ou de deux ports d'alimentation. Ceci est effectué en spécifiant deux périphériques ou plus dans la méthode fence. fenced exécute l'agent fence une fois par ligne de périphérique fence, chaque ligne doit fonctionner pour que le fencing soit considéré comme réussi.
Des configurations plus complexes sont affichées dans la section intitulée « Exemples de configurations du fencing ».
Vous pouvez trouver plus d'informations sur la configuration de périphériques fence spécifiques sur la page man de l'agent des périphériques fence (par exemple, la page man fence_apc). En outre, vous pourrez trouver des informations supplémentaires sur les paramètres du fencing dans l'Annexe A, Paramètres des périphériques fence, sur les agents fence dans /usr/sbin/, sur le schéma du cluster dans /usr/share/cluster/cluster.rng et sur le schéma annoté sur /usr/share/doc/cman-X.Y.ZZ/cluster_conf.html (par exemple, /usr/share/doc/cman-3.0.12/cluster_conf.html).

Exemples de configurations du fencing

Les exemple suivants montrent une simple configuration avec une méthode par nœud et un périphérique fence par méthode fence :
Les exemples suivants proposent des configurations plus complexes :

Note

Les exemples dans cette section ne sont pas exhaustifs, il peut y avoir d'autres manières de configurer le fencing en fonction de vos besoins.

Exemple 7.3. Périphérique fence APC ajouté à cluster.conf


<cluster name="mycluster" config_version="3">
   <clusternodes>
     <clusternode name="node-01.example.com" nodeid="1">
         <fence>
         </fence>
     </clusternode>
     <clusternode name="node-02.example.com" nodeid="2">
         <fence>
         </fence>
     </clusternode>
     <clusternode name="node-03.example.com" nodeid="3">
         <fence>
         </fence>
     </clusternode>
   </clusternodes>
   <fencedevices>
         <fencedevice agent="fence_apc" ipaddr="apc_ip_example" login="login_example" name="apc" passwd="password_example"/>
   </fencedevices>
   <rm>
   </rm>
</cluster>

Dans cet exemple, un périphérique fence (fencedevice) a été ajouté à l'élément fencedevices en spécifiant l'agent fence (agent) en tant que fence_apc, l'adresse IP (ipaddr) en tant que apc_ip_example, l'identifiant de connexion (login) en tant que login_example, le nom du périphérique fence (name) en tant que apc et le mot de passe (passwd) en tant que password_example.

Exemple 7.4. Méthodes fence ajoutées à cluster.conf


<cluster name="mycluster" config_version="3">
   <clusternodes>
     <clusternode name="node-01.example.com" nodeid="1">
         <fence>
            <method name="APC">
              <device name="apc" port="1"/>
             </method>
         </fence>
     </clusternode>
     <clusternode name="node-02.example.com" nodeid="2">
         <fence>
            <method name="APC">
              <device name="apc" port="2"/>
            </method>
         </fence>
     </clusternode>
     <clusternode name="node-03.example.com" nodeid="3">
         <fence>
            <method name="APC">
              <device name="apc" port="3"/>
            </method>
         </fence>
     </clusternode>
   </clusternodes>
   <fencedevices>
         <fencedevice agent="fence_apc" ipaddr="apc_ip_example" login="login_example" name="apc" passwd="password_example"/>
   </fencedevices>
   <rm>
   </rm>
</cluster>

Dans cet exemple, une méthode fence (method) a été ajoutée à chaque nœud. Le nom de la méthode fence (name) de chaque nœud est APC. Le périphérique (device) pour la méthode fence dans chaque nœud spécifie le nom (name) comme apc et un unique numéro de port d'alimentation de l'interrupteur APC (port) pour chaque nœud. Par exemple, le numéro de port de node-01.example.com est 1 (port="1"). Le nom de périphérique de chaque nœud (device name="apc") pointe vers le périphérique fence au nom (name) apc sur cette ligne de l'élément fencedevices : fencedevice agent="fence_apc" ipaddr="apc_ip_example" login="login_example" name="apc" passwd="password_example".

Exemple 7.5. cluster.conf : Multiples méthodes fence par nœud


<cluster name="mycluster" config_version="3">
   <clusternodes>
     <clusternode name="node-01.example.com" nodeid="1">
         <fence>
            <method name="APC">
              <device name="apc" port="1"/>
             </method>
            <method name="SAN">
	      <device name="sanswitch1" port="11"/>
             </method>
         </fence>
         <unfence>
             <device name="sanswitch1" port="11" action="on"/> 
         </unfence
     </clusternode>
     <clusternode name="node-02.example.com" nodeid="2">
         <fence>
            <method name="APC">
              <device name="apc" port="2"/>
            </method>
            <method name="SAN">
	      <device name="sanswitch1" port="12"/>
             </method>
         </fence>
         <unfence>
             <device name="sanswitch1" port="12" action="on"/> 
         </unfence
     </clusternode>
     <clusternode name="node-03.example.com" nodeid="3">
         <fence>
            <method name="APC">
              <device name="apc" port="3"/>
            </method>
            <method name="SAN">
	      <device name="sanswitch1" port="13"/>
             </method>
         </fence>
         <unfence>
             <device name="sanswitch1" port="13" action="on"/> 
         </unfence
     </clusternode>
   </clusternodes>
   <fencedevices>
        <fencedevice agent="fence_apc" ipaddr="apc_ip_example" login="login_example" name="apc" passwd="password_example"/>
        <fencedevice agent="fence_sanbox2" ipaddr="san_ip_example"
login="login_example" name="sanswitch1" passwd="password_example"/>
   </fencedevices>
   <rm>
   </rm>
</cluster>


Exemple 7.6. cluster.conf : Fencing, multiples ports multipath


<cluster name="mycluster" config_version="3">
   <clusternodes>
     <clusternode name="node-01.example.com" nodeid="1">
         <fence>
            <method name="SAN-multi">
	      <device name="sanswitch1" port="11"/>
	      <device name="sanswitch2" port="11"/>
	    </method>
         </fence>
         <unfence>
             <device name="sanswitch1" port="11" action="on"/>
             <device name="sanswitch2" port="11" action="on"/>
         </unfence
     </clusternode>
     <clusternode name="node-02.example.com" nodeid="2">
         <fence>
            <method name="SAN-multi">
	      <device name="sanswitch1" port="12"/>
	      <device name="sanswitch2" port="12"/>
            </method>
         </fence>
         <unfence>
             <device name="sanswitch1" port="12" action="on"/>
             <device name="sanswitch2" port="12" action="on"/>
         </unfence
     </clusternode>
     <clusternode name="node-03.example.com" nodeid="3">
         <fence>
            <method name="SAN-multi">
	      <device name="sanswitch1" port="13"/>
	      <device name="sanswitch2" port="13"/>
            </method>
         </fence>
         <unfence>
             <device name="sanswitch1" port="13" action="on"/>
             <device name="sanswitch2" port="13" action="on"/>
         </unfence
     </clusternode>
   </clusternodes>
   <fencedevices>
        <fencedevice agent="fence_sanbox2" ipaddr="san_ip_example"
login="login_example" name="sanswitch1" passwd="password_example"/> 
        <fencedevice agent="fence_sanbox2" ipaddr="san_ip_example"
login="login_example" name="sanswitch2" passwd="password_example"/> 
   </fencedevices>
   <rm>
   </rm>
</cluster>


Exemple 7.7. cluster.conf : Effectuer le fencing de nœuds avec des alimentations duelles


<cluster name="mycluster" config_version="3">
   <clusternodes>
     <clusternode name="node-01.example.com" nodeid="1">
         <fence>
            <method name="APC-dual">
              <device name="apc1" port="1"action="off"/>
              <device name="apc2" port="1"action="off"/>
              <device name="apc1" port="1"action="on"/>
              <device name="apc2" port="1"action="on"/>
             </method>
         </fence>
     </clusternode>
     <clusternode name="node-02.example.com" nodeid="2">
         <fence>
            <method name="APC-dual">
              <device name="apc1" port="2"action="off"/>
              <device name="apc2" port="2"action="off"/>
              <device name="apc1" port="2"action="on"/>
              <device name="apc2" port="2"action="on"/>
            </method>
         </fence>
     </clusternode>
     <clusternode name="node-03.example.com" nodeid="3">
         <fence>
            <method name="APC-dual">
              <device name="apc1" port="3"action="off"/>
              <device name="apc2" port="3"action="off"/>
              <device name="apc1" port="3"action="on"/>
              <device name="apc2" port="3"action="on"/>
            </method>
         </fence>
     </clusternode>
   </clusternodes>
   <fencedevices>
       <fencedevice agent="fence_apc" ipaddr="apc_ip_example" login="login_example" name="apc1" passwd="password_example"/>
       <fencedevice agent="fence_apc" ipaddr="apc_ip_example" login="login_example" name="apc2" passwd="password_example"/>
   </fencedevices>
   <rm>
   </rm>
</cluster>


Lors de l'utilisation d'interrupteurs d'alimentation pour clôturer des nœuds avec des alimentations duelles, les agents doivent fermer les deux ports d'alimentation avant de restaurer l'alimentation sur l'un ou l'autre. Le comportement off-on par défaut de l'agent pourrait faire que l'alimentation n'est jamais complètement désactivée sur le nœud.