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 ntpdateExecute 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 updateserver01# 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-sourceIsso realizará uma compilação e fará o módulo do kernel drbd.
server01# modprobe drbdserver01# 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 removeserver01# update-rc.d -f nfs-common removeExecute 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 server02Configurar a autenticação do heartbeat - /etc/heartbeat/authkeys - (no server01 e server02):
auth 3
3 md5 sua_senhaEm 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 allFaç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 -oserver01# mkfs.ext3 /dev/drbd0server01# mkdir /dataserver01# mount -t ext3 /dev/drbd0 /dataPor 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/nfsserver01# mkdir /data/exportserver01# umount /dataserver01# 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 /datarm -fr /var/lib/nfsln -s /data/nfs /var/lib/nfsHmm… 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 startApó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/messagese 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. :)
Receba novas postagens na sua caixa de entrada
Sem spam. Cancele a assinatura a qualquer momento.