DRBD & HeartBeat

préparation des serveurs SAN

  1. leur donner un hostname (SAN-SLAVE & SAN-MASTER)
  2. configurer une interface dédiée pour le traffic.
    1. eth0 : Accès à internet.
    2. eth1 : Accès à l'autre SAN.
  3. Modifier le fichier hosts
    1. root@Machine:/$ nano /etc/hosts
      
      127.0.0.1    localhost
      10.0.0.1     SAN-MASTER
      10.0.0.2     SAN-SLAVE
    2. Redémarrer les deux machines
  4. S'assurer que les deux machines puissent communiquer.

Configuration des disques sur chacune des machines

  1. Créer un Raid avec MDADM
    1. root@Machine:/$ apt update && apt install mdadm -y
      Faire [Ok] aux questions et laisser les choix par défaut.
      root@Machine:/$ fdisk -l | grep sd
      root@Machine:/$ fdisk /dev/sdb
      n
      plusieurs [enter]
      t
      fd
      w
      Refaire pour chaque disque à ajouter dans mdadm.
      
      
      root@Machine:/$ mdadm --create /dev/md0 --level=5 --raid-devices=3 /dev/sd[bcd]1 --spare-devices=1 /dev/sde1
  2. Ajouter le Raid à LVM
    1. Créer un groupe LVM
      1. root@Machine:/$ vgcreate vg-san /dev/md0
    2. Ajouter trois volumes logiques
      1. root@Machine:/$ lvcreate -L1G -n drbd_metadata vg-san
        root@Machine:/$ lvcreate -L1G -n iscsitarget_config vg-san
        root@Machine:/$ lvcreate -l100%VG -n lun0_datas vg-san
    3. Valider sur les machines que l'information est identique.
      1. lvs & vgs

Configuration de DRBD & HeartBeat

Installer DRBD et HeartBeat
root@Machine:/$ apt update && apt install drbd8-utils heartbeat -y

Modifier les droits pour permettre les accès à la réplication

root@Machine:/$ chgrp haclient /sbin/drbdsetup
root@Machine:/$ chmod o-x /sbin/drbdsetup
root@Machine:/$ chmod u+s /sbin/drbdsetup
root@Machine:/$ chgrp haclient /sbin/drbdmeta
root@Machine:/$ chmod o-x /sbin/drbdmeta
root@Machine:/$ chmod u+s /sbin/drbdmeta

root@Machine:/$ dpkg-statoverride --add --update root haclient 4750 /lib/drbd/drbdsetup-84
root@Machine:/$ dpkg-statoverride --add --update root haclient 4750 /sbin/drbdmeta

Mettre en place la redondance des configurations

nano /etc/drbd.conf
Efface tout le contenu
Puis entrer ceci :

resource iscsi.config {
        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;
        }

        disk {
        on-io-error detach;
        }

        net {
        cram-hmac-alg sha1;
        shared-secret "superSECRET";
        after-sb-0pri disconnect;
        after-sb-1pri disconnect;
        after-sb-2pri disconnect;
        rr-conflict disconnect;
        }

        syncer {
        rate 100M;
        verify-alg sha1;
        al-extents 257;
        }

        on SAN-MASTER {
        device  /dev/drbd0;
        disk    /dev/vg-san/iscsitarget_config;
        address 10.0.0.1:7788;
        meta-disk /dev/vg-san/drbd_metadata[0];
        }

        on SAN-SLAVE {
        device  /dev/drbd0;
        disk    /dev/vg-san/iscsitarget_config;
        address 10.0.0.2:7788;
        meta-disk /dev/vg-san/drbd_metadata[0];
        }
}

resource iscsi.lun0 {
        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;
        }

        disk {
        on-io-error detach;
        }

        net {
        cram-hmac-alg sha1;
        shared-secret "superSECRET";
        after-sb-0pri disconnect;
        after-sb-1pri disconnect;
        after-sb-2pri disconnect;
        rr-conflict disconnect;
        }

        syncer {
        rate 100M;
        verify-alg sha1;
        al-extents 257;
        }

        on SAN-MASTER {
        device  /dev/drbd1;
        disk    /dev/vg-san/lun0_datas;
        address 10.0.0.1:7789;
        meta-disk /dev/vg-san/drbd_metadata[1];
        }

        on SAN-SLAVE {
        device  /dev/drbd1;
        disk    /dev/vg-san/lun0_datas;
        address 10.0.0.2:7789;
        meta-disk /dev/vg-san/drbd_metadata[1];
        }
}

