Servicio de Compartición de Archivos mediante NFS

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:

  1. RPC (Protocolo de Llamadas Remotas): Es un protocolo que permite solicitar servicios remotos sin necesidad de conocer las tecnologías de red subyacentes.
  2. rpcbind: Se encarga de la transmisión de datos y las llamadas remotas.
  3. 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 de nfsnobody.
  • 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

  1. Instalar Apache en el servidor web (web-server) y almacenar los recursos estáticos en un servidor NFS (nfs-server).
  2. Realizar una copia de seguridad en tiempo real de los recursos estáticos almacenados en el servidor NFS usando inotify y rsync.

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.13
  • nfs-server: 192.168.1.14
2. Paso a Paso
Primera Etapa: Configuración del Servicio NFS
  1. Detener el firewall y SELinux.
[root@nfs-server ~]# systemctl stop firewalld
[root@nfs-server ~]# setenforce 0

  1. Instalar los paquetes necesarios.
[root@nfs-server ~]# yum -y install rpcbind nfs-utils

  1. Editar el archivo de configuración /etc/exports.
[root@nfs-server ~]# vim /etc/exports

  1. Iniciar los servicios.
[root@nfs-server ~]# service rpcbind start
[root@nfs-server ~]# systemctl start nfs

  1. Verificar los puertos ocupados.
[root@nfs-server ~]# netstat -lnput | grep 111

  1. Confirmar que el servicio NFS esté funcionando correctamente.
Segunda Etapa: Configuración del Servicio Web
  1. Detener el firewall y SELinux.
[root@web-server ~]# systemctl stop firewalld
[root@web-server ~]# setenforce 0

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

  1. Modificar el archivo index.html de 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
  1. Crear una máquina virtual de respaldo (backuphost).
  2. Detener SELinux y el firewall.
[root@nfs-server ~]# systemctl stop firewalld
[root@nfs-server ~]# setenforce 0

  1. Instalar rsync en ambas máquinas (nfs-server y backuphost).
[root@nfs-server ~]# yum -y install rsync

  1. En el servidor NFS, instalar inotify-tools para 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

  1. Sincronizar inicialmente el contenido de /share con el directorio /backup en backuphost.
  2. 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

  1. Crear el directorio /backup en backuphost.
[root@backup ~]# mkdir /backup

  1. Crear el script rsync.sh en 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

  1. Dar permiso de ejecución al script.
[root@nfs-server ~]# chmod +x rsync.sh

  1. Probar la funcionalidad.

Cambiar archivos en /share desde el servidor NFS y verificar si se sincronizan correctamente en backuphost.

Etiquetas: nfs rpcbind nfs-utils inotify rsync

Publicado el 9-30 02:36