Fencing utilizzando uno switch

dbPrerequisiti:

  • Uno switch a cui possiamo configurare l’ SNMP
  • Scrivere l’accesso allo switch tramite SNMP

L’idea di base di questo metodo è quello di isolare l’intero nodo o di isolare il nodo dallo storage condiviso. Il modo in cui questo viene fatto è quello di chiamare lo switch utilizzando il comando appropriato disattivando uno o più porte e di farlo efficacemente per evitare che il nodo non riavvi una macchina virtuale sullo storage condiviso.Per ripristinare l’accesso allo storage condiviso è necessario l’intervento successivamente sullo switch per ripristinare la porta o le porte. Se i nodi utilizzano il bonding è necessario disabilitare l’aggregazione sullo switch e non le singole porte.

L’esempio mostrato qui utilizza SNMPv2c senza password, ma una configurazione ACL sullo switch può consentire solo ai membri in esecuzione sul cluster di accedere alla vlan. Il fence_agent supporta sia un numero di indice o sia il nome per le porte.

Vedi l’elenco di interfacce note dello switch:

fence_ifmib -o list -c <community> -a <IP> -n switch

Disabilitare un’interfaccia specifica dello switch:

fence_ifmib --action=off -c <community> -a <IP> -n <index|name>

Attivare un’interfaccia specifica dello switch:

fence_ifmib --action=on -c <community> -a <IP> -n <index|name>

Esempio di configurazione del file cluster.conf:

<?xml version="1.0"?>
<cluster config_version="74" name="proxmox">
 <cman expected_votes="3" keyfile="/var/lib/pve-cluster/corosync.authkey"/>
 <quorumd allow_kill="0" interval="3" label="proxmox1_qdisk" tko="10" votes="1">
   <heuristic interval="3" program="ping $GATEWAY -c1 -w1" score="1" tko="4"/>
   <heuristic interval="3" program="ip addr | grep eth1 | grep -q UP" score="2" tko="3"/>
 </quorumd>
 <totem token="54000"/>
 <fencedevices>
   <fencedevice agent="fence_ifmib" community="fencing" ipaddr="172.16.3.254" name="hp1910" snmp_version="2c"/>
 </fencedevices>
 <clusternodes>
   <clusternode name="esx1" nodeid="1" votes="1">
     <fence>
       <method name="fence">
         <device action="off" name="hp1910" port="Bridge-Aggregation2"/>
       </method>
     </fence>
   </clusternode>
   <clusternode name="esx2" nodeid="2" votes="1">
     <fence>
       <method name="fence">
         <device action="off" name="hp1910" port="Bridge-Aggregation3"/>
       </method>
     </fence>
   </clusternode>
 </clusternodes>
 <rm>
   <failoverdomains>
     <failoverdomain name="webfailover" ordered="0" restricted="1">
       <failoverdomainnode name="esx1"/>
       <failoverdomainnode name="esx2"/>
     </failoverdomain>
   </failoverdomains>
   <resources>
     <ip address="172.16.3.7" monitor_link="5"/>
   </resources>
   <service autostart="1" domain="webfailover" name="web" recovery="relocate">
     <ip ref="172.16.3.7"/>
   </service>
   <pvevm autostart="1" vmid="109"/>
 </rm>
</cluster>