LinuxPedia

Wiki libre et indépendant dédié à GNU-Linux et BSD.

Outils pour utilisateurs

Outils du site


opensuse:drdb

Cluster Web sur OpenSuSE 11.0/3

pré-requis

Cette documentation est faite sur la base d'un cluster en test pour faire un serveur de média sur des machines HP DL380 G6, 12 Go de Ram, 2 To en Raid 5 (1,3 To effectif).

OpenSuSE 11.0 doit être installé en mode texte avec une partition pour le point de montage /srv
La configuration d'Apache ne sera pas abordée dans cette documentation (largement documentée sur le net). Seule la partie drbd et Heartbeat sera abordée.

Si ce n'est pas précisé, toutes les manipulations sont à faire sur les deux serveurs.

Tout d'abord, éditer le fichier /etc/fstab et commenter la ligne qui correspond à la partition qui sera mise en raid via drbd. C'est Heartbeat qui s'occupera de la monter.

DRBD

Installation de drbd :

Pour l'installation de drbd, il y a deux packages à installer via yast :
drbd-8.2.6-0.1
drbd-kmp-default-8.2.6_2.6.25.9_0.2-0.1

Vous pouvez aussi installer l'interface de gestion de drbd de Yast :
yast2-drbd-2.13.1-158.1

Modules du Kernel

Tout d'abord il faut monter le module drbd :

#modprobe drbd

Pour vérifier qu'il est bien monté :

#lsmod|grep drbd

Il doit vous répondre un truc du genre :
drbd 248344 4

Pour le faire monter au boot de la machine, éditer le fichier /etc/sysconfig/kernel et le modifier comme suit :
MODULES_LOADED_ON_BOOT=“drbd”

A partir du moment ou le module est monté, vous pouvez taper cette commande pour avoir des informations :

     media1:~ # cat /proc/drbd
     version: 8.2.6 (api:88/proto:86-88)
     GIT-hash: 3e69822d3bb4920a8c1bfdf7d647169eba7d2eb4 build by phil@fat-tyre, 2008-05-30 12:59:17

Configuration de drbd

Nous partons de l'hypothèse que la conf d'Apache sera répliquée via rsync et que le
« documentroot » d'Apache sera lui répliqué via drbd.

Tout d'abord, éditer le fichier /etc/fstab et commenter la ligne qui correspond à la partition qui sera mise en raid via drbd. C'est Heartbeat qui s'occupera de la monter.

pour cela le fichier de configuration suivant a été créé :

     #
     # please have a a look at the example configuration file in
     # /usr/share/doc/packages/drbd/drbd.conf
     #
     global { usage-count yes; }
     common { syncer { rate 640M; } }
     resource r0 {
             protocol C;
             net {
                     cram-hmac-alg sha1;
                     shared-secret "FooFunFactory";
             }
             on media1 {
                     device    /dev/drbd1;
                     disk      /dev/cciss/c0d0p6;
                     address   192.168.1.1:7789;
                     meta-disk internal;
             }
             on media2 {
                     device    /dev/drbd1;
                     disk      /dev/cciss/c0d0p6;
                     address   192.168.1.2:7789;
                     meta-disk internal;
             }
                }

La section global est surtout faite pour les statistiques du projet drbd consultable sur http://usage.drbd.org.

Si vous ne voulez pas y participer, il faut mettre l'option usage-count à no.

Dans la section common vous pouvez mettre les options globales pour toutes les différentes ressources à répliquer :

L'option « syncer » permet de régler le débit entre les différends nœuds (640M est le maximum. Attention j'ai mis le max car je passe par un réseau dédié à ça. C'est à corriger dans le cas d'une réplication via le réseau principal).

La section ressources définit ce que l'on veut répliquer.

Le « r0 » definit le nom de la ressource.

« Protocol C » définit le type de réplication (le C étant le plus robuste et le plus sécurisé). Pour plus de détails sur les protocoles voir l'adresse suivante :
http://www.drbd.org/users-guide-emb/s-replication-protocols.html

Le device représente le disque drbd virtuel, ici drbd1.

Le disk est la partition physique.

L'address représente les adresses IP des deux serveurs.

Le meta-disk lo po bien compris.

Ce fichier de conf doit être identique sur les deux serveurs.

Une fois cela fait, lancer sur les deux serveurs en même temps :

#/etc/init.d/drbd start

Il doit vous renvoyer un truc comme cela :

Starting DRBD resources : [ d0 s0 n0 ].

Il doit vous dire cela sur les deux serveurs.

Une fois cela fait, taper la commande suivante :

#cat /proc/drbd

     version: 8.2.6 (api:88/proto:86-88)
     GIT-hash: 3e69822d3bb4920a8c1bfdf7d647169eba7d2eb4 build by phil@fat-tyre, 2008-05-30 12:59:17
     0: cs:Connected st:Secondary/Secondary ds:Inconsistent/Inconsistent C r---
         ns:0 nr:0 dw:0 dr:0 al:0 bm:0 lo:0 pe:0 ua:0 ap:0 oos:149134808

En gros ils se voient bien mais ne se répliquent pas. Il faut donc lui dire de lancer la réplication. Pour ce faire, taper la commande :

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

Cette commande définit le primaire par rapport au secondaire. Elle est à lancer sur le serveur choisi comme primaire.

Une fois cette commande lancée, on peut refaire un cat /proc/drbd et on tombe sur ce genre de chose :

    version: 8.2.6 (api:88/proto:86-88)
    GIT-hash: 3e69822d3bb4920a8c1bfdf7d647169eba7d2eb4 build by phil@fat-tyre, 2008-05-30 12:59:17
     0: cs:SyncSource st:Primary/Secondary ds:UpToDate/Inconsistent C r---
        ns:2240 nr:0 dw:0 dr:2240 al:0 bm:0 lo:0 pe:0 ua:0 ap:0 oos:149132568
             [>....................] sync'ed:  0.1% (1345637/1345639)M
            finish: 17:15:38 speed: 83,2 (83,2) K/sec
            

