Servidor NFS · 7 min read · Jan 30, 2026

Servidor NFS Altamente Disponível Usando DRBD E Heartbeat No Debian 5.0 (Lenny)

Servidor NFS Altamente Disponível Usando DRBD E Heartbeat No Debian 5.0 (Lenny)

Este HowTo explica como configurei um servidor NFS altamente disponível usando Debian 5 (Lenny) e drbd8 com heartbeat.

Eu fiz essa configuração há alguns dias. Apenas por diversão. Então pensei, é uma boa ideia documentar isso.

Autor - Vishal Sharma
Criado - 9 de março de 2010
Versão - 1.0

Isenção de responsabilidade - Este HowTo é fornecido como está e não vem com absolutamente nenhuma garantia de qualquer tipo. Use por sua conta e risco. Esses passos funcionaram para mim. Portanto, provavelmente, eles também devem funcionar para você. Caso você encontre algum problema, sinta-se à vontade para deixar seus comentários abaixo. Tentarei abordá-los assim que puder.

Aqui está um resumo do que você precisa fazer:

Passo 1. Faça a preparação do seu sistema. Isso envolve configurar seu hardware e software básicos. (Isso não é coberto como parte deste HowTo.)

Passo 2. Configure os endereços IP necessários.

Passo 3. Instale os pacotes necessários.

Passo 4. Edite os arquivos de configuração relevantes.

Passo 5. Inicie seu sistema.

Passo 6. Teste para ter certeza de que realmente funciona.

PASSO 1. Fazendo a Preparação do Seu Sistema

Estou usando 3 sistemas Debian para isso. Todos eles são uma instalação padrão padrão. No entanto, fiz uma alteração para inicializar meu sistema no modo texto. Como não tenho um hardware tão bom na minha máquina, prefiro brincar com a linha de comando.

Cada sistema tem uma rede onboard. Normalmente, em sistemas de produção, isso pode não ser o caso. Mas como o meu é apenas uma instalação para brincar, não me preocupei em adicionar coisas que proporcionariam melhor desempenho.

Se você não quiser dedicar uma máquina, sempre pode usar o Sun VirtualBox para isso e ter sua configuração. É muito mais fácil assim, pois oferece o benefício de tirar instantâneas do sistema antes de fazer quaisquer alterações significativas na configuração.

Minha configuração de teste aqui é baseada em 2 servidores e um cliente. No meu cenário, este sistema cliente é apenas um cliente NFS normal montando compartilhamentos do servidor NFS. Minha configuração aqui é Ativo/Passivo e NÃO Ativo/Ativo. Portanto, a qualquer momento, se seu sistema ativo falhar, o sistema passivo assumirá.

No server01 e server02, tenho 2 partições, a saber

/dev/hdb1 - 500GB - que será montado como nfs em /data.

/dev/hdc1 - 500MB - isso armazenará os metadados do drbd. Ele precisa de um mínimo de 128MB.

Certifique-se de não montar nenhuma dessas partições. Isso será tratado pelo drbd. Certifique-se de apenas criar as partições e deixá-las como estão. Sem formatação, sem montagens por enquanto.

PASSO 2. Configurar os Endereços IP Necessários

Aqui está como nomeei meus sistemas:

server01 - 192.168.1.2/24 (eth0)

server02 - 192.168.1.3/24 (eth0)

client01 - 192.168.1.4/24 (eth0)

Certifique-se de ter as entradas acima no seu arquivo /etc/hosts para que a resolução de nomes não seja um problema. Esta é provavelmente a melhor opção e você não gostaria de entrar na confusão de configurar um servidor DNS para isso.

192.168.1.5/24 seria meu endereço IP flutuante virtual. Este é o endereço que será visto pelo mundo exterior e flutuará de sistema para sistema à medida que seu estado mudar.

Meu gateway padrão é 192.168.1.1/24, que é meu roteador. Eu precisaria de acesso à Internet para instalar pacotes.

Passo 3. Instalar os Pacotes Necessários

A coisa mais importante para o cluster HA funcionar bem é - O TEMPO. O tempo nos sistemas deve ser o mesmo. Para garantir isso, certifique-se de ter os pacotes ntp em funcionamento.

server01# apt-get install ntp ntpdate

Execute o acima no server01 e server02.

Nos servidores, ou seja, server01 e server02, você precisaria dos seguintes pacotes instalados para começar a funcionar.

drbd8, arquivos de cabeçalho do kernel, instalação do nfs-server e heartbeat. Então aqui está o que eu fiz.

server01# apt-get update
server01# apt-get install linux-headers-`uname -r` drbd8-utils drbd8-source heartbeat nfs-kernel-server

(O acima deve levar um tempo para ser concluído.)

Após a conclusão da instalação, faça o módulo do kernel drbd usando o seguinte comando:

server01# m-a a-i drbd8-source

Isso realizará uma compilação e fará o módulo do kernel drbd.

server01# modprobe drbd
server01# lsmod | grep drbd

(Isso deve mostrar algo, se isso não lhe der nada, então há algum problema em algum lugar que precisa ser corrigido.)

