Préambule

L’objectif de cette installation est la mise en place de serveurs mettant en œuvre la haute disponibilité.
La Haute Disponibilité (HA de l’anglais High Availability) est une architecture de système ou un service désignant le fait que cette architecture ou ce service a un taux de disponibilité convenable. Dans notre cas, nous utiliserons le clustering de disques qui est en réalité la réplication en temps réel des disques ainsi que la mise en place de l’IP Failover permettant aux services web (HTTP, Mail, …) d’être routés sur un autre serveur sans avoir à attendre le temps de propagation dû au changement des DNS.
Nous mettrons donc en œuvre les éléments suivants :

  • Heartbeat : permettant de basculer d’un serveur à l’autre en cas de panne
  • DRBD : mettant en place un système RAID 1 entre 2 serveurs (réplication des données en temps réel)
  • VPN IPsec : permet de sécurisé les échange entre les serveurs

Les pré-requis avant toute installation proprement parlée du HA sont les suivantes :

  • Disposer de 2 serveurs, ils ne doivent pas être forcément identiques
  • Avoir une connexion de 1Gb/s entre les serveurs
  • Disposer d’une partition de taille identique sur chacun des serveurs
  • Disposer d’une adresse IP propre à chacun des serveurs – nous les nommerons adresses IP d’administration
  • Disposer d’une adresse IP pouvant être attribuée de manière indifféremment par le système à un serveur – nous la nommerons adresse IP publique

A mon sens, la configuration minimum chez OVH pour la mise en place d’un cluster est proposée par les serveur EG Max. Cette procédure déroule les différentes étapes d’installation sur ces serveurs, mais elle est très facilement adaptable sur les autres type de serveurs. Néanmoins, les particularités OVH sont :

  • Indication sur le partitionnement des disques
  • Indication sur la bande passante à utiliser par DRBD
  • Mise en place du basculement du Failover

Conventions

Répartition des adresses IP avec nom que nous utiliserons pour les nommer dans ce document :
94.0.0.1: Adresse IP associée au serveur maître – master.exemple.fr
94.0.0.2: Adresse IP associée au serveur esclave – slave.exemple.fr
91.0.0.30 : Adresse IP failover à réserver sur le manager – public.exemple.fr
Les noms de domaine doivent exister et doivent être correctement configures. Il est à noter que les services utilisant ce cluster devront être configurés sur l’adresse IP 91.0.0.30, c’est celle qui va basculer d’un serveur à l’autre en cas de panne.

Définition du nom des serveurs, il faut vérifier le nom du serveur à l’aide de

# uname -n

Pour modifier à votre convenance, modifier le fichier /etc/hostname. Il faut penser à redémarrer votre serveur pour que la modification soit prise en compte.

Choix de l’OS

L’OS choisit chez OVH pour les serveurs EG Max est une Debian 5.0 Lenny 64bits.
Mais cette procédure d’installation fonctionne correctement avec la version 32bits de Lenny.

Partitions des disques

Les disques sont partitionnés somme suit :

Type de partition Système de fichiers Point de montage Taille (en Go)
Primaire ext3 / 100
Primaire swap 8
Primaire ext3 /home 642

Mise à jour du serveur

La distribution installée sur le serveur n’est pas forcément à jour, il convient d’installer les derniers paquets disponibles, ceci doit être réalisé par:

# apt-get update
# apt-get upgrade

Compilation du noyau

Le noyau fourni par OVH doit être recompilé afin de permettre l’utilisation des modules.

# cd /usr/src/
# wget ftp://ftp.ovh.net/made-in-ovh/bzImage/linux-2.6.28.4-ovh.tar.gz
# tar -xzf linux-2.6.28.4-ovh.tar.gz
# ln -s linux-2.6.28.4-ovh linux
# wget ftp://ftp.ovh.net/made-in-ovh/bzImage/2.6-config-xxxx-std-ipv4-64
# cp 2.6-config-xxxx-std-ipv4-64 linux/.config
# cd linux

Adaptez le nom du noyau utilisé en fonction de la version disponible dans le dossier ftp://ftp.ovh.net/made-in-ovh/bzImage

Afin d’activer les différents éléments du noyau, il faut lancer la commande:

# make menuconfig

Les éléments suivants doivent être activés, vérifiez et activé les le cas échéant :

[*]   Enable loadable module support  --->
 	[*]   Forced module loading
 	[*]   Module unloading
 	[*]     Forced module unloading 