Avec une jolie barre de progression. On voit aussi que l'affichage de st est passé de Secondary/Secondary à Primary/Secondary

Une fois la synchronisation terminée, on se retrouve avec ça :

    media1:~ # cat /proc/drbd
    version: 8.2.6 (api:88/proto:86-88)
    GIT-hash: 3e69822d3bb4920a8c1bfdf7d647169eba7d2eb4 build by phil@fat-tyre, 2008-05-30 12:59:17
    1: cs:Connected st:Primary/Secondary ds:UpToDate/UpToDate C r---
        ns:8776952 nr:228 dw:8777180 dr:2427564 al:5229 bm:49 lo:0 pe:0 ua:0 ap:0 oos:0
    media1:~ # 
    

Il n'y a plus qu'à formater la partition :

#mkreiserfs /dev/drbd1

Puis à monter la partition par la commande

#mount /dev/drbd1 /mnt

Créer le répertoire pour Apache (sachant que le point de montage sera /srv)

#cd /mnt
#mkdir www
#mkdir www/htdocs
#chown -R wwwrun:www www

Une fois cela fait, démonter la partition.

#umount /dev/drbd1

Voilà : La conf de drbd est terminée. On peut passer à Heartbeat.

HEARTBEAT

pré-requis

Citations de http://doc.ubuntu-fr.org/tutoriel/mirroring_sur_deux_serveurs

« Heartbeat gère la haute disponibilité de services qui peuvent être fournis par plusieurs serveurs (2 au minimum). Pour ce faire, chacun des serveurs est surveillé via un battement de cœur (heartbeat) diffusé sur le réseau. Au départ les services sont démarrés sur l'un des serveurs, et si celui-ci n'émet plus de battement de cœur), un autre serveur prend la relève.

Le cas qui est certainement le plus répandu est la mise en place de Heartbeat sur deux serveurs, ce qui est le cas dans ce tutoriel. »

installation de heartbeat

Via Yast les package à installer sont :

heartbeat-core-2.1.3-19.1
heartbeat-resources-2.1.3-19.1
heartbeat-2.1.3-19.1
heartbeat-ldirectord-2.1.3-19.1

Configuration de Heartbeat

Heartbeat a besoin d'au moins trois fichiers pour tourner :

haresources
ha.cf
authkeys

Uniquement pour Heartbeat2 Suse 11.3

Il faut rajouter les deux lignes du kernel à la fin du fichier “sysctl.conf” :

Dans : “/etc/sysctl.conf”

   # Disable response to broadcasts.
   # You don't want yourself becoming a Smurf amplifier.
   net.ipv4.icmp_echo_ignore_broadcasts = 1
   # enable route verification on all interfaces
   net.ipv4.conf.all.rp_filter = 1
   # disable IPv6 completely
   # net.ipv6.conf.all.disable_ipv6 = 1
   # enable IPv6 forwarding
   #net.ipv6.conf.all.forwarding = 1
   # increase the number of possible inotify(7) watches
   fs.inotify.max_user_watches = 65536
   # avoid deleting secondary IPs on deleting the primary IP
   net.ipv4.conf.default.promote_secondaries = 1
   net.ipv4.conf.all.promote_secondaries = 1
   kernel.suid_dumpable = 1
   kernel.core_uses_pid = 1

configuration authkeys

dans /etc/ha.d/authkeys, la liaison est un câble réseau croisé. Une authentification md5 est la plus sécurisée :

# vi /etc/ha.d/authkeys

 auth 3
 #1 crc
 #2 sha1 HI!
 3 md5 Hello!

Il faut faire ensuite un chmod du fichier suivant pour les permissions :

chmod 600 /etc/ha.d/authkeys

Fichier /etc/ha.d/haresources

ce fichier définit les ressources à partager entre les deux nœuds du cluster : Voici la ligne a rajouter en bas du fichier :

media1 IPaddr::192.168.202.182 drbddisk::r0 Filesystem::/dev/drbd1::/srv apache2

sachant que:

media1 est le noeud « principal »

Ipaddr::192.168.202.182 est l'adresse IP virtuelle que heartbeat va monter sur le noeud principal et faire basculer en cas de crash sur le secondaire.

drbddisk::r0 est la ressources à lancer.

Filesystem::/dev/drbd1::/srv est le montage de la partition drbd1 sur son point de montage /srv

Puis lancement d'Apache une fois tout le reste monté.

Fichier /etc/ha.d/ha.cf

     logfile /var/log/ha-log
     logfacility     local0
     ucast bond0 192.168.202.181
     auto_failback off
     node    media1
     node    media2

Avec :

logfile qui définit le fichier de log.

logfacility qui définit le niveau de log.

ucast définit par quel interface « les battements de cœur » se font ainsi que l'adresse IP vers laquelle ils sont envoyés (en clair l'autre nœud du cluster).

L'auto failback est à off pour éviter qu'une fois basculé il ne re-bascule pas sur un maitre tout neuf sans notre permission.

Et l'option node permet de définir les différents nœuds.

POST INSTALLATION

Lancer Yast, aller dans système → runlevel editor et lui faire lancer drbd et heartbeat au boot

Redémarrer le tout et vous devriez avoir accès à votre serveur web via l'adresse IP virtuelle donnée par Heartbeat.

Si jamais cela ne fonctionne pas, regarder dans le /var/log/messages et /var/log/ha-log pour voir s'il y a des problèmes.

ANNEXES

opensuse/drdb.txt · Dernière modification : 2018/11/17 12:53 de 127.0.0.1