Installation et configuration de Drbd : haute disponibilité
Petite approche de Drbd par l'exemple.
Drbd est une sorte de raid over ip, il vous permettra de faire un réplication parfaite entre deux ou plusieurs serveurs selon la version de Drbd que vous utiliserez.
Pour Drbd il existe deux mode d'utilisation le mode Actif/Actif ou l'ont peut écrire sur les deux nœuds (ou plus) en même temps, et Actif/Passif, il est indépendant du type de système de fichiers utilisé sur le serveur ou les serveurs.
Vous pouvez utiliser n'importe quel système de fichiers si vous etes en mode Actif/Passif, par contre en mode Actif/Actif il vous faudra un système tel que GFS ou OCFS.
Le scenario est simple deux serveurs Centos 5.5 avec chacun une partition de 512mo vierge, encore une fois je sais qu'il y a beaucoup de gens louches qui utilisent Debian voir Ubuntu serveur, un jour peut être mon Kvm sera souillé par un tel système... Quoi qu'il en soit c'est la même démarche seul les noms de paquets divergent un peu.
A savoir : pour l'instant la série de version de Drbd est la 0.8, avec la 0.9 nous aurons la possibilité d'avoir plus de 2 nœuds.
Pour une simple synchronisation préférez Rsync...
Installation :
Deux possibilités les paquets de votre distribution ou compiler la dernière version, le mieux est d'aller jeter un coup d'œil par la :
http://www.drbd.org/download/packages/
A savoir : les trois versions disponibles sur Centos et Redhat sont compatible entre elles, pour ces tests j'ai utilisé les versions :
[root@centos1 /]# rpm -qa | grep drbd drbd83-8.3.2-6.el5_3 kmod-drbd83-8.3.2-6.el5_3
sur le premier nœud (serveur).
et
[root@centos2 ~]# rpm -qa | grep drbd kmod-drbd-8.0.16-5.el5_3 drbd-8.0.16-5.el5.centos
sur le deuxième.
Compilation :
cd /opt/SOURCES wget http://oss.linbit.com/drbd/drbd-latest.tar.gz tar xzvf drbd-8.3.8.tar.gz cd drbd-8.3.8 cd drbd make cd .. make tools make install make install-tools modprobe drbd
Avec les paquets :
Centos/Redhat
yum install drbd83 kmod_drbd83 modprobe drbd
Debian/Ubuntu
aptitude install drbd
Un petit : lsmod pour vérifier que le module est bien chargé ?
Avec un netstat -ntlpu vous pouvez voir que le module écoute sur un port.
exemple :
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name tcp 0 0 192.168.1.248:7777 0.0.0.0:* LISTEN -
Pensez à remplir convenablement votre fichier /etc/hosts.
Pré-requis :
- Deux disques/partitions identiques.
- mkdir /data
Passons maintenant à la configuration de drbd !
Le mode Actif/Passif :
Dans ce mode vous pouvez utiliser ext3 ou ext4.
Contenu du fichier de configuration /etc/drbd.conf :
global { usage-count no; } common { syncer { rate 33M; } } resource data { protocol C; net { cram-hmac-alg sha1; shared-secret "AllezBourgoin!!!"; } on centos1 { device /dev/drbd0; disk /dev/hda1; address 192.168.1.248:7788; flexible-meta-disk internal; } on centos2 { device /dev/drbd0; disk /dev/hda1; address 192.168.1.240:7788; flexible-meta-disk internal; } }
Le mode Actif/Actif :
Contenu du fichier de configuration /etc/drbd.conf :
global { usage-count no; } common { syncer { rate 33M; } } resource data { protocol C; net { cram-hmac-alg sha1; shared-secret "AllezBourgoin!!!"; allow-two-primaries; } startup { become-primary-on both; } on centos1 { device /dev/drbd0; disk /dev/hda1; address 192.168.1.248:7788; flexible-meta-disk internal; } on centos2 { device /dev/drbd0; disk /dev/hda1; address 192.168.1.240:7788; flexible-meta-disk internal; } }
Go tout the cambouis :
drbdadm create-md data drbdadm attach data drbdadm connect data
Puis sur des deux serveurs :
drbdadm -- --overwrite-data-of-peer primary data
Démarrage :
/etc/init.d/drbd start
Vous suivez la synchro via
cat /proc/drbd ou /etc/init.d/drbd status
Formatage du nouveau périphérique :
Vous faites de l'actfi/Passif :
mkfs.ext3 /dev/drbd0
Vous faites de l'Actif/Actif :
mkfs.gfs /dev/drbd0
Attention :
N'oubliez pas les scripts d'init au démarrage !
Pour Redhat/Centos :
chkconfig --add drbd chkconfig --level 35 drbd on
Pour Debian/Ubuntu :
rc-update
En cas de problème :
Passer un disque secondaire en primary :
drbdsetup /dev/drbd0 primary -0
Test de bon fonctionnement de drbd en mode Actif/Passif :
Simuler une panne sur le nœud/serveur primary et passer le secondary en primary :
umount /data drbdadm primary data mount /data
Désactiver/Détruire un nœud :
umount data -> démonte les données drbdadm down data -> déconnecte le nœud drbdadm invalidate data -> détruit les données
Activé/Régénérer un nœud :
drbdadm up data drbdadm connect data
Vérifier l'avancement avec :
watch cat /proc/drbd
Test de bon fonctionnement de drbd en mode Actif/Actif :
Créer un fichier sur un nœud et vérifiez qu'il soit bien vu sur l'autre nœud et inversement proportionnel ou égal :p.
A garder à l'esprit si vous désirez faire du Actif/Actif appelé aussi Primary/Primary utilisez bien la version actuel stable en 8.3 car elle gère mieux les problèmes de coupure réseau.
Bon à savoir il existe un console d'administration open-source : http://www.drbd.org/mc/drbd-mc-is-open-source/
Bon bidouillage à tous !