[*] Networking support  --->
 	       Networking options  --->
 		<*>   IP: IPsec transport mode
 		<*>   IP: IPsec tunnel mode
 		<*>   IP: IPsec BEET mode
       Device Drivers  --->
 	<*> Connector - unified userspace <-> kernelspace linker  --->
 -*- Cryptographic API  --->
 	[*]   FIPS 200 compliance
 	<*>   Null algorithms
 	<*>   CCM support
 	<*>   GCM/GMAC support
 	<*>   CTR support
 	<*>   CTS support
 	-*-   HMAC support
 	-*-   AES cipher algorithms
 	<*>   AES cipher algorithms (x86_64)
 	<*>   Anubis cipher algorithm
 	<*>   Camellia cipher algorithms
 	<*>   Pseudo Random Number Generation for Cryptographic modules

Compilation du module et installation

# make
# make modules_install
# make bzImage
# cp arch/x86_64/boot/bzImage /boot/bzImage-2.6.28.4-xxxx-std-ipv4-64
# cp System.map /boot/System.map-2.6.28.4-xxxx-std-ipv4-64

Edition de la configuration de lilo (boot loader)

# vi /etc/lilo.conf

Le fichier devra ressembler à ceci:

lba32
boot=/dev/sda
prompt
timeout=50
#Enable large memory mode.
large-memory
image=/boot/bzImage-2.6.28.4-xxxx-std-ipv4-64
        label="Linux"
        root=/dev/sda1
        read-only

Mise en place du nouveau boot

# lilo
Added Linux-modules *
Added Linux

Reboot le serveur

# reboot

VPN IPSec

Nous allons mettre en place un VPN basé sur KAME IPSec. Ceci permettra de sécuriser les échanges entre les 2 serveurs.
Notre besoin est de connecter 2 points de façon sécurisée, nous allons donc utiliser le mode Transport, comme suit :

# apt-get install ipsec-tools tcpdump

Création des clés sécurisées

Afin de pouvoir garantir la sécurité des échanges, nous devons réaliser des clés de cryptage unique pour ces serveurs.
Génération de la clé 160 bits:

# hexdump -e '8/2 "%04x"' /dev/urandom -n 20;echo

Génération de la clé 224 bits

# hexdump -e '8/2 "%04x"' /dev/urandom -n 28;echo

Le résultat de ces commandes est à reporter dans la configuration ci-dessous. La valeur sera précédée par un 0x. Pour exemple :

# hexdump -e '8/2 "%04x"' /dev/urandom -n 20;echo
eb177148a976aa0bf346dfef0f45f4d7c79bc831

La valeur de la clé 160 bits sera donc

add 94.0.0.2 94.0.0.1 ah 24500 -A hmac-sha1 0xeb177148a976aa0bf346dfef0f45f4d7c79bc831;

Configuration de IPSec

Configuration du serveur maître, dans /etc/ipsec-tools.conf :

#!/usr/sbin/setkey –f
flush;
spdflush;
# AH
add 94.0.0.2 94.0.0.1 ah 24500 -A hmac-sha1 " clé hexa 160 bits ";
add 94.0.0.1 94.0.0.2 ah 15700 -A hmac-sha1 " clé hexa 160 bits ";
# ESP
add 94.0.0.2 94.0.0.1 esp 24501 -E aes-ctr " clé hexa 224 bits ";
add 94.0.0.1 94.0.0.2 esp 15701 -E aes-ctr " clé hexa 224 bits ";
# Transport
spdadd 94.0.0.1 94.0.0.2 any -P out ipsec
           esp/transport//require
           ah/transport//require;
spdadd 94.0.0.2 94.0.0.1 any -P in ipsec
           esp/transport//require
           ah/transport//require;

Configuration du serveur esclave, dans /etc/ipsec-tools.conf :

#!/usr/sbin/setkey –f
flush;
spdflush;
# AH
add 94.0.0.2 94.0.0.1 ah 24500 -A hmac-sha1 " clé hexa 160 bits ";
add 94.0.0.1 94.0.0.2 ah 15700 -A hmac-sha1 " clé hexa 160 bits ";
# ESP
add 94.0.0.2 94.0.0.1 esp 24501 -E aes-ctr " clé hexa 224 bits ";
add 94.0.0.1 94.0.0.2 esp 15701 -E aes-ctr " clé hexa 224 bits ";
# Transport
spdadd 94.0.0.2 94.0.0.1 any -P out ipsec
           esp/transport//require
           ah/transport//require;
