Serveur NFS · 7 min read · Jan 30, 2026
Serveur NFS hautement disponible utilisant DRBD et Heartbeat sur Debian 5.0 (Lenny)
Serveur NFS hautement disponible utilisant DRBD et Heartbeat sur Debian 5.0 (Lenny)
Ce HowTo explique comment j’ai configuré un serveur NFS hautement disponible en utilisant Debian 5 (Lenny) et drbd8 avec heartbeat.
J’ai réalisé cette configuration il y a quelques jours. Juste pour le plaisir. J’ai donc pensé que c’était une bonne idée de documenter cela.
Auteur - Vishal Sharma
Créé - 9 mars 2010
Version - 1.0
Avertissement - Ce HowTo est fourni tel quel et il n’offre absolument aucune garantie de quelque nature que ce soit. Utilisez-le à vos propres risques. Ces étapes ont fonctionné pour moi. Il est donc probable qu’elles fonctionnent également pour vous. Si vous rencontrez des problèmes, n’hésitez pas à laisser vos commentaires ci-dessous. J’essaierai de les traiter dès que je le pourrai.
Voici un résumé de ce que vous devez faire :
Étape 1. Préparez votre système. Cela implique de configurer votre matériel et vos logiciels de base. (Cela n’est pas couvert dans ce HowTo.)
Étape 2. Configurez les adresses IP nécessaires.
Étape 3. Installez les paquets nécessaires.
Étape 4. Modifiez les fichiers de configuration pertinents.
Étape 5. Démarrez votre système.
Étape 6. Testez-le pour vous assurer qu’il fonctionne réellement.
ÉTAPE 1. Préparation de votre système
J’utilise 3 systèmes Debian pour cela. Tous sont une installation par défaut standard. Cependant, j’ai fait un changement pour démarrer mon système en mode texte. Comme je n’ai pas un matériel si performant sur ma machine, je préfère jouer avec la ligne de commande.
Chaque système a un réseau intégré. En général, dans les systèmes de production, cela peut ne pas être le cas. Mais comme le mien est juste une installation pour jouer, je ne me suis pas soucié d’ajouter des éléments qui offriraient de meilleures performances.
Si vous ne souhaitez pas dédier une machine, vous pouvez toujours utiliser Sun VirtualBox pour cela et avoir votre configuration. C’est beaucoup plus facile de cette manière, car cela vous offre l’avantage de prendre des instantanés du système avant d’apporter des modifications de configuration significatives.
Ma configuration de test ici est basée sur 2 serveurs et un client. Dans mon scénario, ce système client est juste un client NFS normal montant des partages depuis le serveur NFS. Ma configuration ici est Active/Passive et NON Active/Active. Donc, à tout moment, si votre système actif échoue, le système passif prendra le relais.
Sur server01 et server02, j’ai 2 partitions, à savoir
/dev/hdb1 - 500 Go - qui sera monté en nfs comme /data.
/dev/hdc1 - 500 Mo - cela stockera les métadonnées drbd. Il nécessite un minimum de 128 Mo.
Assurez-vous de ne monter aucune de ces partitions. Cela sera géré par drbd. Assurez-vous simplement de créer les partitions et de les laisser telles quelles. Pas de formatage, pas de montages pour l’instant.
ÉTAPE 2. Configurer les adresses IP nécessaires
Voici comment j’ai nommé mes systèmes :
server01 - 192.168.1.2/24 (eth0)
server02 - 192.168.1.3/24 (eth0)
client01 - 192.168.1.4/24 (eth0)
Assurez-vous d’avoir les entrées ci-dessus dans votre fichier /etc/hosts afin que la résolution de noms ne soit pas un problème. C’est probablement la meilleure option et vous ne voudriez pas vous retrouver à devoir configurer un serveur DNS pour cela.
192.168.1.5/24 serait mon adresse IP flottante virtuelle. C’est l’adresse qui sera vue par le monde extérieur et qui flottera d’un système à l’autre au fur et à mesure que leur état change.
Ma passerelle par défaut est 192.168.1.1/24, qui est mon routeur. J’aurais besoin d’un accès Internet pour installer des paquets.
Étape 3. Installer les paquets nécessaires
La chose la plus importante pour que le cluster HA fonctionne bien est - LE TEMPS. L’heure sur les systèmes doit être la même. Pour s’assurer de cela, assurez-vous d’avoir les paquets ntp en place.
server01# apt-get install ntp ntpdateEffectuez cela sur server01 et server02.
Sur les serveurs, c’est-à-dire server01 et server02, vous aurez besoin des paquets suivants installés pour être opérationnels.
drbd8, fichiers d’en-tête du noyau, installation du serveur nfs et heartbeat. Voici ce que j’ai fait.
server01# apt-get updateserver01# apt-get install linux-headers-`uname -r` drbd8-utils drbd8-source heartbeat nfs-kernel-server(Cela devrait prendre un certain temps pour se terminer.)
Après l’installation, créez le module drbd du noyau en utilisant la commande suivante :
server01# m-a a-i drbd8-sourceCela effectuera une compilation et créera le module du noyau drbd.
server01# modprobe drbdserver01# lsmod | grep drbd(Cela devrait vous montrer quelque chose, si cela ne vous donne rien, alors il y a un problème quelque part qui doit être corrigé.)
Désactivez le démarrage de nfs au démarrage. Cela est fait parce que le démarrage et l’arrêt de nfs sont gérés par drbd et nous ne voulons pas que le système interfère.
server01# update-rc.d -f nfs-kernel-server removeserver01# update-rc.d -f nfs-common removeEffectuez les mêmes étapes sur server02 également.
Étape 4. Créer / Modifier les fichiers de configuration pertinents
Voici les fichiers que vous devez modifier sur server01 et server02.
Pour gérer les exports NFS - /etc/exports - (sur server01 et server02) :
/data/export 192.168.1.0/255.255.255.0(rw)Pour la configuration drbd - /etc/drbd.conf (sur server01 et server02) :
global {
usage-count yes;
}
common {
syncer { rate 10M; }
}
resource r0 {
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";
}
startup {
degr-wfc-timeout 120; # 2 minutes.
}
disk {
on-io-error detach;
}
net {
}
syncer {
rate 10M;
al-extents 257;
}
on server01 {
device /dev/drbd0;
disk /dev/hdb1;
address 192.168.1.2:7788;
meta-disk /dev/hdc1[0];
}
on server02 {
device /dev/drbd0;
disk /dev/hdb1;
address 192.168.1.3:7788;
meta-disk /dev/hdc1[0];
}
}Pour heartbeat - /etc/ha.d/ha.cf - (sur server01 et server02) :
logfacility local0
keepalive 1
deadtime 10
bcast eth1
auto_failback on
node server01 server02Configurer l’authentification heartbeat - /etc/heartbeat/authkeys - (sur server01 et server02) :
auth 3
3 md5 votre_mot_de_passeAu lieu d’utiliser md5, vous pouvez également utiliser sha1. N’oubliez pas de rendre ce fichier lisible/écrivable uniquement pour root.
chmod 600 /etc/heartbeat/authkeys (Sur server01 et server02.)
Pour rendre la ressource ha disponible - /etc/ha.d/haresources - (sur server01 et server02) :
server01 IPaddr::192.168.1.100
server01 drbddisk::r0 Filesystem::/dev/drbd0::/data::ext3 nfs-kernel-server(NOTE : pour server02, dans le fichier haresources, vous aurez remarqué que j’ai utilisé le même nom d’hôte, c’est-à-dire server01. Cela pour s’assurer que lorsque server01 est disponible en ligne, server02 rendra le contrôle à celui-ci et il deviendra secondaire. Veuillez modifier le nom d’hôte ci-dessus en server02, si vous souhaitez qu’il reste primaire.)
Après avoir fait tout cela, donnez ces commandes pour initialiser le disque de métadonnées drbd (sur server01 et server02) :
server01# drbdadm create-md r0 ( r0 c’est le nom de la ressource.)
server01# drbdadm up allFaites un
cat /proc/drbd sur server01 et server02 et vous verrez que server01 et server02 sont en mode secondaire et qu’ils sont incohérents. C’est assez évident, car nous n’avons pas encore configuré le système nfs et nous n’avons pas défini quel système sera le serveur primaire. Dans mon cas, c’est server01. Donc je vais donner les commandes suivantes sur server01 :
server01# drbdsetup /dev/drbd0 primary -oserver01# mkfs.ext3 /dev/drbd0server01# mkdir /dataserver01# mount -t ext3 /dev/drbd0 /dataPar défaut, le serveur nfs stocke son état de montage et ses verrous sous /var/lib/nfs et nous voulons que cela soit conservé en cas de basculement. Donc faites cela sur server01 :
server01# mv /var/lib/nfs/ /data/server01# ln -s /data/nfs/ /var/lib/nfsserver01# mkdir /data/exportserver01# umount /dataserver01# cat /proc/drbd <— Regardez-le attentivement et vous remarquerez que server01 est maintenant le système primaire.
Émettez ces commandes sur server02, pour le préparer à prendre le relais en cas de défaillance.
mkdir /datarm -fr /var/lib/nfsln -s /data/nfs /var/lib/nfsHmm… c’est à peu près tout. Vous avez terminé du point de vue de la configuration. Maintenant, allez-y et démarrez vos systèmes.
Étape 5. Démarrer votre système
Démarrez les services nécessaires sur server01 et server02 :
/etc/init.d/drbd start/etc/init.d/heartbeat startAprès que cela ait été complété avec succès, vous remarquerez que server01 aura une IP supplémentaire - 192.168.1.100 et /data est monté. Vous pouvez également vérifier le fichier /proc/drbd pour un statut en temps réel.
Sur server02, vous ne devriez pas voir 192.168.1.100 et /data.
tail -f /var/log/messageset regardez le spectacle.
Étape 6. Tester pour s’assurer que cela fonctionne réellement
Le meilleur moyen de le tester est de le faire de manière réelle et difficile. Éteignez simplement server01 et voyez comment server02 prend le relais. Regardez les journaux de prise de contrôle sur server02. :)
Recevez de nouveaux articles dans votre boîte de réception.
Aucun spam. Désabonnez-vous à tout moment.