Servidor NFS · 3 min read · Nov 18, 2025

Configuración de un servidor NFS altamente disponible - Página 4

8 Instalar y configurar heartbeat

heartbeat es la instancia de control de toda esta configuración. Se va a instalar en server1 y server2, y monitorea el otro servidor. Por ejemplo, si server1 falla, heartbeat en server2 detecta esto y hace que server2 tome el control. heartbeat también inicia y detiene el servidor NFS en ambos server1 y server2. También proporciona NFS como un servicio virtual a través de la dirección IP 192.168.0.174 para que los nodos del clúster del servidor web vean solo un servidor NFS.

Primero instalamos heartbeat:

server1/server2:

apt-get install heartbeat

Ahora tenemos que crear tres archivos de configuración para heartbeat. ¡Deben ser idénticos en server1 y server2!

server1/server2:

/etc/heartbeat/ha.cf:

| logfacility local0 keepalive 2 #deadtime 30 # ¡USA ESTO!!! deadtime 10 bcast eth0 node server1 server2 |

Como nombres de nodo debemos usar la salida de uname -n en server1 y server2.

server1/server2:

/etc/heartbeat/haresources:

| server1 IPaddr::192.168.0.174/24/eth0 drbddisk::r0 Filesystem::/dev/drbd0::/data::ext3 nfs-kernel-server |

La primera palabra es la salida de uname -n en server1, ¡sin importar si creas el archivo en server1 o server2! Después de IPaddr ponemos nuestra dirección IP virtual 192.168.0.174, y después de drbddisk usamos el nombre del recurso de nuestro recurso DRBD que es r0 aquí (recuerda, ese es el nombre del recurso que usamos en /etc/drbd.conf - si usas otro, debes usarlo aquí también).

server1/server2:

/etc/heartbeat/authkeys:

| auth 3 3 md5 somerandomstring |

somerandomstring es una contraseña que los dos demonios de heartbeat en server1 y server2 usan para autenticarse entre sí. Usa tu propia cadena aquí. Tienes la opción entre tres mecanismos de autenticación. Yo uso md5 ya que es el más seguro.

/etc/heartbeat/authkeys debe ser legible solo por root, por lo tanto hacemos esto:

server1/server2:

chmod 600 /etc/heartbeat/authkeys

Finalmente, iniciamos DRBD y heartbeat en server1 y server2:

server1/server2:

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

9 Primeras pruebas

Ahora podemos hacer nuestras primeras pruebas. En server1, ejecuta

server1:

ifconfig

En la salida, la dirección IP virtual 192.168.0.174 debería 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) |

Además, ejecuta

server1:

df -h

en server1. Ahora deberías ver /data listado allí:

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

Si haces lo mismo

server2:

ifconfig
df -h

en server2, no deberías ver 192.168.0.174 y /data.

Ahora creamos un archivo de prueba en /data/export en server1 y luego simulamos una falla del servidor de server1 (deteniendo heartbeat):

server1:

touch /data/export/test1
/etc/init.d/heartbeat stop

Si ejecutas ifconfig y df -h en server2 ahora, deberías ver la dirección IP 192.168.0.174 y la partición /data, y

server2:

ls -l /data/export

debe listar el archivo test1 que creaste en server1 antes. ¡Así que ha sido reflejado en server2!

Ahora creamos otro archivo de prueba en server2 y vemos si se refleja en server1 cuando vuelva a encenderse:

server2:

touch /data/export/test2

server1:

/etc/init.d/heartbeat start

(Espera unos segundos.)

ifconfig
df -h
ls -l /data/export

Deberías ver 192.168.0.174 y /data nuevamente en server1, lo que significa que ha tomado el control nuevamente (porque lo definimos como primario), y también deberías ver el archivo /data/export/test2!

Share: X/Twitter LinkedIn

Recibe nuevas publicaciones en tu bandeja de entrada.

No spam. Cancela la suscripción en cualquier momento.