Servidor NFS · 7 min read · Jan 30, 2026
Servidor NFS Altamente Disponible Usando DRBD Y Heartbeat En Debian 5.0 (Lenny)
Servidor NFS Altamente Disponible Usando DRBD Y Heartbeat En Debian 5.0 (Lenny)
Este HowTo explica cómo configuré un servidor NFS altamente disponible usando Debian 5 (Lenny) y drbd8 con heartbeat.
Hice esta configuración hace unos días. Solo por diversión. Así que pensé que era una buena idea documentar esto.
Autor - Vishal Sharma
Creado - 9 de marzo de 2010
Versión - 1.0
Descargo de responsabilidad - Este HowTo se proporciona tal cual y no viene con ninguna garantía de ningún tipo. Úselo bajo su propio riesgo. Estos pasos funcionaron para mí. Así que probablemente, también deberían funcionar para usted. En caso de que se encuentre con algún problema, no dude en dejar sus comentarios a continuación. Intentaré abordarlos tan pronto como pueda.
Aquí hay un resumen de lo que necesita hacer:
Paso 1. Haga la preparación de su sistema. Esto implica configurar su hardware y software básicos. (Esto no se cubre como parte de este HowTo.)
Paso 2. Configure las direcciones IP necesarias.
Paso 3. Instale los paquetes necesarios.
Paso 4. Edite los archivos de configuración relevantes.
Paso 5. Inicie su sistema.
Paso 6. Pruébelo para asegurarse de que realmente funcione.
PASO 1. Haciendo la Preparación de su Sistema
Estoy usando 3 sistemas Debian para esto. Todos ellos son una instalación estándar por defecto. Sin embargo, hice un cambio para iniciar mi sistema en modo texto. Dado que no tengo un hardware tan bueno en mi máquina, prefiero jugar con la línea de comandos.
Cada sistema tiene una red integrada. Por lo general, en sistemas de producción, este podría no ser el caso. Pero dado que el mío es solo una instalación para experimentar, no me preocupé por agregar cosas que mejorarían el rendimiento.
Si no desea dedicar una máquina, siempre puede usar Sun VirtualBox para esto y tener su configuración. Es mucho más fácil de esta manera, ya que le ofrece el beneficio de tomar instantáneas del sistema antes de realizar cambios de configuración significativos.
Mi configuración de prueba aquí se basa en 2 servidores y un cliente. En mi escenario, este sistema cliente es solo un cliente NFS normal montando recursos compartidos desde el servidor NFS. Mi configuración aquí es Activo/Pasivo y NO Activo/Activo. Así que en cualquier momento dado, si su sistema activo falla, el sistema pasivo tomará el control.
En server01 y server02, tengo 2 particiones, a saber:
/dev/hdb1 - 500GB - que se montará como /data.
/dev/hdc1 - 500MB - esto almacenará los metadatos de drbd. Necesita un mínimo de 128MB.
Asegúrese de no montar ninguna de estas particiones. Esto será manejado por drbd. Asegúrese de solo crear las particiones y dejarlas tal como están. Sin formato, sin montajes por ahora.
PASO 2. Configurar las direcciones IP necesarias
Aquí está cómo he nombrado mis sistemas:
server01 - 192.168.1.2/24 (eth0)
server02 - 192.168.1.3/24 (eth0)
client01 - 192.168.1.4/24 (eth0)
Asegúrese de tener las entradas anteriores en su archivo /etc/hosts para que la resolución de nombres no sea un problema. Esta es probablemente la mejor opción y no querría entrar en el lío de configurar un servidor DNS para esto.
192.168.1.5/24 sería mi dirección IP flotante virtual. Esta es la dirección que será vista por el mundo exterior y flotará de sistema a sistema a medida que su estado cambie.
Mi puerta de enlace predeterminada es 192.168.1.1/24, que es mi enrutador. Necesitaría acceso a Internet para instalar paquetes.
Paso 3. Instalar los paquetes necesarios
Lo más importante para que el clúster HA funcione bien es - LA HORA. La hora en los sistemas debe ser la misma. Para asegurarse de eso, asegúrese de tener los paquetes ntp en su lugar.
server01# apt-get install ntp ntpdateRealice lo anterior en server01 y server02.
En los servidores, es decir, server01 y server02, necesitaría los siguientes paquetes instalados para comenzar a funcionar.
drbd8, archivos de encabezado del kernel, instalación del servidor nfs y heartbeat. Así que aquí está lo que he hecho.
server01# apt-get updateserver01# apt-get install linux-headers-`uname -r` drbd8-utils drbd8-source heartbeat nfs-kernel-server(Lo anterior debería tardar un tiempo en completarse.)
Después de que la instalación se complete, haga el módulo del kernel drbd usando el siguiente comando:
server01# m-a a-i drbd8-sourceEsto realizará una compilación y hará el módulo del kernel drbd.
server01# modprobe drbdserver01# lsmod | grep drbd(Esto debería mostrarle algo, si esto no le da nada, entonces hay algún problema en algún lugar que necesita ser solucionado.)
Desactive nfs para que no se inicie al arrancar. Esto se hace porque el inicio y la detención de nfs son manejados por drbd y no queremos que el sistema interfiera.
server01# update-rc.d -f nfs-kernel-server removeserver01# update-rc.d -f nfs-common removeRealice los mismos pasos en server02 también.
Paso 4. Crear / Editar los archivos de configuración relevantes
Estos son los archivos que necesita editar en server01 y server02.
Para manejar las exportaciones de NFS - /etc/exports - (en server01 y server02):
/data/export 192.168.1.0/255.255.255.0(rw)Para la configuración de drbd - /etc/drbd.conf (en server01 y 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 - (en server01 y server02):
logfacility local0
keepalive 1
deadtime 10
bcast eth1
auto_failback on
node server01 server02Configurar la autenticación de heartbeat - /etc/heartbeat/authkeys - (en server01 y server02):
auth 3
3 md5 your_passwordEn lugar de usar md5, también puede usar sha1. No olvide hacer que este archivo sea solo de lectura/escritura para root.
chmod 600 /etc/heartbeat/authkeys (En server01 y server02.)
Para hacer que el recurso ha esté disponible - /etc/ha.d/haresources - (en server01 y server02):
server01 IPaddr::192.168.1.100
server01 drbddisk::r0 Filesystem::/dev/drbd0::/data::ext3 nfs-kernel-server(NOTA: para server02, en el archivo haresources, debe haber notado que he utilizado el mismo nombre de host, es decir, server01. Esto es para asegurarse de que cuando server01 esté disponible en línea, server02 devolverá el control a él y se convertirá en secundario. Por favor, haga el cambio de nombre de host anterior a server02, si desea que permanezca como primario.)
Después de haber hecho todo lo anterior, dé estos comandos para inicializar el disco meta de drbd (en server01 y server02):
server01# drbdadm create-md r0 ( r0 este es el nombre del recurso.)
server01# drbdadm up allHaga un
cat /proc/drbd en server01 y server02 y verá que tanto server01 como server02 están en Modo Secundario y son inconsistentes. Eso es bastante obvio, porque no hemos configurado el sistema nfs aún y no hemos definido qué sistema será el servidor primario. En mi caso, es server01. Así que daré los siguientes comandos en server01:
server01# drbdsetup /dev/drbd0 primary -oserver01# mkfs.ext3 /dev/drbd0server01# mkdir /dataserver01# mount -t ext3 /dev/drbd0 /dataPor defecto, el servidor nfs almacena su estado de montaje y bloqueos bajo /var/lib/nfs y queremos que esto se mantenga en caso de un failover. Así que haga esto en server01:
server01# mv /var/lib/nfs/ /data/server01# ln -s /data/nfs/ /var/lib/nfsserver01# mkdir /data/exportserver01# umount /dataserver01# cat /proc/drbd <— Mírelo cuidadosamente y notará que server01 es el sistema primario ahora.
Emita estos comandos en server02, para prepararlo para tomar el control en caso de una falla.
mkdir /datarm -fr /var/lib/nfsln -s /data/nfs /var/lib/nfsHmm… eso es prácticamente todo. Ha terminado desde la perspectiva de configuración. Ahora adelante y encienda sus sistemas.
Paso 5. Iniciando su sistema
Inicie los servicios necesarios en server01 y server02:
/etc/init.d/drbd start/etc/init.d/heartbeat startDespués de que lo anterior se complete con éxito, notará que server01 tendrá una IP adicional - 192.168.1.100 y /data está montado. También puede verificar el archivo /proc/drbd para el estado en tiempo real.
En server02 no debería ver 192.168.1.100 y /data.
tail -f /var/log/messagesy observe la diversión.
Paso 6. Probándolo para asegurarse de que realmente funcione
La mejor manera de probarlo es hacerlo de la manera real y difícil. Simplemente apague server01 y vea cómo server02 toma el control. Observe los registros de toma de control en server02. :)
Recibe nuevas publicaciones en tu bandeja de entrada.
No spam. Cancela la suscripción en cualquier momento.