Contexte : rendre un partage de fichiers Samba résistant aux pannes grâce à la réplication de disque entre deux serveurs · Testé sur : Ubuntu Server, DRBD et drbd-utils (lab à deux nœuds) · Dernière vérification : contenu de 2023 non revérifié
Mettre en place un service de haute disponibilité et de réplication de données pour qu'un partage de fichiers Samba continue de fonctionner quand l'un des serveurs tombe en panne. Cette page installe et configure DRBD, qui réplique une partition entre les deux serveurs ; la bascule automatique du service est traitée dans le tutoriel Cluster haute disponibilité Linux avec Heartbeat.
Une entreprise qui fournit des services à ses clients ou à ses salariés a besoin qu'ils restent disponibles et stables, même en cas de forte affluence. Deux approches complémentaires existent :
En haute disponibilité, plusieurs serveurs proposent le même service et forment un cluster : un serveur primaire rend le service, un serveur secondaire se tient prêt. Les serveurs s'envoient des « pulsations » ; si le primaire ne répond plus, le secondaire prend son rôle et reprend les services dont il avait la charge. Le cluster est joint par une adresse IP virtuelle qui suit le serveur actif : la bascule reste invisible pour les clients.
Pour un partage de fichiers, il faut en plus que les fichiers soient présents au même moment sur tous les serveurs. C'est le rôle de la réplication : chaque serveur dispose d'une partition (ou d'un disque) supplémentaire, synchronisée avec celle des autres. En plaçant le répertoire de travail de Samba sur cette partition, chaque fichier déposé sur le partage est écrit simultanément sur tous les serveurs.
root./dev/sdb), de même taille.Architecture du lab :
| Élément | Valeur d'exemple |
|---|---|
| Nœud 1 | srv1, lien de réplication 192.168.122.7 |
| Nœud 2 | srv2, lien de réplication 192.168.122.148 |
| Disque répliqué | /dev/sdb sur chaque nœud |
| Adresse IP commune du service Samba | 192.168.1.90 |

Toutes les étapes suivantes sont à réaliser sur les deux serveurs. Les fichiers de configuration doivent être strictement identiques sur les deux nœuds.
Le module noyau DRBD est fourni avec Ubuntu Server : il suffit de le charger. La commande affiche la version et indique si le module est actif.
modprobe drbd
Ou, une fois les outils installés, avec le service :
systemctl start drbd
Les outils drbd-utils permettent de piloter le service : démarrage et arrêt, passage d'un serveur en primaire, gestion des ressources.
apt install drbd-utils
La configuration commune se trouve dans /etc/drbd.d/global_common.conf. Vous pouvez aussi créer votre propre fichier de ressource dans /etc/drbd.d/ et l'inclure depuis /etc/drbd.conf.
La ressource déclarée en tête du fichier (ici drbd) donne un nom au volume répliqué. Chaque section on décrit un nœud : son nom doit être exactement le nom d'hôte du serveur, tel que renvoyé par uname -n.
resource drbd {
protocol B;
handlers {
pri-on-incon-degr "/sbin/halt -f";
}
startup {
wfc-timeout 30;
degr-wfc-timeout 30;
}
disk {
on-io-error detach;
}
syncer {
rate 650M;
al-extents 257;
}
on srv1 {
address 192.168.122.7:7788;
device /dev/drbd0;
disk /dev/sdb;
meta-disk internal;
}
on srv2 {
address 192.168.122.148:7788;
device /dev/drbd0;
disk /dev/sdb;
meta-disk internal;
}
}
Rôle des principaux paramètres :
| Paramètre | Rôle |
|---|---|
protocol B |
Réplication semi-synchrone : une écriture est validée quand elle a atteint la mémoire du nœud distant |
pri-on-incon-degr |
Action exécutée si le primaire se retrouve avec des données incohérentes : ici, arrêt immédiat du serveur |
wfc-timeout, degr-wfc-timeout |
Délai d'attente (en secondes) de l'autre nœud au démarrage, en situation normale ou dégradée |
on-io-error detach |
En cas d'erreur d'entrée-sortie, le disque local est détaché et le nœud continue sans lui |
rate, al-extents |
Débit maximal de resynchronisation et taille du journal d'activité |
address |
Adresse et port du lien de réplication de chaque nœud |
device, disk, meta-disk |
Périphérique DRBD créé, disque physique répliqué, emplacement des métadonnées |
La section
syncercorrespond à la syntaxe de DRBD 8.3. Sidrbdadmla refuse avec une version plus récente, placezresync-rateetal-extentsdans la sectiondisk(voir le guide officiel de DRBD).
Sur les deux nœuds :
drbdadm create-md drbd
Contrôlez que la configuration est lue sans erreur, puis consultez l'état de la ressource sur chaque nœud :
drbdadm dump drbd
cat /proc/drbd
Avec DRBD 9, l'état s'affiche avec drbdadm status drbd.
La version d'origine de ce tutoriel s'arrête à la création des métadonnées. Les étapes suivantes (activation de la ressource, désignation du nœud primaire et synchronisation initiale, création du système de fichiers sur
/dev/drbd0, placement du partage Samba sur ce volume, puis bascule automatique) sont décrites dans le guide officiel de DRBD. La bascule de l'adresse IP virtuelle et des services est présentée dans le tutoriel Heartbeat.
| Symptôme | Cause probable | Solution |
|---|---|---|
drbdadm signale que le nœud local n'est pas dans la configuration |
Le nom d'une section on ne correspond pas au nom d'hôte |
Comparez avec uname -n sur chaque serveur et corrigez le fichier sur les deux nœuds |
| Les nœuds ne se connectent pas | Lien de réplication coupé ou port 7788 filtré |
Testez le lien entre les deux adresses et ouvrez le port TCP 7788 sur les pare-feux |