Accès rapide
Avoir un compte
Messagerie
Wifi 
12 : 12 [CriNET] FERME Probleme clime salle 123
2 : 12 [CriNET] OUVERT Probleme clime salle 123
5 : 11 [CriNET] INFO Probleme eduroam
4 : 11 [CriNET] INFO Probleme eduroam
S'abonner au flux RSS
Problème
Impossible de charger http://factuel.univ-lorraine.fr/feed/rss-breves.xml
Rechargez cette page
Tickets CRINet
2014120200FERME
Probleme clime salle 123
2014110400INFO
Probleme eduroam
2014110500INFO
Probleme eduroam
2014102300FERME
Intervention switch sale123

Drbd heartbeat rsync

la machine virtuelle est un cluster de 2 machines.
Heartbeat permet de controller la disponibilté des machines et de démarrer les services sur la machine de secours en cas de pb.
Les données entre les 2 machines sont partagées par drbd qui permet de créer un raid au travers du réseau. Les données sont copiées en temps réel sur la machine de secours.
rsync permet d'administrer les 2 machines. Les mises à jour se font par apt-get. Un script rsync permet de conserver les fichiers de configurations synchronisés entre les 2 machines.

Les 2 machines sont identiques (ce n'est pas forcément nécessaire) et disposent de 2 cartes réseau.
Une carte réseau est réservée pour drbd, heartbeat, rsync. Un câble croisé entre les 2 machines permet de limiter les risques de coupure réseau dans la surveillance des 2 machines ce qui pourrait entrainer une situation de "split-brain".


Pour la version heartbeat 1 voir ci-dessous, pour la version 2 voir ici :
NEW Heartbeat2

Utilisation de drbd heartbeat rsync pour faire une machine haute disponibilité sur debian (disponible depuis sarge)

On commence par installer drbd (ci-dessous)
heartbeat     
rsync
Drbd et LVM


Pour ne pas mélanger les cartes en cas de reboot changement de noyau
/etc/modutils/aliases
alias eth0      e1000
alais eth1      sk98lin



Configurer les 2iémes cartes
auto eth1
iface eth1 inet static
        address 192.168.0.1
        netmask 255.255.255.0
        network 192.168.0.0
        broadcast 192.168.0.255



drbd


de nos jours apt-get install est suffisant

configurer drbd
/etc/drbd.conf
#
# drbd.conf
#
resource r0 {

  protocol B;

  incon-degr-cmd "echo '!DRBD! pri on incon-degr' | wall ; sleep 60 ; halt -f";

  startup {
    degr-wfc-timeout 120;    # 2 minutes.
  }

  disk {
    on-io-error   detach;
  }

  syncer {
    rate 10M;
    group 1;
    al-extents 257;
  }

  on cas1 {
    device     /dev/drbd0;
    disk       /dev/sda5;
    address    192.168.200.1:7788;
    meta-disk  internal;
  }

  on cas2 {
    device    /dev/drbd0;
    disk      /dev/sda5;
    address   192.168.200.2:7788;
    meta-disk internal;
  }
}


démarrer drbd
/etc/init.d/drbd start
sur les 2 noeuds
dans cat /proc/drbd
on doit avoir
cs:Connected st:Secondary/Secondary ld:Inconsistent
    ns:0 nr:0 dw:0 dr:0 al:0 bm:0 lo:0 pe:0 ua:0 ap:0

les 2 sont trop différents pour être synchronisés : inconsistent

forcer le primaire
drbdadm -- --do-what-I-say primary all
ou
drbdsetup /dev/drbd0 disk /dev/sda5 internal -1 ce n'est plus nécessaire pour les versions récentes de drbd

depuis drbd 0.8
drbdadm -- --overwrite-data-of-peer primary all


sur le secondaire
dans
cat /proc/drbd
cs:SyncTarget st:Secondary/Primary ld:Inconsistent
   ns:0 nr:5234048 dw:5234048 dr:0 al:0 bm:318 lo:1117 pe:2432 ua:1116 ap:0
   [==========>.........] sync'ed: 54.4% (4303/9410)M
   finish: 0:01:22 speed: 53,016 (32,480) K/sec



formater le device et le monter
mkfs.ext3 /dev/drbd0
montez r0 pour tester mais c'est heartbeat qui effectuera les montages réels.

Voir ensuite heartbeat

Trucs

à mettre dans /root/.bashrc
DRBD=`egrep 0: /proc/drbd | awk -F : '{print $4}' | awk -F / '{print $1}'`
if [ "$DRBD" == "Primary" ];
        then DRBD="P"
        else DRBD="S"
fi

export PS1='\h [$DRBD]:\w\$ '
cela permet d'avoir un prompt machine [P]:~# sur la machine primaire
et machine [S]:~# sur la machine secondaire

dans /etc/fstab
$/dev/drdb0 /homed1    ext3    noauto
  • 0$sans doute inutile mais noauto permet de ne pas monter drbd0 avant heartbeat et de limiter fsck

    Tester

    1. rebooter le noeud secondaire pendant ce temps écrire un fichier sur le primairevérifier la synchro au démarrage du noeud secondaire


2. rebooter le noeud primaire
le secondaire passe primaire
les données sont bien disponibles
le primaire redevient primaire lorsqu'il démarre

3. arrêt programmé
arréter le secondaire en premier
démarrer le primaire en premier
le primaire attends 2min (120s) que le secondaire apparaisse. On peut le forcer en console.

4. couper le lien entre les 2 machines
peut probale sur des machines avec des cartes intégrées et une liaison par câble croisé
les 2 machines deviennent primaire et obtiennent la même adresse ip de la machine virtuelle !
Lorsque la connection est rétablie cela entraine un "split-brain" que l'on ne peux résoudre que manuellement.
sur primaire : 
 0: cs:StandAlone st:Primary/Unknown ld:Consistent
    ns:8 nr:0 dw:380 dr:50 al:1 bm:49 lo:0 pe:0 ua:0 ap:0
sur secondaire :
 0: cs:StandAlone st:Secondary/Unknown ld:Inconsistent
    ns:0 nr:8 dw:16 dr:17 al:1 bm:293 lo:0 pe:0 ua:0 ap:0

les noeuds sont passés en stand alone
drbdadm connect r0 sur les 2 machines démarre la synchro du primaire vers le secondaire
drbdadm invalidate r2 sur une machine secondaire : invalide les données et force une resynchronisation

Liens

Le site officiel
  http://www.drbd.org/
La liste de diffusion
  http://lists.linbit.com/pipermail/drbd-user/
Article sur une ancienne version
  http://www.linux-mag.com/2003-11/availability_01.html
Howto sur les anciennes versions
  http://www.slackworks.com/~dkrovich/DRBD/
Le howto sur un wiki cassé pour l'instant
  http://linuxha.trick.ca/DRBD_2fHowTo_2fInstall





















Historique

Installation sur debian sarge, plus nécessaire je laisse ici pour des raisons historiques

premier pb
pb avec la deuxième carte réseau
le module sk98lin du noyau 2.6.8 et 2.6.10 ne fonctionne pas
Yukon Gigabit Ethernet 10/100/1000Base-T Adapter
Ethernet controller: Marvell Technology Group Ltd.
Récupération du driver constructeur
sur http://www.syskonnect.de
dans /syskonnect/support/driver/zip/linux/
récupérez install-8_14.tar.bz2
version du 17-Feb-2005
il faut les header du noyau (cf ci-dessous)


modules nécessaire

# apt-get install kernel-headers-2.6.8-2-686-smp
# ln -s /usr/src/kernel-headers-2.6.8-2-686-smp/ /usr/src/linux

# apt-get install drbd0.7-module-source drbd0.7-utils heartbeat rsync

drbd


installation
# cd /usr/src
# tar zxvf drbd0.7.tar.gz
# cd linux
# make-kpkg --revision=criumsarge.1 modules_image  --append-to-version "-2-686-smp" 
# dpkg -i drbd0.7-module-2.6.8-2-686-smp_0.7.10-1+criumsarge.1_i386.deb
# modprobe drbd


estimation de la taille disque (inutile)
blockdev --getsize /dev/sda divisé par 2