Haute disponibilité

From All4Dev

En cours ...

Configuration (par l'exemple) de heartbeat 2.0.3 sous Debian 3.1 (Sarge)

L'installation est réalisée sur trois machines (test1, test2, test3), installée sous Debian GNU/Linux 3.1 avec un système de base est une connexion réseau fonctionnelle.


Heartbeat version 2 n'est pas disponible sous Sarge, il faut donc le récupérer sur http://www.backports.org (après modification de /etc/apt/sources.list et /etc/apt/preferences, aptitude update && aptitude install hearbeat-2)

Créer sur chaque machine le fichier /etc/ha.d/authkeys contenant par exemple les lignes suivantes

auth 3
3 md5 mot2pass

Changer les droits pour protéger ce fichier

chmod 0600 /etc/ha.d/authkeys

Créer sur chaque machine le fichier /etc/ha.d/ha.cf contenant les lignes suivantes

logfile	/var/log/ha-log
mcast eth0 225.0.0.1 694 1 0
auto_failback on
autojoin any
crm 1

Après s'être bien assurée que heartbeat est arrêté, mettre en place le fichier /var/lib/heartbeat/crm/cib.xml

<cib>
 <configuration>
    <crm_config>
       <nvpair id="transition_timeout" name="transition_timeout" value="120s"/>
       <nvpair id="symmetric_cluster" name="symmetric_cluster" value="true"/>
       <nvpair id="stonith_enabled" name="stonith_enabled" value="false"/>
       <nvpair id="no_quorum_policy" name="no_quorum_policy" value="stop"/>
       <nvpair id="default_resource_stickiness" name="default_resource_stickiness" value="0"/>
       <nvpair id="is_managed_default" name="is_managed_default" value="true"/>
       <nvpair id="stop_orphan_resources" name="stop_orphan_resources" value="false"/>
       <nvpair id="stop_orphan_actions" name="stop_orphan_actions" value="false"/>
       <nvpair id="suppress_cib_writes" name="suppress_cib_writes" value="true"/>
     </crm_config>
   <nodes/>
   <resources>
     <primitive id="ip_resource_1" class="ocf" type="IPaddr" provider="heartbeat">
       <instance_attributes>
         <attributes>
           <nvpair name="ip" value="10.0.0.11"/>
         </attributes>
       </instance_attributes>
     </primitive>
     <primitive id="ip_resource_2" class="ocf" type="IPaddr" provider="heartbeat">
       <instance_attributes>
         <attributes>
           <nvpair name="ip" value="10.0.0.12"/>
         </attributes>
       </instance_attributes>
     </primitive>
     <primitive id="ip_resource_3" class="ocf" type="IPaddr" provider="heartbeat">
       <instance_attributes>
         <attributes>
           <nvpair name="ip" value="10.0.0.13"/>
         </attributes>
       </instance_attributes>
     </primitive>
   </resources>
   <constraints>
     <rsc_location id="run_ip_resource_1" rsc="ip_resource_1">
       <rule id="pref_run_ip_resource_1" score="100">
         <expression attribute="#uname" operation="eq" value="test1"/>
       </rule>
     </rsc_location>
     <rsc_location id="run_ip_resource_2" rsc="ip_resource_2">
       <rule id="pref_run_ip_resource_2" score="100">
         <expression attribute="#uname" operation="eq" value="test2"/>
       </rule>
     </rsc_location>
     <rsc_location id="run_ip_resource_3" rsc="ip_resource_3">
       <rule id="pref_run_ip_resource_3" score="100">
         <expression attribute="#uname" operation="eq" value="test3"/>
       </rule>
     </rsc_location>
   </constraints>
 </configuration>
 <status/>
</cib>

Ici, on a 3 resources (une par serveur) spécifiant que chaque serveur doit avoir une IP de service, c'est une de celle-ci qui sera basculée d'un serveur à un autre en cas de défaillance.

heartbeat recommande de modifier la configuration par défaut en ajoutant la ligne suivante dans /etc/sysctl.conf

kernel/core_uses_pid=1

Il faut ensuite appliquer cette configuration:

/etc/init.d/procps.sh restart


Il suffit maintenant de démarrer heartbeat sur les 3 machines

/etc/init.d/heartbeat start

Un dialogue va s'établir entre les machines et une fois dans un état stable, les resources vont être activée sur chaque machine.

Lorsqu'une machine tombe en panne (ne répond plus au lien heartbeat), une des autres machines du cluster prendra sa resource.

En cas de création d'une nouvelle machine par "rsync" d'une machine du cluster, il faut impérativement supprimer les fichiers suivants sur la nouvelle machine

/var/lib/heartbeat/hb_uuid