spdadd 94.0.0.1 94.0.0.2 any -P in ipsec
           esp/transport//require
           ah/transport//require;

Ne pas oublier de remplacer le texte clé hexa 32 bits et clé hexa 48 bits par les valeurs obtenue à l’étape précédente. Dans notre exemple, les clés sont symétriques (les mêmes sur chacun des serveurs), une clé différente peut être mise en place sur chacun des serveurs.
Sur chacun des serveurs exécuter la commande

# /etc/init.d/setkey restart

Vérification du bon fonctionnement du VPN

Afin de vérifier que le VPN est bien effectif, sur chacun des serveurs il faut effectuer un ping sur l’autre serveur et examiner les paquets échangés. Par exemple, sur le serveur maître :

  • Dans une fenêtre SSH exécuter
    # ping 94.0.0.2
    

  • Dans une autre fenêtre
    # tcpdump -n "host 94.0.0.2"
    14:32:07.390136 IP 94.0.0.1 > 94.0.0.2: AH(spi=0x00003d54,seq=0x126cb): ESP(spi=0x00003d55,seq=0x126cb), length 84
    14:32:07.390311 IP 94.0.0.2 > 94.0.0.1: AH(spi=0x00005fb4,seq=0x1de): ESP(spi=0x00005fb5,seq=0x1de), length 84
    14:32:08.389124 IP 94.0.0.1 > 94.0.0.2: AH(spi=0x00003d54,seq=0x126cd): ESP(spi=0x00003d55,seq=0x126cd), length 84
    14:32:08.389294 IP 94.0.0.2 > 94.0.0.1: AH(spi=0x00005fb4,seq=0x1e0): ESP(spi=0x00005fb5,seq=0x1e0), length 84
    

Faire de même sur le serveur esclave.

Heartbeat

Heartbeat est le deamon qui teste la disponibilité des serveurs et qui, le cas échéant, permet de promouvoir un serveur en tant que maître.

Installation de Heartbeat

# apt-get install heartbeat chkconfig libsoap-lite-perl
Heartbeat not configured: /etc/ha.d/ha.cf not found.
Heartbeat failure [rc=1]. Failed.

Le message d’erreur est normal
Configuration de Heartbeat sur le serveur Maître : /etc/ha.d/ha.cf


ucast eth0 94.0.0.2

debugfile /var/log/ha.debug
logfile /var/log/ha.log
logfacility local0

  1. délai entre deux battements de pouls
    keepalive 2
  2. temps nécessaire avant de considérer un noeud comme étant mort
    deadtime 10
  3. délai avant d’envoyer un avertissement pour les pouls en retard
    warntime 6
  4. deadtime spécifique pour les configurations où le réseau met un certain temps à démarrer
    initdead 60
  1. port à utiliser pour la prise de pouls
    udpport 694
  1. uname -n pour connaitre le nom des 2 serveurs
    node master.exemple.fr
    node slave.exemple.fr
  1. met la valeur on, lorsque le node maître revient dans le cluster, tout est transféré sur ce dernier
    auto_failback off

Configuration de Heartbeat sur le serveur Esclave : /etc/ha.d/ha.cf

ucast eth0 94.0.0.1

debugfile /var/log/ha.debug
logfile /var/log/ha.log
logfacility local0

  1. délai entre deux battements de pouls
    keepalive 2
  2. temps nécessaire avant de considérer un noeud comme étant mort
    deadtime 10
  3. délai avant d’envoyer un avertissement pour les pouls en retard
    warntime 6
  4. deadtime spécifique pour les configurations où le réseau met un certain temps à démarrer
    initdead 60
  1. port à utiliser pour la prise de pouls
    udpport 694
  1. uname -n pour connaitre le nom des 2 serveurs
    node master.exemple.fr
    node slave.exemple.fr
  1. met la valeur on, lorsque le node maître revient dans le cluster, tout est transféré sur ce dernier
    auto_failback off

Dans notre cas, il est préférable d’utiliser auto_failback off pour éviter que le Maitre ne reprenne le contrôle sur l’Esclave. Par exemple, si le Maître redémarre de manière intempestive (problème électrique, de processeur ou de barrettes mémoires), il se verra attribuer le titre de maître et si les défaillances persistes, le cluster ne fonctionnera plus au bout de quelques transferts rapprochés.
Une fois le serveur Maître stabilisé, ce sera aux administrateurs remettre le cluster dans l’état convenable.

