DRBD sous Etch avec xen - Installation - Linux et OS Alternatifs
Marsh Posté le 15-04-2008 à 14:38:38
J'ai résolu mon 2eme problème, drbd-heartbeat fonctionne convenablement.
Cependant après redémarrage, le "device" /dev/drbd0 n'est pas créé et le service drbd ne peut donc pas démarrer. J'utilise la commande mknode pour le créer manuellement. Le module drbd est monté au démarrage (vérifié avec lsmod).
La solution du pauvre consisterai à faire un script qui démarre avant drbd pour créer drbd0 mais cela me semble pas très "propre" comme méthode.
Merci de votre aide
Marsh Posté le 16-04-2008 à 13:14:30
Sous redhat, il y a un script dans /etc/init.d qui se charge de l'initialisation de drbd et qui lancé avant heartbeat. Ce script provient des sources de drbd d'ailleurs
Je pense que c'est ce script qui n'est pas lancé chez toi dans ton runlevel. Aa tu un script qiu s'appelle drbd (ou quelque chose comme ça) dans /etc/init.d ?
Marsh Posté le 16-04-2008 à 14:36:11
Oui le service "drbd" est situé dans /etc/init.d/:
Il charge le module drdb (avec modprode), et démarre le service drdb. Il n'a pas l'air de créer le device /dev/drbd0...
Citation : #!/bin/bash |
Par contre on remarque une fonction qui doit attendre que le device drbd0 soit créé ("# make sure udev has time to create the device files" ). Je pense que c'est le module "drbd" une fois chargé qui créer le device /dev/drbd0: le script charge le module, attends quelque instants, et lance l'application drbd qui se base sur /dev/drbd0.
Etant donné que je suis sous xen, le module drbd n'est pas le même que si j'utilisais un noyaux standard: il se nomme "drbd0.7-module-2.6.18-6-xen-686".
Peut être que cette version du module ne marche pas comme le module drbd standard.
En attendant, pour que le service drbd démarre correctement, j'ai écris un script qui charge le module et créer le device avec mknod. Il est lancé avant drbd.
Marsh Posté le 16-04-2008 à 15:17:26
normalement, une fois le module chargé, soit il crée son device, soit c'est udev qui le crée. Tu dois avoir un problème de conf quelque part.
tu es sur que ce script drbd est activé pour ton runlevel ? Tu as bien un lien symbolique commençant par S<nombre>drbd dans /etc/rc2.d ou /etc/rc3.d ?
Marsh Posté le 16-04-2008 à 15:45:41
Oui le script /etc/init.d/drdb est bien activé dans le runlevel. C'est le script que j'ai posté plus haut. Bizarrement, il est placé dans tout les niveaux:
/etc/rc0.d/K08drbd
/etc/rc1.d/K08drbd
/etc/rc2.d/S70drbd
/etc/rc3.d/S70drbd
/etc/rc4.d/S70drbd
/etc/rc5.d/S70drbd
/etc/rc6.d/K08drbd
Il est lancé puisque au démarrage, le service drbd émet une erreur (/dev/drbd0 not found). Cette erreur est du justement au fait que le device /dev/drbd0 n'est pas créé. J'en déduit que le script de démarrage ne le créer pas.
Est ce que c'est le module qui est fautif et qui ne créer pas son device ? ou est ce que udev qui n'est pas configuré pour drdb ?
Marsh Posté le 14-04-2008 à 16:28:26
J'ai deux serveurs virtuels sous Debian Etch (en DomU avec xen), j'ai installé un système raid réseau avec Drbd et heartbeat.
Drbd fonctionnement correctement manuellement. J'utilise la version 0.7 de Drbd.
1er probleme:
En cas de reboot, le problème est que le périphérique "/dev/drbd0" n'existe pas. Evidemment, le service Drbd ne se lance pas et Heartbeat ne peux pas travailler. Je suis obliger d'utiliser la commande "mknod -m 0660 /dev/drbd0 b 147 0" pour créer le périphérique à chaque démarrage de la machine.
Le module drbd est pourtant chargé au démarrage: lsmod => "drbd 128724 0"
j'ai pas mal fait de recherche sur internet et je n'est pas trouvé de cas similaire...
2nd problème
Il me semble aussi que la bascule entre les deux machine ne fonctionne pas: il y a une machine maitre et une esclave avec le système Drbd, Heartbeat doit se charger de passer l'esclave en maitre dans le cas ou le maitre est "down". Si je désactive le maitre, l'esclave ne devient pas maitre...
3eme problème
Je partage le disque avec samba sur les deux machines virtuelles. J'ai suivi un tutoriel ubuntu:
http://doc.ubuntu-fr.org/tutoriel/ [...] _heartbeat
l'objectif est d'avoir un disque réseau "haute disponibilité" qui puisse être monté par un autre machine du réseau.
Le service heartbeat ne lance pas le service samba et donc il n'y a pas de partage.
Voici mes fichiers de configuration:
/etc/drbd.conf
resource drbd0 {
# protocole utilisé (voir plus bas)
protocol C;
# vitesse de transfert des données
syncer {
rate 100M;
group 1;
}
on mx3 {
# peripherique drbd
device /dev/drbd0;
#volume à synchroniser
disk /dev/sda3;
# adresse ip du noeud et port
address 10.0.201.27:7788;
# emplacement des méta-données
meta-disk internal;
}
# même procédure
on pop3 {
device /dev/drbd0;
disk /dev/sda3;
address 10.0.201.26:7788;
meta-disk internal;
}
}
/etc/ha.d/ha.cf
bcast eth0
debugfile /var/log/ha-debug
logfile /var/log/ha-log
logfacility local0
keepalive 2
deadtime 10
warntime 6
initdead 60
udpport 694
node mx3
node pop3
auto_failback off
/etc/ha.d/haresources
mx3 IPaddr::10.0.201.27 drbddisk::drbd0 Filesystem::/dev/drbd0::/mnt/archive::ext3 samba
/etc/ha.d/authkeys
auth 2
1 md5 "cluster archive"
2 crc
J'ai aussi un message d'erreur d' heartbeat qui cependant n'empêche pas le service de tourner:
Starting High-Availability services:
2008/04/14_14:18:28 CRITICAL: Resource IPaddr::10.0.201.27 is active, and should not be!
2008/04/14_14:18:28 CRITICAL: Non-idle resources can affect data integrity!
2008/04/14_14:18:28 info: If you don't know what this means, then get help!
2008/04/14_14:18:28 info: Read the docs and/or source to /usr/lib/heartbeat/ResourceManager for more details.
CRITICAL: Resource IPaddr::10.0.201.27 is active, and should not be!
CRITICAL: Non-idle resources can affect data integrity!
info: If you don't know what this means, then get help!
info: Read the docs and/or the source to /usr/lib/heartbeat/ResourceManager for more details.
2008/04/14_14:18:28 CRITICAL: Non-idle resources will affect resource takeback!
2008/04/14_14:18:28 CRITICAL: Non-idle resources may affect data integrity!
Done.
Je vous remercie de votre aide.