Servidor NFS · 3 min read · Nov 18, 2025
Configurando Um Servidor NFS Altamente Disponível - Página 4
8 Instalar E Configurar heartbeat
heartbeat é a instância de controle de toda essa configuração. Ele será instalado em server1 e server2, e monitora o outro servidor. Por exemplo, se server1 falhar, heartbeat em server2 detecta isso e faz com que server2 assuma. heartbeat também inicia e para o servidor NFS em ambos server1 e server2. Ele também fornece NFS como um serviço virtual através do endereço IP 192.168.0.174 para que os nós do cluster do servidor web vejam apenas um servidor NFS.
Primeiro, instalamos heartbeat:
server1/server2:apt-get install heartbeat
Agora precisamos criar três arquivos de configuração para heartbeat. Eles devem ser idênticos em server1 e server2!
server1/server2:/etc/heartbeat/ha.cf:
| logfacility local0 keepalive 2 #deadtime 30 # USE THIS!!! deadtime 10 bcast eth0 node server1 server2 |
Como nomes de nó, devemos usar a saída de uname -n em server1 e server2.
server1/server2:/etc/heartbeat/haresources:
| server1 IPaddr::192.168.0.174/24/eth0 drbddisk::r0 Filesystem::/dev/drbd0::/data::ext3 nfs-kernel-server |
A primeira palavra é a saída de uname -n em server1, não importa se você criar o arquivo em server1 ou server2! Após IPaddr colocamos nosso endereço IP virtual 192.168.0.174, e após drbddisk usamos o nome do recurso do nosso recurso DRBD que é r0 aqui (lembre-se, esse é o nome do recurso que usamos em /etc/drbd.conf - se você usar outro, deve usá-lo aqui também).
server1/server2:/etc/heartbeat/authkeys:
| auth 3 3 md5 somerandomstring |
somerandomstring é uma senha que os dois daemons heartbeat em server1 e server2 usam para se autenticar um contra o outro. Use sua própria string aqui. Você tem a escolha entre três mecanismos de autenticação. Eu uso md5 pois é o mais seguro.
/etc/heartbeat/authkeys deve ser legível apenas pelo root, portanto fazemos isso:
server1/server2:chmod 600 /etc/heartbeat/authkeys
Finalmente, iniciamos o DRBD e heartbeat em server1 e server2:
server1/server2:/etc/init.d/drbd start
/etc/init.d/heartbeat start
9 Primeiros Testes
Agora podemos fazer nossos primeiros testes. Em server1, execute
server1:ifconfig
Na saída, o endereço IP virtual 192.168.0.174 deve aparecer:
| eth0 Link encap:Ethernet HWaddr 00:0C:29:A1:C5:9B inet addr:192.168.0.172 Bcast:192.168.0.255 Mask:255.255.255.0 inet6 addr: fe80::20c:29ff:fea1:c59b/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:18992 errors:0 dropped:0 overruns:0 frame:0 TX packets:24816 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:2735887 (2.6 MiB) TX bytes:28119087 (26.8 MiB) Interrupt:177 Base address:0x1400 eth0:0 Link encap:Ethernet HWaddr 00:0C:29:A1:C5:9B inet addr:192.168.0.174 Bcast:192.168.0.255 Mask:255.255.255.0 UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 Interrupt:177 Base address:0x1400 lo Link encap:Local Loopback inet addr:127.0.0.1 Mask:255.0.0.0 inet6 addr: ::1/128 Scope:Host UP LOOPBACK RUNNING MTU:16436 Metric:1 RX packets:71 errors:0 dropped:0 overruns:0 frame:0 TX packets:71 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:5178 (5.0 KiB) TX bytes:5178 (5.0 KiB) |
Além disso, execute
server1:df -h
em server1. Você deve ver /data listado lá agora:
| Filesystem Size Used Avail Use% Mounted on /dev/sda5 4.6G 430M 4.0G 10% / tmpfs 126M 0 126M 0% /dev/shm /dev/sda1 89M 11M 74M 13% /boot /dev/drbd0 24G 33M 23G 1% /data |
Se você fizer o mesmo
server2:ifconfig
df -h
em server2, você não deve ver 192.168.0.174 e /data.
Agora criamos um arquivo de teste em /data/export em server1 e então simulamos uma falha do servidor de server1 (parando heartbeat):
server1:touch /data/export/test1
/etc/init.d/heartbeat stop
Se você executar ifconfig e df -h em server2 agora, você deve ver o endereço IP 192.168.0.174 e a partição /data, e
server2:ls -l /data/export
deverá listar o arquivo test1 que você criou em server1 antes. Então, ele foi espelhado para server2!
Agora criamos outro arquivo de teste em server2 e vemos se ele é espelhado para server1 quando ele voltar:
server2:touch /data/export/test2
server1:/etc/init.d/heartbeat start
(espere alguns segundos.)
ifconfig
df -h
ls -l /data/export
Você deve ver 192.168.0.174 e /data novamente em server1, o que significa que ele assumiu novamente (porque o definimos como primário), e você também deve ver o arquivo /data/export/test2!
Receba novas postagens na sua caixa de entrada
Sem spam. Cancele a assinatura a qualquer momento.