Cluster Samba · 5 min read · Jan 29, 2026
Configuration d'un cluster Samba CTDB actif/actif utilisant GFS et DRBD (CentOS 5.5)
Configuration d’un cluster Samba CTDB actif/actif utilisant GFS et DRBD (CentOS 5.5)
Cet article explique comment configurer un cluster Samba CTDB actif/actif, en utilisant GFS et DRBD. Préparé par Rafael Marangoni, de l’équipe Linux de BRLink.
Introduction
Nous utilisons deux nœuds, tous deux sont des nœuds actifs, et les requêtes sont équilibrées. Pour répliquer les données entre les nœuds, nous utilisons DRBD. Pour un cluster actif/actif, nous devons utiliser un ClusterFS (dans ce cas GFS), pour permettre aux deux nœuds d’écrire sur la ressource DRBD en même temps.
1 Remarque préliminaire
Distribution Linux :
Nous utilisons la distribution CentOS 5.5 (64 bits), mais cela fonctionnera probablement sur Fedora (et Red Hat, c’est sûr). L’installation de CentOS est très simple et classique, sélectionnez les paquets de base et d’autres éléments que vous aimez/besoin. Un point à garder à l’esprit est que nous utilisons DRBD pour répliquer les données entre les nœuds, vous aurez donc besoin d’un disque ou d’une partition exclusive à DRBD. N’oubliez pas cela avant de partitionner les disques lors de l’installation de CentOS.
Matériel/Topologie réseau :
Nous utilisons deux NIC Gigabit par nœud, l’un (eth0) se connecte au réseau (LAN), et l’autre (eth1) avec un câble croisé reliant les deux nœuds. Le câble croisé doit être utilisé pour améliorer les performances et la fiabilité du système, car DRBD ne dépendra pas des commutateurs réseau ou de quoi que ce soit d’autre pour répliquer les données entre les nœuds.
Dans ce tutoriel, nous utiliserons les nœuds physiques node1.clusterbr.int et node2.clusterbr.int :
node1.clustersmb.int : Utilise l’IP 10.0.0.181 (LAN) et l’IP 172.16.0.1 (croisé)
node2.clustersmb.int : Utilise l’IP 10.0.0.182 (LAN) et l’IP 172.16.0.2 (croisé)
vip1.clustersmb.int : C’est l’IP du cluster, du nœud1 10.0.0.183.
vip2.clustersmb.int : C’est l’IP du cluster, du nœud2 10.0.0.184.
Disques :
Les deux nœuds ont deux disques :
/dev/sda : pour le système d’exploitation ;
/dev/sdb : pour DRBD.
Comme je l’ai dit précédemment, vous pouvez utiliser un seul disque, en laissant une partition exclusive à DRBD.
CTDB :
C’est une implémentation de cluster de TDB, à utiliser avec Samba sur des systèmes de fichiers en cluster. Nous en avons besoin pour avoir un cluster actif/actif, afin que les deux services smb puissent répondre aux requêtes réseau. Plus d’informations sur http://ctdb.samba.org.
2 Préparation des nœuds
Désactivation de SELINUX
Nous devons désactiver SELINUX :
vi /etc/selinux/configChangez uniquement cette ligne (laissant tout le reste intact) :
SELINUX=disabledChangement de nom d’hôte
Nous devons changer le nom d’hôte et la passerelle des nœuds :
vi /etc/sysconfig/networknode1 :
NETWORKING=yes
NETWORKING_IPV6=no
HOSTNAME=node1.clustersmb.int
GATEWAY=10.0.0.9node2 :
NETWORKING=yes
NETWORKING_IPV6=no
HOSTNAME=node2.clustersmb.int
GATEWAY=10.0.0.9Configuration des interfaces réseau
Ensuite, nous allons configurer les interfaces réseau :
node1 :
L’interface LAN :
vi /etc/sysconfig/network-scripts/ifcfg-eth0DEVICE=eth0
BOOTPROTO=static
IPADDR=10.0.0.181
NETMASK=255.255.255.0
ONBOOT=yes
HWADDR=a6:1e:3d:67:66:78 L’interface Croisée/DRBD :
vi /etc/sysconfig/network-scripts/ifcfg-eth1DEVICE=eth1
BOOTPROTO=static
IPADDR=172.16.0.1
NETMASK=255.255.255.0
ONBOOT=yes
HWADDR=ee:ef:ff:9a:9a:57node2 :
L’interface LAN :
vi /etc/sysconfig/network-scripts/ifcfg-eth0DEVICE=eth0
BOOTPROTO=static
IPADDR=10.0.0.182
NETMASK=255.255.255.0
ONBOOT=yes
HWADDR=52:52:a1:1a:62:32L’interface Croisée/DRBD :
vi /etc/sysconfig/network-scripts/ifcfg-eth1DEVICE=eth1
BOOTPROTO=static
IPADDR=172.16.0.2
NETMASK=255.255.255.0
ONBOOT=yes
HWADDR=1a:18:b2:50:96:1eConfiguration de la configuration DNS
Configuration de la configuration DNS sur les deux nœuds (selon votre réseau) :
vi /etc/resolv.confsearch clustersmb.int
nameserver 10.0.0.9Configuration de la résolution de nom d’hôte de base
Configuration de /etc/hosts (même configuration sur les deux nœuds) :
vi /etc/hosts127.0.0.1 localhost.localdomain localhost
10.0.0.191 node1.clustersmb.int node1
10.0.0.192 node2.clustersmb.int node2
PS : Vous voudrez probablement ajouter d’autres lignes dans ce fichier, pour pointer vers d’autres adresses de votre réseau.
Vérification de la connectivité réseau
Vérifions si tout va bien :
node1 :
Pinging node2 (via l’interface LAN) :
[root@node1 ~]# ping -c 2 node2[root@node1 ~]# ping -c 2 node2
PING node2 (10.0.0.182) 56(84) octets de données.
64 octets de node2 (10.0.0.182) : icmp_seq=1 ttl=64 time=0.089 ms
64 octets de node2 (10.0.0.182) : icmp_seq=2 ttl=64 time=0.082 ms
— statistiques de ping de node2 —
2 paquets transmis, 2 reçus, 0% de perte de paquets, temps 999ms
rtt min/avg/max/mdev = 0.082/0.085/0.089/0.009 ms
Pinging node2 (via l’interface croisée) :
[root@node1 ~]# ping -c 2 172.16.0.2[root@node1 ~]# ping -c 2 172.16.0.2
PING 172.16.0.2 (172.16.0.2) 56(84) octets de données.
64 octets de 172.16.0.2 : icmp_seq=1 ttl=64 time=0.083 ms
64 octets de 172.16.0.2 : icmp_seq=2 ttl=64 time=0.083 ms
— statistiques de ping 172.16.0.2 —
2 paquets transmis, 2 reçus, 0% de perte de paquets, temps 999ms
rtt min/avg/max/mdev = 0.083/0.083/0.083/0.000 ms
node2 :
Pinging node1 (via l’interface LAN) :
[root@node2 ~]# ping -c 2 node1[root@node2 ~]# ping -c 2 node1
PING node1 (10.0.0.181) 56(84) octets de données.
64 octets de node1 (10.0.0.181) : icmp_seq=1 ttl=64 time=0.068 ms
64 octets de node1 (10.0.0.181) : icmp_seq=2 ttl=64 time=0.063 ms
— statistiques de ping de node1 —
2 paquets transmis, 2 reçus, 0% de perte de paquets, temps 999ms
rtt min/avg/max/mdev = 0.063/0.065/0.068/0.008 ms
Pinging node1 (via l’interface croisée) :
[root@node2 ~]# ping -c 2 172.16.0.1[root@node2 ~]# ping -c 2 172.16.0.1
PING 172.16.0.1 (172.16.0.1) 56(84) octets de données.
64 octets de 172.16.0.1 : icmp_seq=1 ttl=64 time=1.36 ms
64 octets de 172.16.0.1 : icmp_seq=2 ttl=64 time=0.075 ms
— statistiques de ping 172.16.0.1 —
2 paquets transmis, 2 reçus, 0% de perte de paquets, temps 1001ms
rtt min/avg/max/mdev = 0.075/0.722/1.369/0.647 ms
Configuration des options d’initialisation
J’aime définir le niveau d’exécution à 3.
vi /etc/inittabChangez uniquement cette ligne (laissant tout le reste intact) :
id:3:initdefault:J’aime supprimer certains services de l’initialisation automatique, pour ne maintenir que les services qui seront réellement utilisés.
Voici les services actifs dont nous aurons besoin :
[root@node1 ~]# chkconfig --list | grep 3:sim[root@node1 ~]# chkconfig –list | grep 3:sim
acpid 0:non 1:non 2:oui 3:oui 4:oui 5:oui 6:non
anacron 0:non 1:non 2:oui 3:oui 4:oui 5:oui 6:non
apmd 0:non 1:non 2:oui 3:oui 4:oui 5:oui 6:non
atd 0:non 1:non 2:non 3:oui 4:oui 5:oui 6:non
cpuspeed 0:non 1:oui 2:oui 3:oui 4:oui 5:oui 6:non
crond 0:non 1:non 2:oui 3:oui 4:oui 5:oui 6:non
irqbalance 0:non 1:non 2:oui 3:oui 4:oui 5:oui 6:non
kudzu 0:non 1:non 2:non 3:oui 4:oui 5:oui 6:non
network 0:non 1:non 2:oui 3:oui 4:oui 5:oui 6:non
rawdevices 0:non 1:non 2:non 3:oui 4:oui 5:oui 6:non
sshd 0:non 1:non 2:oui 3:oui 4:oui 5:oui 6:non
syslog 0:non 1:non 2:oui 3:oui 4:oui 5:oui 6:non
À ce stade, nous devons redémarrer les deux nœuds pour appliquer la configuration.
reboot
Recevez de nouveaux articles dans votre boîte de réception.
Aucun spam. Désabonnez-vous à tout moment.