Desative o nfs para iniciar na inicialização. Isso é feito porque a inicialização e o desligamento do nfs são tratados pelo drbd e não queremos que o sistema interfira.

server01# update-rc.d -f nfs-kernel-server remove
server01# update-rc.d -f nfs-common remove

Execute os mesmos passos no server02 também.

Passo 4. Criar / Editar os Arquivos de Configuração Relevantes

Estes são os arquivos que você precisa editar no server01 e server02.

Para lidar com as exportações NFS - /etc/exports - (no server01 e server02):

/data/export 192.168.1.0/255.255.255.0(rw)

Para configuração do drbd - /etc/drbd.conf (no server01 e server02):

global {
usage-count yes;
}
common {
  syncer { rate 10M; }
}

resource r0 {
  protocol C;
  handlers {
    pri-on-incon-degr "echo o > /proc/sysrq-trigger ; halt -f";
    pri-lost-after-sb "echo o > /proc/sysrq-trigger ; halt -f";
    local-io-error "echo o > /proc/sysrq-trigger ; halt -f";
  }

  startup {
    degr-wfc-timeout 120;    # 2 minutos.
  }

  disk {
    on-io-error   detach;
  }

  net {
  }

  syncer {
    rate 10M;
    al-extents 257;
  }

on server01 {
    device /dev/drbd0;
    disk /dev/hdb1;
    address 192.168.1.2:7788;
    meta-disk /dev/hdc1[0];
  }

on server02 {
    device /dev/drbd0;
    disk /dev/hdb1;
    address 192.168.1.3:7788;
    meta-disk /dev/hdc1[0];
  }
}

Para heartbeat - /etc/ha.d/ha.cf - (no server01 e server02):

logfacility local0
keepalive 1
deadtime 10
bcast eth1
auto_failback on
node server01 server02

Configurar a autenticação do heartbeat - /etc/heartbeat/authkeys - (no server01 e server02):

auth 3
3 md5 sua_senha

Em vez de usar md5, você também pode usar sha1.  Não se esqueça de tornar este arquivo somente leitura/gravação para root.

chmod 600 /etc/heartbeat/authkeys 

(No server01 e server02.)

Para tornar o recurso ha disponível - /etc/ha.d/haresources - (no server01 e server02):

server01 IPaddr::192.168.1.100
server01 drbddisk::r0 Filesystem::/dev/drbd0::/data::ext3 nfs-kernel-server

(OBSERVAÇÃO: para o server02, no arquivo haresources, você deve ter notado que usei o mesmo nome de host, ou seja, server01. Isso é para garantir que quando o server01 estiver disponível online, o server02 devolverá o controle a ele e ele se tornará secundário. Por favor, faça a alteração do nome de host acima para server02, se você quiser que ele permaneça como primário.)

Depois de ter feito tudo isso, dê esses comandos para inicializar o meta-disco do drbd (no server01 e server02):

server01# drbdadm create-md r0 

( r0 este é o nome do recurso.)

server01# drbdadm up all

Faça um

cat /proc/drbd 

no server01 e server02 e você verá que tanto o server01 quanto o server02 estão em Modo Secundário e eles estão inconsistentes. Isso é bastante óbvio, porque ainda não configuramos o sistema nfs e não definimos qual sistema será o servidor primário. No meu caso, é o server01. Então, darei os seguintes comandos no server01:

server01# drbdsetup /dev/drbd0 primary -o
server01# mkfs.ext3 /dev/drbd0
server01# mkdir /data
server01# mount -t ext3 /dev/drbd0 /data

Por padrão, o servidor nfs armazena seu estado de montagem e bloqueios em /var/lib/nfs e queremos que isso seja mantido em caso de failover. Então faça isso no server01:

server01# mv /var/lib/nfs/ /data/
server01# ln -s /data/nfs/ /var/lib/nfs
server01# mkdir /data/export
server01# umount /data
server01# cat /proc/drbd  

<— Veja com atenção e você notará que o server01 é o sistema primário agora.

Emita esses comandos no server02, para prepará-lo para assumir em caso de falha.

mkdir /data
rm -fr /var/lib/nfs
ln -s /data/nfs /var/lib/nfs

Hmm… isso é praticamente tudo. Você está feito do ponto de vista da configuração. Agora vá em frente e ligue seus sistemas.

Passo 5. Iniciando seu sistema

Inicie os serviços necessários no server01 e server02:

/etc/init.d/drbd start
/etc/init.d/heartbeat start

Após a conclusão bem-sucedida do acima, você notará que o server01 terá um IP adicional - 192.168.1.100 e /data está montado. Você também pode verificar o arquivo /proc/drbd para status em tempo real.

No server02, você não deve ver 192.168.1.100 e /data.

tail -f /var/log/messages

e assista a diversão.

Passo 6. Testando para ter certeza de que realmente funciona

A melhor maneira de testá-lo é fazê-lo da maneira real e difícil. Apenas desligue o server01 e veja como o server02 assume. Assista aos logs de takeover no server02. :)

Share: X/Twitter LinkedIn

Receba novas postagens na sua caixa de entrada

Sem spam. Cancele a assinatura a qualquer momento.