Définition des adresses publiques

Dans la configuration ci-dessous, vous avez besoin de remplacer nic-ovh et pass-ovh par votre identifiant et votre mot de passe du manager et nsID.ovh.net par le nom OVH du serveur maître afin que la bascule de l’IP failover puisse être réalisée de manière automatique.
Sur le serveur maître, dans le fichier /etc/ha.d/haresources

master.exemple.fr IPaddr2::91.0.0.30/32/eth0:0 failoverupdate.pl::nic-ovh/pass-ovh/nsIDMaster.ovh.net/91.0.0.30/94.0.0.1

Sur le serveur esclave, dans le fichier /etc/ha.d/haresources

master.exemple.fr IPaddr2::91.0.0.30/32/eth0:0 failoverupdate.pl::nic-ovh/pass-ovh/ns205505.ovh.net/91.0.0.30/94.0.0.2

Plusieurs commandes peuvent être mises en place en les séparant par un espace (apache, mysql, …).
Au niveau de l’IP Failover bien penser à vérifier le login et mot de passe OVH, ainsi que le serveur destinataire de l’adresse de l’IP Failover.

Sur les serveurs OVH, le manager doit être averti que l’IP Failover (adresse publique) doit pointer sur un serveur en particulier, ceci est réalisé au travers des scripts ci-dessous.
Script à déposer sur les 2 serveurs, dans le fichier /etc/ha.d/resource.d/failoverupdate.pl

#!/usr/bin/perl
#
#
	
  1. Description: Met à jour le manager OVH en lui indiquant le nouveau serveur vers
  2. lequel faire l’ip failover
#
  1. Author: Pierre PINTARIC
  2. License: GNU General Public License (GPL)
# #
  1. usage: failoverupdate.pl ovh-nic/ovh-password/hostname/ip-failover/ip-routedTo
  2. {start|stop}