Maintenant on peut créer les resources pour DRBD

root@Machine:/$ drbdadm create-md iscsi.config
root@Machine:/$ drbdadm create-md iscsi.lun0
Démarrer le service sur les deux SAN
root@Machine:/$ service drbd start

(Seulement sur SAN-MASTER)
Pour synchroniser les données entre les deux machines et mettre le SAN-MASTER en primary.
root@Machine:/$ drbdadm -- --overwrite-data-of-peer primary iscsi.config
root@Machine:/$ drbdadm -- --overwrite-data-of-peer primary iscsi.lun0

Pour voir l'état de la synchronisation

root@Machine:/$ cat /proc/drbd

 Sur le SAN-MASTER

Préparation du disque pour la configuration du iscsitarget

le volume : /dev/drbd0 correspond à /dev/vg-san/iscsitarget_config

root@Machine:/$ mkfs.ext4 /dev/drbd0

Il est maintenant prêt à être utilisé.

Création du répertoire sur les deux machines pour la configuration de ISCSITarget.

root@Machine:/$ mkdir /srv/data
root@Machine:/$ mount /dev/drbd0 /srv/data

Configuration et installation de ISCSITARGET

root@Machine:/$ apt install iscsitarget -y
root@Machine:/$ sed -i s/false/true/ /etc/default/iscsitarget
root@Machine:/$ update-rc.d -f iscsitarget remove

Pour pouvoir répliquer la configuration du service, on doit créer un pointeur à partir de la resource partagée (drbd0). Ainsi, les deux SAN on la même configuration.

Sur le SAN-MASTER
root@Machine:/$ mkdir /srv/data/iscsi
root@Machine:/$ mv /etc/iet/ietd.conf /srv/data/iscsi
root@Machine:/$ ln -s /srv/data/iscsi/ietd.conf /etc/iet/ietd.conf

Sur le SAN-SLAVE
root@Machine:/$ rm /etc/iet/ietd.conf
root@Machine:/$ ln -s /srv/data/iscsi/ietd.conf /etc/iet/ietd.conf

Configuration de ISCSITARGET sur le SAN-MASTER

root@Machine:/$ nano /etc/iet/ietd.conf
Ajouter à la fin du fichier: 

Target iqn.2017-04.com.tommygingras:Exemple.SAN.LUN0
    Lun 0 Path=/dev/drbd1,Type=blockio

Configurer HeartBeat

Cet outil permet le basculement entre les SAN en cas de soucis.

Configuration des interfaces réseaux pour le ping et la détection de panne

root@Machine:/$ nano /etc/ha.d/ha.cf
Entrer sur les deux SAN:

logfacility     local0
keepalive 2
deadtime 30
warntime 10
initdead 120
bcast eth1
bcast eth0
node SAN-MASTER
node SAN-SLAVE

Configuration pour authentifier les deux serveurs

root@Machine:/$ nano /etc/ha.d/authkeys
Entrer sur les deux SAN:

auth 3
3 md5 Password-SECRET

Sauvegarder puis sécuriser le fichier
root@Machine:/$ chmod 600 /etc/ha.d/authkeys

Configuration des actions à effectuer lors d'un basculement

root@Machine:/$ nano /etc/ha.d/haresources
Entrer sur les deux serveurs:

SAN-MASTER drbddisk::iscsi.config Filesystem::/dev/drbd0::/srv/data::ext4
SAN-MASTER IPaddr::172.16.0.200/24/eth0 drbddisk::iscsi.lun0 iscsitarget

La première ligne : fait en sorte que la ressource drbd.iscsi.config passe en primary et monte le volume /dev/drbd0 dans /srv/data
La deuxième ligne: fait passer la ressource iscsi.lun0 en primary, démarre le service iscsitarget et prend l'adresse du cluster (172.16.0.200)

Démarrer le service heartbeat

root@Machine:/$ service heartbeat start

Pour voir si tout fonctionne

root@Machine:/$ ifconfig
On devrait voir eth0:0 avec l'adresse du cluster

Ensuite grâce à un initiateur on peut tester la connexion. Puis si le SAN-MASTER tombe en panne de manière pratiquement instantanée, le SAN-SLAVE prend la relève.

Laisser un commentaire