Cluster Samba · 5 min read · Jan 29, 2026

Configurando Um Cluster Samba CTDB Ativo/Ativo Usando GFS & DRBD (CentOS 5.5)

Configurando Um Cluster Samba CTDB Ativo/Ativo Usando GFS & DRBD (CentOS 5.5)

Este artigo explica como configurar um Cluster Samba CTDB Ativo/Ativo, usando GFS e DRBD. Preparado por Rafael Marangoni, da equipe BRLink Servidor Linux.

Introdução

Usamos dois nós, ambos são nós ativos, e as solicitações são balanceadas. Para replicar dados entre os nós, usamos DRBD. Para um cluster ativo/ativo, devemos usar um ClusterFS (neste caso GFS), para permitir que os dois nós escrevam no recurso DRBD ao mesmo tempo.

1 Nota Preliminar

Distribuição Linux:

Estamos usando a distribuição CentOS 5.5 (64 bits), mas provavelmente funcionará no Fedora (e no Red Hat, com certeza). A instalação do CentOS é muito simples e clássica, selecione os pacotes base e outras coisas que você gosta/precisa. Um ponto que deve ser lembrado é que usamos DRBD para replicar dados entre os nós, então você precisará ter um disco ou partição exclusiva para o DRBD. Lembre-se disso antes de particionar discos na instalação do CentOS.

Hardware/Topologia de Rede:

Usamos duas NICs Gigabit por nó, uma (eth0) conectada à rede (LAN), e a outra (eth1) com um cabo cruzado conectando ambos os nós. O cabo cruzado deve ser usado para melhorar o desempenho e a confiabilidade do sistema, porque o DRBD não dependerá de switches de rede ou qualquer outra coisa para replicar dados entre os nós.

Neste tutorial, usaremos os nós físicos node1.clusterbr.int e node2.clusterbr.int:
node1.clustersmb.int: Usa IP 10.0.0.181 (LAN) e IP 172.16.0.1 (cabo cruzado)
nnode2.clustersmb.int: Usa IP 10.0.0.182 (LAN) e IP 172.16.0.2 (cabo cruzado)
vip1.clustersmb.int: É o IP do Cluster, do node1 10.0.0.183.
vip2.clustersmb.int: É o IP do Cluster, do node2 10.0.0.184.

Discos:

Ambos os nós têm dois discos:
/dev/sda: para o sistema operacional;
/dev/sdb: para DRBD.
Como eu disse antes, você pode usar apenas um disco, deixando uma partição exclusiva para o DRBD.

CTDB:

É uma implementação de cluster do TDB, para usar com Samba em sistemas de arquivos de cluster. Precisamos dele para ter um cluster ativo/ativo, então ambos os serviços smb podem responder às solicitações da rede. Mais informações em http://ctdb.samba.org.

2 Preparando Os Nós

Desabilitando SELINUX

Precisamos desabilitar o SELINUX:

vi /etc/selinux/config

Altere apenas esta linha (deixando todo o resto inalterado):

SELINUX=disabled

Configurando Nome do Host

Precisamos alterar o nome do host e o gateway dos nós:

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 Rede

Em seguida, configuraremos as interfaces de rede:

node1:

A 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 

A interface 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:

A 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

A interface 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

Configurando Configuração de DNS

Configurando a configuração de DNS em ambos os nós (de acordo com sua rede):

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

Configurando Resolução Básica de Nome de Host

Configurando /etc/hosts (mesma configuração em ambos os nós):

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: Você provavelmente vai querer adicionar outras linhas neste arquivo, para apontar para outros endereços da sua rede.

Verificando Conectividade de Rede

Vamos verificar se tudo está bem:

node1:

Pingando node2 (através da interface 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 (através da interface 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 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 (através da interface 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 (através da interface 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 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

Configurando Opções de Inicialização

Gosto de definir o runlevel para 3.

vi /etc/inittab

Altere apenas esta linha (deixando todo o resto inalterado):

id:3:initdefault:

Gosto de remover alguns serviços da inicialização automática, para manter apenas os serviços que realmente serão usados.

Estes são os serviços ativos que precisaremos:

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

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

Neste ponto, precisamos reiniciar ambos os nós para aplicar a configuração.

reboot
Share: X/Twitter LinkedIn

Receba novas postagens na sua caixa de entrada

Sem spam. Cancele a assinatura a qualquer momento.