Samba Cluster · 5 min read · Jan 29, 2026
Configuración de un Clúster Activo/Activo de Samba CTDB Usando GFS y DRBD (CentOS 5.5)
Configuración de un Clúster Activo/Activo de Samba CTDB Usando GFS y DRBD (CentOS 5.5)
Este artículo explica cómo configurar un Clúster Activo/Activo de Samba CTDB, utilizando GFS y DRBD. Preparado por Rafael Marangoni, del equipo de Servidor Linux de BRLink.
Introducción
Usamos dos nodos, ambos son nodos activos, y las solicitudes se balancean. Para replicar datos entre los nodos usamos DRBD. Para un clúster activo/activo, debemos usar un ClusterFS (en este caso GFS), para que los dos nodos puedan escribir en el recurso DRBD al mismo tiempo.
1 Nota Preliminar
Distribución de Linux:
Estamos usando la distribución CentOS 5.5 (64 bits), pero probablemente funcionará en Fedora (y Red Hat, seguro). La instalación de CentOS es muy simple y clásica, selecciona los paquetes base y otras cosas que te gusten/necesites. Un problema que debe recordarse es que usamos DRBD para replicar datos entre los nodos, por lo que necesitarás tener un disco o partición exclusiva para DRBD. Recuerda esto antes de particionar discos en la instalación de CentOS.
Hardware/Topología de Red:
Usamos dos NIC Gigabit por nodo, uno (eth0) conectado a la red (LAN), y el otro (eth1) con un cable cruzado conectando ambos nodos. El cable cruzado debe usarse para mejorar el rendimiento y la confiabilidad del sistema, porque DRBD no dependerá de switches de red ni nada más para replicar datos entre los nodos.
En este tutorial usaremos los nodos físicos node1.clusterbr.int y node2.clusterbr.int:
node1.clustersmb.int: Usa IP 10.0.0.181 (LAN) y IP 172.16.0.1 (cruzado)
node2.clustersmb.int: Usa IP 10.0.0.182 (LAN) y IP 172.16.0.2 (cruzado)
vip1.clustersmb.int: Es la IP del Clúster, desde node1 10.0.0.183.
vip2.clustersmb.int: Es la IP del Clúster, desde node2 10.0.0.184.
Discos:
Ambos nodos tienen dos discos:
/dev/sda: para el sistema operativo;
/dev/sdb: para DRBD.
Como dije antes, puedes usar solo un disco, si dejas una partición exclusiva para DRBD.
CTDB:
Es una implementación de clúster de TDB, para usar con Samba en sistemas de archivos de clúster. Lo necesitamos para tener un clúster activo/activo, entonces ambos servicios smb pueden responder a las solicitudes de la red. Más información en http://ctdb.samba.org.
2 Preparando Los Nodos
Deshabilitando SELINUX
Necesitamos deshabilitar SELINUX:
vi /etc/selinux/configCambia solo esta línea (dejando todo lo demás sin cambios):
SELINUX=disabledConfigurando el Nombre del Host
Necesitamos cambiar el nombre del host y la puerta de enlace de los nodos:
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.9Configurando Interfaces de Red
A continuación, configuraremos las interfaces de red:
node1:
La interfaz 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 La interfaz Cruzada/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:
La interfaz 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:32La interfaz Cruzada/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:1eConfigurando la Configuración de DNS
Configurando la configuración de DNS en ambos nodos (según tu red):
vi /etc/resolv.confsearch clustersmb.int
nameserver 10.0.0.9Configurando la Resolución Básica de Nombres de Host
Configurando /etc/hosts (misma configuración en ambos nodos):
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: Probablemente querrás establecer otras líneas en este archivo, para apuntar a otras direcciones de tu red.
Comprobando la Conectividad de Red
Verifiquemos si todo está bien:
node1:
Haciendo ping a node2 (a través de la interfaz LAN):
[root@node1 ~]# ping -c 2 node2[root@node1 ~]# ping -c 2 node2
PING node2 (10.0.0.182) 56(84) bytes de datos.
64 bytes desde node2 (10.0.0.182): icmp_seq=1 ttl=64 tiempo=0.089 ms
64 bytes desde node2 (10.0.0.182): icmp_seq=2 ttl=64 tiempo=0.082 ms
— estadísticas de ping a node2 —
2 paquetes transmitidos, 2 recibidos, 0% pérdida de paquetes, tiempo 999ms
rtt min/avg/max/mdev = 0.082/0.085/0.089/0.009 ms
Haciendo ping a node2 (a través de la interfaz cruzada):
[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 de datos.
64 bytes desde 172.16.0.2: icmp_seq=1 ttl=64 tiempo=0.083 ms
64 bytes desde 172.16.0.2: icmp_seq=2 ttl=64 tiempo=0.083 ms
— estadísticas de ping 172.16.0.2 —
2 paquetes transmitidos, 2 recibidos, 0% pérdida de paquetes, tiempo 999ms
rtt min/avg/max/mdev = 0.083/0.083/0.083/0.000 ms
node2:
Haciendo ping a node1 (a través de la interfaz LAN):
[root@node2 ~]# ping -c 2 node1[root@node2 ~]# ping -c 2 node1
PING node1 (10.0.0.181) 56(84) bytes de datos.
64 bytes desde node1 (10.0.0.181): icmp_seq=1 ttl=64 tiempo=0.068 ms
64 bytes desde node1 (10.0.0.181): icmp_seq=2 ttl=64 tiempo=0.063 ms
— estadísticas de ping a node1 —
2 paquetes transmitidos, 2 recibidos, 0% pérdida de paquetes, tiempo 999ms
rtt min/avg/max/mdev = 0.063/0.065/0.068/0.008 ms
Haciendo ping a node1 (a través de la interfaz cruzada):
[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 de datos.
64 bytes desde 172.16.0.1: icmp_seq=1 ttl=64 tiempo=1.36 ms
64 bytes desde 172.16.0.1: icmp_seq=2 ttl=64 tiempo=0.075 ms
— estadísticas de ping 172.16.0.1 —
2 paquetes transmitidos, 2 recibidos, 0% pérdida de paquetes, tiempo 1001ms
rtt min/avg/max/mdev = 0.075/0.722/1.369/0.647 ms
Configurando Opciones de Inicialización
Me gusta establecer el nivel de ejecución en 3.
vi /etc/inittabCambia solo esta línea (dejando todo lo demás sin cambios):
id:3:initdefault:Me gusta eliminar algunos servicios de la inicialización automática, para mantener solo los servicios que realmente se utilizarán.
Estos son los servicios activos que necesitaremos:
[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
En este punto, necesitamos reiniciar ambos nodos para aplicar la configuración.
reboot
Recibe nuevas publicaciones en tu bandeja de entrada.
No spam. Cancela la suscripción en cualquier momento.