Cluster Samba · 4 min read · Jan 29, 2026

Impostare un Cluster Samba CTDB Active/Active Utilizzando GFS e DRBD (CentOS 5.5)

Impostare un Cluster Samba CTDB Active/Active Utilizzando GFS e DRBD (CentOS 5.5)

Questo articolo spiega come impostare un Cluster Samba CTDB Active/Active, utilizzando GFS e DRBD. Preparato da Rafael Marangoni, del Team Linux di BRLink.

Introduzione

Utilizziamo due nodi, entrambi sono nodi attivi, e le richieste sono bilanciate. Per replicare i dati tra i nodi utilizziamo DRBD. Per un cluster attivo/attivo, dobbiamo utilizzare un ClusterFS (in questo caso GFS), per far sì che i due nodi possano scrivere sulla risorsa DRBD contemporaneamente.

1 Nota Preliminare

Distribuzione Linux:

Stiamo utilizzando la distribuzione CentOS 5.5 (64bit), ma probabilmente funzionerà anche su Fedora (e Red Hat, di sicuro). L’installazione di CentOS è molto semplice e classica, seleziona i pacchetti di base e altre cose che ti piacciono/hai bisogno. Un problema che deve essere ricordato è che utilizziamo DRBD per replicare i dati tra i nodi, quindi avrai bisogno di un disco o partizione esclusiva per DRBD. Ricorda questo prima di partizionare i dischi durante l’installazione di CentOS.

Hardware/Topologia di Rete:

Utilizziamo due schede di rete Gigabit per nodo, una (eth0) collegata alla rete (LAN), e l’altra (eth1) con un cavo incrociato che collega entrambi i nodi. Il cavo incrociato deve essere utilizzato per migliorare le prestazioni e l’affidabilità del sistema, perché DRBD non dipenderà da switch di rete o altro per replicare i dati tra i nodi.

In questo tutorial utilizzeremo i nodi fisici node1.clusterbr.int e node2.clusterbr.int:
node1.clustersmb.int: Usa IP 10.0.0.181 (LAN) e IP 172.16.0.1 (incrociato)
node2.clustersmb.int: Usa IP 10.0.0.182 (LAN) e IP 172.16.0.2 (incrociato)
vip1.clustersmb.int: È l’IP del Cluster, dal nodo1 10.0.0.183.
vip2.clustersmb.int: È l’IP del Cluster, dal nodo2 10.0.0.184.

Dischi:

Entrambi i nodi hanno due dischi:
/dev/sda: per il sistema operativo;
/dev/sdb: per DRBD.
Come ho detto prima, puoi utilizzare solo un disco, se lasciando una partizione esclusiva per DRBD.

CTDB:

È un’implementazione cluster di TDB, da utilizzare con Samba su filesystem cluster. Ne abbiamo bisogno per avere un cluster attivo/attivo, quindi entrambi i servizi smb possono rispondere alle richieste di rete. Maggiori informazioni su http://ctdb.samba.org.

2 Preparazione Dei Nodi

Disabilitare SELINUX

Dobbiamo disabilitare SELINUX:

vi /etc/selinux/config

Cambia solo questa riga (lasciando tutto il resto intatto):

SELINUX=disabled

Impostare il Nome Host

Dobbiamo cambiare il nome host e il gateway dei nodi:

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

Configurare le Interfacce di Rete

Successivamente, configureremo le interfacce di rete:

node1:

L’interfaccia 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’interfaccia Cross-Over/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’interfaccia 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’interfaccia Cross-Over/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

Impostare la Configurazione DNS

Impostare la configurazione DNS su entrambi i nodi (secondo la tua rete):

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

Configurare la Risoluzione di Base del Nome Host

Configurare /etc/hosts (stessa configurazione su entrambi i nodi):

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: Probabilmente vorrai impostare altre righe in questo file, per puntare ad altri indirizzi della tua rete.

Controllare la Connettività di Rete

Controlliamo se tutto va bene:

node1:

Pingando node2 (tramite interfaccia LAN):

[root@node1 ~]# ping -c 2 node2

[root@node1 ~]# ping -c 2 node2
PING node2 (10.0.0.182) 56(84) bytes of data.
64 bytes from node2 (10.0.0.182): icmp_seq=1 ttl=64 time=0.089 ms
64 bytes from node2 (10.0.0.182): icmp_seq=2 ttl=64 time=0.082 ms
— node2 ping statistics —
2 packets transmitted, 2 received, 0% packet loss, time 999ms
rtt min/avg/max/mdev = 0.082/0.085/0.089/0.009 ms

Pingando node2 (tramite interfaccia incrociata):

[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) bytes of data.
64 bytes from 172.16.0.2: icmp_seq=1 ttl=64 time=0.083 ms
64 bytes from 172.16.0.2: icmp_seq=2 ttl=64 time=0.083 ms
— 172.16.0.2 ping statistics —
2 packets transmitted, 2 received, 0% packet loss, time 999ms
rtt min/avg/max/mdev = 0.083/0.083/0.083/0.000 ms

node2:

Pingando node1 (tramite interfaccia LAN):

[root@node2 ~]# ping -c 2 node1

[root@node2 ~]# ping -c 2 node1
PING node1 (10.0.0.181) 56(84) bytes of data.
64 bytes from node1 (10.0.0.181): icmp_seq=1 ttl=64 time=0.068 ms
64 bytes from node1 (10.0.0.181): icmp_seq=2 ttl=64 time=0.063 ms
— node1 ping statistics —
2 packets transmitted, 2 received, 0% packet loss, time 999ms
rtt min/avg/max/mdev = 0.063/0.065/0.068/0.008 ms

Pingando node1 (tramite interfaccia incrociata):

[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) bytes of data.
64 bytes from 172.16.0.1: icmp_seq=1 ttl=64 time=1.36 ms
64 bytes from 172.16.0.1: icmp_seq=2 ttl=64 time=0.075 ms
— 172.16.0.1 ping statistics —
2 packets transmitted, 2 received, 0% packet loss, time 1001ms
rtt min/avg/max/mdev = 0.075/0.722/1.369/0.647 ms

Configurare le Opzioni di Inizializzazione

Mi piace impostare il runlevel a 3.

vi /etc/inittab

Cambia solo questa riga (lasciando tutto il resto intatto):

id:3:initdefault:

Mi piace rimuovere alcuni servizi dall’inizializzazione automatica, per mantenere solo i servizi che verranno realmente utilizzati.

Questi sono i servizi attivi di cui avremo bisogno:

[root@node1 ~]# chkconfig --list | grep 3:sim

[root@node1 ~]# chkconfig –list | grep 3:sim
acpid 0:no 1:no 2:si 3:si 4:si 5:si 6:no
anacron 0:no 1:no 2:si 3:si 4:si 5:si 6:no
apmd 0:no 1:no 2:si 3:si 4:si 5:si 6:no
atd 0:no 1:no 2:no 3:si 4:si 5:si 6:no
cpuspeed 0:no 1:si 2:si 3:si 4:si 5:si 6:no
crond 0:no 1:no 2:si 3:si 4:si 5:si 6:no
irqbalance 0:no 1:no 2:si 3:si 4:si 5:si 6:no
kudzu 0:no 1:no 2:no 3:si 4:si 5:si 6:no
network 0:no 1:no 2:si 3:si 4:si 5:si 6:no
rawdevices 0:no 1:no 2:no 3:si 4:si 5:si 6:no
sshd 0:no 1:no 2:si 3:si 4:si 5:si 6:no
syslog 0:no 1:no 2:si 3:si 4:si 5:si 6:no

A questo punto, dobbiamo riavviare entrambi i nodi per applicare la configurazione.

reboot
Share: X/Twitter LinkedIn

Ricevi i nuovi post nella tua casella di posta.

Nessuno spam. Disiscriviti in qualsiasi momento.