Cluster heartbeat+drbd

Bonjour, Debian 3.1r4 2.6

J’ai mis en place un cluster avec 2 serveurs identiques en utilisant heartbeat et drbd0.7.
Tout fonctionne trés bien mais mon souci c’est que drbd fonctionne manuellement. Je m’explique:
J’ai configuré mon fichier drbd.conf qui se trouve dans /etc mais j’ai l’impression qui ne le lis pas. Car lorsque je lance drbd avec /etc/init.d/drbd start puis je vérifie avec cat /proc/drbd: il ne monte pas le lecteur mirroir et m’indique que 0:cs unconfigured et 1:cd unconfigured; pour faire marcher il faut que je fasse comme ceci sur les 2 serveurs:

drbdsetup /dev/drbd0 disk /dev/hda4 internal -1
drbdsetup /dev/drbd0 net 192.168.1.21 192.168.1.22 C
Et drbdsetup /dev/drbd0 primary --do-what-I-say sur le serveur maître
Tout marche mais si je redémarre les serveurs plus rien il faut que je lance drbd à la main en plus je dois lui monter le miroir :
drbdsetup /dev/drbd0 primary puis mount /dev/drbd0 /home

Voila en faite j’ai l’impression que le fichier drbd.conf n’est pas traité;
Merci de l’aide

Si c’est gèré par heartbeat, est ce que ça ne devrait pas se ranger dans /etc/ha.d ?

Bonsoir,

Non j’ai testé, ça ne marche pas en faite il lit bien le fichier /etc/drbd.conf
mais il ne connecte pas les serveurs et ne monte pas le lecteur /dev/drbd0 et la patition miroir (pour moi c’est /home).
Je suis obligé de le faire manuellement sur le serveur maître:
drbdsetup /dev/drbd0 disk /dev/hda4 internal -1
drbdsetup /dev/drbd0 net 192.168.13.1 192.168.13.6 C
Voici les infos lorsque je demarre drbd:
/etc/init.d/drbd start
Starting DRBD resources: /etc/drbd.conf:1: one of ‘protocol|incon-degr-cmd|st’.tup|disk|net|syncer|on ’ expected, not '
Voici les infos du status:
status
drbd driver loaded OK; device status:
version: 0.7.10 (api:77/proto:74)
SVN Revision: 1743 build by phil@mescal, 2005-01-31 12:22:07
0: cs:Unconfigured
1: cs:Unconfigured
Voici les infos lorsque je demande que mon serveur soit le maitre:
drbdsetup /dev/drbd0 primary --do-what-I-say
ioctl(,SET_STATE,) failed: No such device or address
Device not configured.
Voilà la seul façon de tout faire fonctionner c’est de lancer les commandes namuellement avec:
drbdsetup /dev/drbd0 disk /dev/hda4 internal -1 (Les 2 serveurs)
drbdsetup /dev/drbd0 net 192.168.13.1 192.168.13.6 C ( le maître uniquement)
Merci, pour le support
Cordialement,

et tu as résolu d’ou venait l’erreur ligne 1 de /etc/drbd.conf one of 'protocol|incon-degr-cmd|st'.tup|disk|net|syncer|on <HOSTNAME>' expected, not 'Parceque tant que tu as une erreur dans ta config, ça m’étonnerait que ça marche.
Sinon, tu peux peut être fournir le contenu de /etc/drbd.conf, si tu veux qu’on le débugue, non ?

Voici le contenu de mon fichier drbd.conf:

resource drbd {
protocol C;
incon-degr-cmd “halt -f”;

on srvcls01 {

device /dev/drbd0;
disk /dev/hda4;
address 192.168.13.1:7789;
meta-disk internal;
}
on srvcls02 {
device /dev/drbd0;
disk /dev/hd46;
address 192.168.13.6:7789;
meta-disk internal;
}
syncer {
rate 2048;
}

}

Merci pour l’aide
Cordialement,

bon, ben j’aurais dit qu’il manquait un deuxiême s à resource, mais comme il est dit ici:
pwet.fr/man/linux/formats/drbd_conf
non.
Et comme je ne connais pas drdb, je ne sais pas t’aider plus: je ne vois pas ce qui peut provoquer ton msg d’erreur ligne 1.

PS: à moins qu’il y ait des éléments aprés le not ’ et que tu aurais oublié de fournir :wink:

Bonjour:

Voici le contenu de mon fichier drbd.conf:

resource drbd {
protocol C;
incon-degr-cmd “halt -f”;

on srvcls01 {

device /dev/drbd0;
disk /dev/hda4;
address 192.168.13.1:7789;
meta-disk internal;
}
on srvcls02 {
device /dev/drbd0;
disk /dev/hd46;
address 192.168.13.6:7789;
meta-disk internal;
}
syncer {
rate 2048;
}

}

Et voici mon message d’erreur lorsque je demarre drbd "/etc/init.d/drbd

Starting DRBD resources: /etc/drbd.conf:1: one of ‘protocol|incon-degr-cmd|st’.tup|disk|net|syncer|on ’ expected, not ’

Ici le message du status drbd, /etc/init.d/drbd status

