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/config

Changez uniquement cette ligne (laissant tout le reste intact) :

SELINUX=disabled

Changement de nom d’hôte

Nous devons changer le nom d’hôte et la passerelle des nœuds :

vi /etc/sysconfig/network

node1 :

NETWORKING=yes
NETWORKING_IPV6=no
HOSTNAME=node1.clustersmb.int
GATEWAY=10.0.0.9

node2 :

NETWORKING=yes
NETWORKING_IPV6=no
HOSTNAME=node2.clustersmb.int
GATEWAY=10.0.0.9

Configuration des interfaces réseau

Ensuite, nous allons configurer les interfaces réseau :

node1 :

L’interface LAN :

vi /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=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-eth1
DEVICE=eth1
BOOTPROTO=static
IPADDR=172.16.0.1
NETMASK=255.255.255.0
ONBOOT=yes
HWADDR=ee:ef:ff:9a:9a:57

node2 :

L’interface LAN :

vi /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
BOOTPROTO=static
IPADDR=10.0.0.182
NETMASK=255.255.255.0
ONBOOT=yes
HWADDR=52:52:a1:1a:62:32

L’interface Croisée/DRBD :

vi /etc/sysconfig/network-scripts/ifcfg-eth1
DEVICE=eth1
BOOTPROTO=static
IPADDR=172.16.0.2
NETMASK=255.255.255.0
ONBOOT=yes
HWADDR=1a:18:b2:50:96:1e

Configuration de la configuration DNS

Configuration de la configuration DNS sur les deux nœuds (selon votre réseau) :

vi /etc/resolv.conf
search clustersmb.int
nameserver 10.0.0.9

Configuration 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/hosts
127.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/inittab

Changez 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

Share: X/Twitter LinkedIn

Recevez de nouveaux articles dans votre boîte de réception.

Aucun spam. Désabonnez-vous à tout moment.