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

Cambia solo esta línea (dejando todo lo demás sin cambios):

SELINUX=disabled

Configurando el Nombre del Host

Necesitamos cambiar el nombre del host y la puerta de enlace de los nodos:

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

Configurando Interfaces de Red

A continuación, configuraremos las interfaces de red:

node1:

La interfaz 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 

La interfaz Cruzada/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:

La interfaz 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

La interfaz Cruzada/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

Configurando la Configuración de DNS

Configurando la configuración de DNS en ambos nodos (según tu red):

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

Configurando la Resolución Básica de Nombres de Host

Configurando /etc/hosts (misma configuración en ambos nodos):

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: 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/inittab

Cambia 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

Share: X/Twitter LinkedIn

Recibe nuevas publicaciones en tu bandeja de entrada.

No spam. Cancela la suscripción en cualquier momento.