drbd driver loaded OK; device status:
version: 0.7.10 (api:77/proto:74)
SVN Revision: 1743 build by phil@mescal, 2005-01-31 12:22:07
0: cs:Unconfigured
1: cs:Unconfigured

Apparament il trouve une erreur à la ligne 1, j’ai beau chercher mais il me semble que mon fichier drbd.conf est correct.

Merci pour l’aide, je suis bloqué.
Cordialement,

j’ai regardé, et tu semble avoir une syntaxe correcte, effectivement, pour le peu que j’en connaisse.
A part peut être: c’est normal sur srvcls02 que ton disque s’appelle /dev/hd46 ?

Sinon, tu n’as pas dit ou tu prenais le message d’erreur (en ligne de commande ou dans un log ?)
Starting DRBD resources: /etc/drbd.conf:1: one of ‘protocol|incon-degr-cmd|st’.tup|disk|net|syncer|on ’ expected, not '
parceque le |st’.tup|me parait bizarre, et la syntaxe du message fait penser qu’il manque la fin de la phrase (aprés le not ')

Aprés une prise de tête, j’ai décidé de migrer ma plate forme vers Etch vu que ma configuration utilise essentielement les dernieres versions applicatifs: Apache2, mysql5, php5,imagick5…
J’ai installé DRBD est là magique tout marche impécable.
Pour ceux à qui ça interresse voici la procédure que j’ai utilisé:

Il est la même pour la sarge 3.1.

Tout d’abord on commence par installer la version du kernel Headers et build essentiel ( tout ce fait tout seul et le chemin d’installation se trouve dans /usr/src):

#apt-get install linux-headers-$(uname -r) build-essential

Puis on installe DRBD source et utilitaire" attention la version des utilitaires doivent être de la même version que le noyau du module DRBD":

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

On installe quelques paquets pour configurer le noyau et pouvoir appeler le module assistant du kernel pour installer le module DRBD:

#apt-get install dpkg-dev kernel-package ncurses-dev

On se rend dans le répertoire source pour détarer les sources DRBD:

#cd /usr/src
#tar xfzv drbd0.7.tar.gz

Il est nécessaire d’installer le paquet contenant la version 3.4 de GCC

#apt-get install gcc-3.4

On se rend dans le dossier du kernel-headers:

#cd /usr/src/linux-headers-2.6.17-2-686

et on lance le module-assistant pour intégrer le module DRBD dans le noyau courant:

#module-assistant

Une fois module-assistant lancé, allez dans SELECT, puis sélectionnez le module drbd0.7 et onTermine en faisant un BUILD puis un INSTALL.

Le module est prêt à être lancé. Utilisez la commande modprobe pour le charger:

modprobe drbd

Enfin, utilisez la commande lsmod pour verifier que le module est bien chargé:

lsmod | grep drbd

on doit voir :
drbd 127412 1

Voici mon fichier drbd.conf qu’il faut copier sur les 2 serveurs (il doit être identique sur les 2 serveurs):

resource datas {
protocol C;
incon-degr-cmd “halt -f”;
startup {
wfc-timeout 240;
degr-wfc-timeout 240;}

disk {
on-io-error panic;
}
syncer {
rate 10M;
group 1;
al-extents 130;
}

on srvcls01 {
device /dev/drbd0;
disk /dev/hda4;
address 192.168.13.1:7788;
meta-disk internal;
}

on srvcls02 {
device /dev/drbd0;
disk /dev/hda4;
address 192.168.13.6:7788;
meta-disk internal;
}
}

Il faut sur le noeud 1 lui indiquer que c’est lui le maître:
#drbdsetup /dev/drbd0 primary --do-what-I-say

Attention ne pas oublier ne demonter la partition choisi pour la mise en raid 1 sur IP est ceux sur les 2 serveurs.

Il ne nous reste plus qu’à créer un système de fichier pour ce périphérique mirroré:

#mkfs.ext3 /dev/drbd0

Voilà vous avez tout pour installer et faire fonctionner DRBD

Bon courage
Cordialement,

Merci, je me suis permis de le mettre au propre et de l’annoter dans trucs et astuces ici:
forum.debian-fr.org/viewtopic.php?p=53822#53822
sinon, donc, ta syntaxe était bien correcte, c’etait juste la version sarge qui ne marchait pas, ou bien tu n’avais juste pas activé le module ?
Petite question parceque ça m’interresse, tu chaines ça comment avec heartbeat ? Normalement, c’est lui qui doit lancer drdb en maitre ou slave, non ?

Bonjour,

Réponse à tes questions:

C’etait juste la version sarge qui ne marchait pas, ou bien tu n’avais juste pas activé le module ?

Je crois que ça a du planter lors de l’activation du module dans le noyau courant. Je suis entrain de faire le test en ce moment sur 2 serveurs en mode virtuel pour être sur. Mais je pense que c’est moi qui à du faire un oubli.

Tu chaines ça comment avec heartbeat ? Normalement, c’est lui qui doit lancer drdb en maitre ou slave, non ?
OUI, au départ on lance avec drbdsetup pour définir le maitre:
drbdsetup /dev/drbd0 primary --do-what-I-say
puis dans le fichier haresource on indique le serveur maître.

Voici l’installation et la configuration de Hearbeat avec DRBD

Tout d’abord on intalle hearbeat:

apt-get install heartbeat

Puis on doit créer trois fichiers (ha.cf, haresources, authkeys) dans /etc/ha.d
"Attention il doivent être identique sur les 2 serveurs"

Voici la configuration de mes fichiers:

Pour ha.cf:

logfile /var/log/ha-log # Fichier de log

keepalive 2#temps en seconde entre chaque battements de coeur

deadtime 10 #delais sans réponse en seconde avant de déclarer la machine morte

warntime 6 #délai sans réponse pour générer une alerte dans les logs

initdead 60 # delai supplémentaite rajouté au deadtime pour prendre en compte la lenteur de démarrage de l’autre noeud

udpport 694 # port udp pour l’écoute des battements de coeur

bcast eth1 “ici on choisi l’interface réseau qui ecoute les battements de coeur”

serial /dev/ttyS0 # “ici on indique l’interface serie qui ecoute les battements de coeur: personnellement j’ai mis les deux mais on n’est pas obliger, l’interface réseau suffit”

auto_failback on # on bascule les ressources vers l’esclave et celui ci rend la main lorsque le maître revient. A off il faudrat vers effectuer la bascule manuellement

node srvcls01 # nom du serveur maitre
node srvcls02 # nom du serveur esclave
( faire uname -n pour avoir le nom de la machine)

Pour le fichier haresource: ( c’est lui qui permet de rendre les services hautement disponibles) ce fichier tient en une seule ligne

srvcls01 IPaddr2::192.168.13.9/24/eth0:0 Filesystem::/dev/drbd0::/datas::ext3 apache2 mysql postfix courier-imap courier-pop clamav-freshclam spamassassin
MailTo::root
Pour info:
srvcls01-> Serveur Maître
IPaddr2::192.168.13.9/24/eth0:0-> Lancement du script IPaddr2 pour la configuration de l’adresse IP du cluster sur l’interface réseau de son choix
Filesystem::/dev/drbd0::/datas::ext3-> Instruction au script Filesystem de monter la partition /dev/drbd0 dans datas avec le système de fichier ext3
apache2 mysql postfix courier-imap courier-pop clamav-freshclam spamassassin -> lancement des services que le veut rendre disponible
MailTo::root -> Lancement du script MailTo qui permet d’envoyer un mail du changement d’état du cluster au compte root.

Les scripts se trouvent dans: /etc/ha.d/resource.d/

Pour le fichier authkeys:

auth 1
1 crc

Pour info:
auth-> mode d’authenfication des battements de coeur entre les serveurs du cluster
crc ->identifiant méthode d’authenfication utilisée
Nous pouvons choisir entre crc, md5, sha1

Voilà, il suffit de démarrer hearbeat sur les 2 serveurs en commencant par le serveur maitre:
/etc/init.d/hearbeat start

Cordialement,
Pour tout complément d’info je reste dispo pour le forum, d’autant plus que je bose sans relache sur la haute disponibilité avec drbd et hearbeat.

Il faut ajouer dans le fichier haresources:
drbddisk::nom de la resource pour moi c’est datas
je reprends la ligne:

srvcls01 IPaddr2::192.168.13.9/24/eth0:0 drbddisk::datas Filesystem::/dev/drbd0::/datas::ext3 apache2 mysql postfix courier-imap courier-pop clamav-freshclam spamassassin MailTo::root

Pour info: drbddisk est le script qui permet de rendre disponible la resource drbd qui se nomme pour moi “datas” et que l’on doit retrouver dans la déclaration de la resource dans drbd.conf.

Pardon pour l’oubli car trop de boulot en ce moment;
Merci

Bonjour je viens à vous car j’ ai moi aussi un soucis avec drbd lorsque je lance la commande :

/etc/init.d/drbd start

j’ ai ce message d’erreur :

Starting DRBD resources: /etc/drbd.conf:26: in resource user, on hadebian01 { … } … on hadebian02 { … }:
There are multiple host sections for the peer.
Maybe misspelled local host name ‘hadebian01.coeffic.com’?
/etc/drbd.conf:1: in resource user:
missing section ‘on hadebian01.coeffic.com { … }’.

voila mon drbd.conf :

resource user {

            protocol C;
            incon-degr-cmd "/sbin/halt -f";

    startup {
                    wfc-timeout 240;
                    degr-wfc-timeout 240;
            }

    disk {
                    on-io-error panic;
            }
    syncer {
                    rate 2048K;
                    al-extents 257;
            }

    on hadebian01 {
                    device /dev/drbd0;
                    disk /dev/sda4;
                    address 192.168.100.1:7789;
                    meta-disk internal;
                    }

    on hadebian02 {
                    device /dev/drbd0;
                    disk /dev/sda4;
                    address 192.168.100.2:7789;
                    meta-disk internal;
                    }

}

N’ étant pas très calé en Linux je ne sais pas si j’ ai bien réussi toutes les étapes précédentes

Merci d’ avance