1. Introducción al Servicio NFS
El Sistema de Archivos de Red (NFS) es un protocolo utilizado en sistemas Linux para compartir archivos entre diferentes máquinas. El cliente principal del NFS es Linux. No cuenta con un mecanismo de autenticación de usuarios y los datos se transmiten en texto plano, por lo que generalmente solo es adecuado para redes locales.
Componentes:
- RPC (Protocolo de Llamadas Remotas): Es un protocolo que permite solicitar servicios remotos sin necesidad de conocer las tecnologías de red subyacentes.
- rpcbind: Se encarga de la transmisión de datos y las llamadas remotas.
- nfs-utils: Cotnrola qué archivos se comparten y gestiona las permisos.
2. Paquetes Relevantes para el Servicio NFS
- nfs-utils-1.2.3-26.el6.x86_64: Herramientas de control del servicio NFS (servidor y cliente).
- nfs4-acl-tools-0.3.3-6.el6.x86_64: Herramientas de control de ACLs.
- nfs-utils-lib-1.1.5-4.el6.x86_64: Bibliotecas del sistema para NFS.
3. Archivo de Configuración
El archivo /etc/exports define qué directorios se compartirán y cómo.
| Directorio | Opciones |
|---|---|
/nfs/share |
* (ro,sync) |
Las opciones incluyen:
ro: Solo lectura.rw: Lectura y escritura.sync: Sincronización síncrona.async: Sincronización asíncrona.anonuid: Establece el UID del usuario que accede al servicio NFS.root_squash: Cambia el propietario del archivo creado por el usuario root al valor denfsnobody.no_root_squash: Permite que el usuario root conserve su identidad en el servidor.all_squash: Todos los usuarios tienen el mismo propietario (nfsnobody).
4. Implementación de Tareas
Contexto de la Tarea
Se necesita migrar los recursos estáticos de un servidor web a una máquina dedicada como servidor de archivos.
Requisitos de la Tarea
- Instalar Apache en el servidor web (
web-server) y almacenar los recursos estáticos en un servidor NFS (nfs-server). - Realizar una copia de seguridad en tiempo real de los recursos estáticos almacenados en el servidor NFS usando
inotifyyrsync.
Solución de la Tarea
1. Preparación del Entorno
Se requieren dos máquinas con acceso a fuentes YUM (una fuente de red y una de EPEL).
web-server: 192.168.1.13nfs-server: 192.168.1.14
2. Paso a Paso
Primera Etapa: Configuración del Servicio NFS
- Detener el firewall y SELinux.
[root@nfs-server ~]# systemctl stop firewalld
[root@nfs-server ~]# setenforce 0
- Instalar los paquetes necesarios.
[root@nfs-server ~]# yum -y install rpcbind nfs-utils
- Editar el archivo de configuración
/etc/exports.
[root@nfs-server ~]# vim /etc/exports
- Iniciar los servicios.
[root@nfs-server ~]# service rpcbind start
[root@nfs-server ~]# systemctl start nfs
- Verificar los puertos ocupados.
[root@nfs-server ~]# netstat -lnput | grep 111
- Confirmar que el servicio NFS esté funcionando correctamente.
Segunda Etapa: Configuración del Servicio Web
- Detener el firewall y SELinux.
[root@web-server ~]# systemctl stop firewalld
[root@web-server ~]# setenforce 0
- Descomprimir e instalar Nginx y sus dependencias.
[root@web-server ~]# tar -zxvf nginx-1.22.1.tar.gz
[root@web-server ~]# cd nginx-1.22.1
[root@web-server nginx-1.22.1]# ./configure
[root@web-server nginx-1.22.1]# make && make install
[root@web-server ~]# yum -y install rpcbind nfs-utils
- Modificar el archivo
index.htmlde Nginx y crear un directorio para montar el recurso compartido.
[root@web-server ~]# vim /usr/share/nginx/html/index.html
[root@web-server ~]# mkdir /usr/share/nginx/html/static
[root@web-server ~]# mount -t nfs 192.168.1.14:/share /usr/share/nginx/html/static
[root@web-server ~]# /usr/local/nginx/sbin/nginx
Tercera Etapa: Copia de Seguridad Automática
- Crear una máquina virtual de respaldo (
backuphost). - Detener SELinux y el firewall.
[root@nfs-server ~]# systemctl stop firewalld
[root@nfs-server ~]# setenforce 0
- Instalar
rsyncen ambas máquinas (nfs-serverybackuphost).
[root@nfs-server ~]# yum -y install rsync
- En el servidor NFS, instalar
inotify-toolspara monitorear cambios en el directorio/share.
[root@nfs-server ~]# tar xf inotify-tools-3.13.tar.gz
[root@nfs-server ~]# cd inotify-tools-3.13
[root@nfs-server inotify-tools-3.13]# ./configure
[root@nfs-server inotify-tools-3.13]# make
[root@nfs-server inotify-tools-3.13]# make install
- Sincronizar inicialmente el contenido de
/sharecon el directorio/backupenbackuphost. - Configurar SSH para evitar la entrada de contraseña durante la sincronización.
[root@nfs-server ~]# ssh-keygen
[root@nfs-server ~]# ssh-copy-id -i id_rsa.pub root@192.168.1.14
- Crear el directorio
/backupenbackuphost.
[root@backup ~]# mkdir /backup
- Crear el script
rsync.shen el servidor NFS para monitorear cambios y sincronizar automáticamente.
[root@nfs-server ~]# vim rsync.sh
#!/bin/bash
/usr/local/bin/inotifywait -mrq -e modify,delete,create,attrib,move /share | while read events; do
rsync -a --delete /share root@192.168.1.14:/backup/
echo "`date +%F\ %T` apareció evento $events" >> /var/log/rsync.log 2>&1
done
- Dar permiso de ejecución al script.
[root@nfs-server ~]# chmod +x rsync.sh
- Probar la funcionalidad.
Cambiar archivos en /share desde el servidor NFS y verificar si se sincronizan correctamente en backuphost.