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/configAltere apenas esta linha (deixando todo o resto inalterado):
SELINUX=disabledConfigurando Nome do Host
Precisamos alterar o nome do host e o gateway dos nós:
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 Rede
Em seguida, configuraremos as interfaces de rede:
node1:
A interface 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 A interface Cross-Over/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:
A interface 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:32A interface Cross-Over/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 Configuração de DNS
Configurando a configuração de DNS em ambos os nós (de acordo com sua rede):
vi /etc/resolv.confsearch clustersmb.int
nameserver 10.0.0.9Configurando Resolução Básica de Nome de Host
Configurando /etc/hosts (mesma configuração em ambos os nós):
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: 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/inittabAltere 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.
rebootReceba novas postagens na sua caixa de entrada
Sem spam. Cancele a assinatura a qualquer momento.