#
  1. L’argument “start” lance la négociation avec le manager OVH.
  2. #

    use strict;
    use warnings;

    use SOAP::Lite;

    sub usage() { print “usage: failoverupdate.pl ovh-nic/ovh-password/hostname/ip-failover/ip-routedTo {start|stop}\n”;
    }

    if (@ARGV != 2) { usage(); exit();
    }

    my args = split('/', $ARGV[0]); if (args != 5) { usage(); exit();
    }

    my $hostname = $args2;
    my $ipfailover = $args3;
    my $iproutedto = $args4;

    my $command = $ARGV1;

    if (!($command =~ m/^(start|stop)$/)) { usage(); exit();
    }

    if ($command =~ m/^start$/) { my $soap = SOAP::Lite -> uri(‘https://soapi.ovh.com/manager’) -> proxy(‘https://www.ovh.com:1664’);

    #login my $nic = $args0; my $password = $args1; my $language = ‘fr’; my $multisession = 0; my $result = $soap->call( ‘login’ => ( $nic, $password, $language, $multisession ) ); if ($result->fault) { die $result->faultcode . ‘ ‘ . $result->faultstring . “\n”; } else { print “failoverupdate.pl : login successfull\n”; } my $session = $result->result(); #dedicatedFailoverUpdate $result = $soap->call( ‘dedicatedFailoverUpdate’ => ( $session, $hostname, $ipfailover, $iproutedto ) ); if ($result->fault) { die $result->faultcode.’ ‘.$result->faultstring.”\n”; } else { print “failoverupdate.pl : dedicatedFailoverUpdate successfull\n”; } #logout $result = $soap->call( ‘logout’ => ( $session ) ); if ($result->fault) { die $result->faultcode.’ ‘.$result->faultstring.”\n”; } else { print “failoverupdate.pl : logout successfull\n”; } }

Rendre le script exécutable et le place au bon endroit

# chmod a+x /etc/ha.d/resource.d/failoverupdate.pl

Sécurisation de Heartbeat

Sur les 2 serveurs, dans le fichier /etc/ha.d/authkeys

auth 2
1 md5 "Mot de passe à changer"
2 crc

Ne pas oublier de modifier le mot de passe.
Puis sécurisation de l’accès au fichier:

# chmod 600 /etc/ha.d/authkeys

Démarrage du deamon

# /etc/init.d/heartbeat start

Vérification du bon fonctionnement de Heartbeat

Il faut exécuter les actions suivantes:

  • Au travers d’un ifconfig vérifier que l’adresse IP publique a bien été prise en compte par un des serveurs
  • Se connecter en SSH sur l’adresse IP publique
  • Exécuter uname -n afin de connaître le nom du serveur sur lequel vous êtes connecté
  • Couper ce serveur (arrêt du serveur, coupure électrique ou coupure de l’interface réseau – à vous de choisir)
  • La fenêtre SSH ne doit plus répondre
  • Se reconnecter en SSH sur l’adresse IP publique au bout de 1mn30 (ce temps est dû au délai nécessaire à l’infra d’OVH pour basculer l’IP failover d’un serveur vers l’autre – vous pouvez vous aider d’un ping pour vérifier quand l’adresse IP publique répond de nouveau)
  • Exécuter uname -n afin de vérifier que le nom du serveur a bien changé (nous avons bien la bascule automatique d’un serveur vers l’autre)
  • Dans la fenêtre SSH exécuter /etc/init.d/heartbeat restart afin de rendre la main au serveur précédent
  • La fenêtre SSH ne doit plus répondre
  • au bout de 1mn30, se reconnecter en SSH sur l’adresse IP publique
  • Exécuter uname -n afin de vérifier que le nom du serveur est bien le premier que nous avions

Si cela ne fonctionne pas, il y a les logs à consulter, c’est très verbeux :-)

Mise en place de DRBD

2 cas son possible, la partition sur laquelle vous désirez déposer les fichiers :

  • N’existe pas -> il faut la créer
  • Existe -> il faut supprimer son montage automatique

Création des partitions de réplication sur les 2 serveurs

Ceci est à réaliser si la partition de réplication n’existe pas et qu’il faille la créer.
Pour vérifier les partitions disponibles: fdisk -l
La taille des partitions doit être identique
Création des partitions (nous partons du principe que la partition que nous allons utiliser est /dev/sda3)

# cfdisk /dev/sda3

Les choix sont les suivants :

  • Primary
  • taille de votre choix
  • type Linux (code 83)
  • no bootable

Formatage de la partition /dev/sda3

# mkfs.ext3 /dev/sda3

Suppression du point de montage automatique de la partition de réplication sur les 2 serveurs

Ceci est à réaliser si la partition de réplication existe et qu’il faille supprimer son montage automatique.
Dans le fichier /etc/fstab, commentez la ligne contenant la partition devant servir à la réplication. Dans notre cas, il s’agit de la ligne

/dev/sda3      /home   ext3    defaults        1       2

Rebooter le serveur afin de vérifier que la partition ne monte pas automatiquement.

Intsallation de DRBD

Avant d’effectuer l’installation à proprement parlé, nous avons des paquetages Debian à installer

# apt-get install flex

Dans le dossier root, nous devons récupérer l’archive, la décompresser, la compiler et l’installer (la version courante lors de la rédaction de ce billet est DRBD 8.3.0, ceci doit être adapté en fonction de la version courante lors de votre installation)

# mkdir drbd
# cd drbd
# wget http://oss.linbit.com/drbd/8.3/drbd-8.3.0.tar.gz
# tar xzf drbd-8.3.0.tar.gz
# cd drbd-8.3.0
# make
# make install

Configuration de DRBD

La configuration doit être identique sur les 2 serveurs. Dans le fichier /etc/drbd.conf :

# drbd.conf
#
global {
   usage-count yes;
}
common {
   syncer {
      rate 20M;
      verify-alg sha1;
   }
}
resource r0 {
   protocol C;
   handlers {
      pri-on-incon-degr "echo o > /proc/sysrq-trigger ; halt -f";
      pri-lost-after-sb "echo o > /proc/sysrq-trigger ; halt -f";
      local-io-error "echo o > /proc/sysrq-trigger ; halt -f";
      outdate-peer "/usr/lib/heartbeat/drbd-peer-outdater -t 5";
   }
   startup {
      degr-wfc-timeout 120; # 2 minutes.
   }
   disk {
      on-io-error detach;
   }
   net {
      after-sb-1pri disconnect;
      after-sb-2pri disconnect;
      rr-conflict disconnect;
   }
   on master.exemple.fr {
      device /dev/drbd0;
      disk /dev/sda3;
      address 94.0.0.1:7788;
      meta-disk internal;
   }
   on slave.exemple.fr {
      device /dev/drbd0;
      disk /dev/sda3;
      address 94.0.0.2:7788;
      meta-disk internal;
   }
}

Si la taille de la partition n’est pas correcte pour DRBD (à l’étape suivante)

# dd if=/dev/zero bs=1M count=1 of=/dev/sda3; sync
1+0 enregistrements lus
1+0 enregistrements écrits
1048576 bytes (1,0 MB) copied, 0,0433103 s, 24,2 MB/s

Création des metadata

# drbdadm create-md r0
Writing meta data...
initialising activity log
NOT initialized bitmap
New drbd meta data block sucessfully created.
success

Ajout du module DRBD au noyau Linux

# modprobe drbd

Association de la ressource avec les devices

# drbdadm attach r0

Mise en place des paramètres de synchronisation

# drbdadm syncer r0

Connexion entre les serveurs (exemple sur le serveur maître)

# drbdadm connect r0

Afficher l‘état du cluster

# cat /proc/drbd
version: 8.3.0 (api:88/proto:86-89)
GIT-hash: 9ba8b93e24d842f0dd3fb1f9b90e8348ddb95829 build by [email protected], 2009-03-19 18:20:51
 0: cs:Unconfigured

Démarrage du daemon DRBD

# /etc/init.d/drbd start

A partir de maintenant nous ne travaillons que sur le serveur principal (master.exemple.fr).
Initialisation de la synchronisation (à réaliser uniquement sur le serveur principal)

# drbdadm -- --overwrite-data-of-peer primary r0

La synchronisation entre les serveurs peut-être suivie avec

# cat /proc/drbd
version: 8.3.0 (api:88/proto:86-89)
GIT-hash: 9ba8b93e24d842f0dd3fb1f9b90e8348ddb95829 build by [email protected], 2009-03-19 15:23:23
 0: cs:SyncSource ro:Primary/Secondary ds:UpToDate/Inconsistent C r---
    ns:65536 nr:0 dw:0 dr:65536 al:0 bm:3 lo:65 pe:0 ua:64 ap:0 ep:1 wo:b oos:621896016
        [>....................] sync'ed:  0.1% (607320/607384)M
        finish: 7:54:00 speed: 21,844 (21,844) K/sec

Durant cette synchronisation, la nouvelle partition /dev/drbd0 peut être utilisée. Formatage de la nouvelle partition:

# mkfs.ext3 /dev/drbd0

Attendre la fin du formatage pour passer à l‘étape suiavnte.

Mise en place du démarrage de DRBD au boot

Afin de permettre à DRBD de démarrer au moment du boot

# update-rc.d drbd defaults
 Adding system startup for /etc/init.d/drbd ...
   /etc/rc0.d/K20drbd -> ../init.d/drbd
   /etc/rc1.d/K20drbd -> ../init.d/drbd
   /etc/rc6.d/K20drbd -> ../init.d/drbd
   /etc/rc2.d/S20drbd -> ../init.d/drbd
   /etc/rc3.d/S20drbd -> ../init.d/drbd
   /etc/rc4.d/S20drbd -> ../init.d/drbd
   /etc/rc5.d/S20drbd -> ../init.d/drbd

Montage automatique de la partition avec Heartbeat

Sur le serveur maître, dans le fichier /etc/ha.d/haresources:

master.exemple.fr IPaddr2::91.0.0.30/32/eth0:0 failoverupdate.pl::nic-ovh/pass-ovh/nsIDMaster.ovh.net/91.0.0.30/94.0.0.1 drbddisk::r0 Filesystem::/dev/drbd0::/home::ext3

Sur le serveur esclave, dans le fichier /etc/ha.d/haresources:

master.exemple.fr IPaddr2::91.0.0.30/32/eth0:0 failoverupdate.pl::nic-ovh/pass-ovh/nsIDMaster.ovh.net/91.0.0.30/94.0.0.2 drbddisk::r0 Filesystem::/dev/drbd0::/home::ext3

Recharger la configuration sur les 2 serveurs :

# /etc/init.d/heartbeat restart

Vérification hebdomadaire des partition DRBD

La vérification de la bonne synchronisation des partitions est réalisée au travers la commande :

# drbdadm verify r0

Nous pouvons l’automatiser dans une commande exécutée hebdomadairement.
Dans le fichier /etc/cron.weekly/drbdverify

#!/bin/sh
drbdadm verify all

Puis il faut rendre le script exécutable :

# chmod a+x /etc/cron.weekly/drbdverify

En cas d’erreur, le fichier de log /var/log/syslog contiendra les erreurs rencontrées.

Voilà, votre cluster est en place. Bon courage, car ceci n’est que le début de votre aventure :-)