Búsqueda de sitios web

Cómo sincronizar dos servidores web/sitios web Apache usando Rsync


Hay tantos tutoriales disponibles en la web para reflejar o realizar una copia de seguridad de sus archivos web con diferentes métodos. Aquí estoy creando este artículo para mi referencia futura y aquí usaré un comando muy simple y versátil de Linux. para crear una copia de seguridad de su sitio web. Este tutorial le ayudará a sincronizar datos entre sus dos servidores web con "Rsync".

El propósito de crear un espejo de su servidor web con Rsync es que si su servidor web principal falla, su servidor de respaldo puede tomar el control para reducir el tiempo de inactividad de su sitio web. Esta forma de crear una copia de seguridad del servidor web es muy buena y efectiva para pequeñas y medianas empresas web.

Ventajas de sincronizar servidores web

Las principales ventajas de crear una copia de seguridad del servidor web con rsync son las siguientes:

  1. Rsync sincroniza solo aquellos bytes y bloques de datos que han cambiado.
  2. Rsync tiene la capacidad de verificar y eliminar aquellos archivos y directorios en el servidor de respaldo que se han eliminado del servidor web principal.
  3. Se encarga de los permisos, las propiedades y los atributos especiales mientras copia datos de forma remota.
  4. También admite el protocolo SSH para transferir datos de forma cifrada, de modo que tenga la seguridad de que todos los datos están seguros.
  5. Rsync utiliza métodos de compresión y descompresión mientras transfiere datos que consumen menos ancho de banda.

Cómo sincronizar dos servidores web Apache

Procedamos a configurar rsync para crear un espejo de su servidor web. Aquí usaré dos servidores.

Servidor principal
  1. Dirección IP: 192.168.0.100
  2. Nombre de host: servidor web.ejemplo.com
Servidor de respaldo
  1. Dirección IP: 192.168.0.101
  2. Nombre de host: copia de seguridad.ejemplo.com

Paso 1: instale la herramienta Rsync

En este caso, los datos del servidor web de webserver.example.com se reflejarán en backup.example.com. Y para hacerlo primero, necesitamos instalar Rsync en ambos servidores con la ayuda del siguiente comando.

[root@tecmint]# yum install rsync        [On Red Hat based systems]
[root@tecmint]# apt-get install rsync    [On Debian based systems]

Paso 2: cree un usuario para ejecutar Rsync

Podemos configurar rsync con el usuario root, pero por razones de seguridad, puede crear un usuario sin privilegios en el servidor web principal, es decir, webserver.example.com para ejecutar rsync.

[root@tecmint]# useradd tecmint
[root@tecmint]# passwd tecmint

Aquí he creado un usuario “tecmint” y le he asignado una contraseña.

Paso 3: Pruebe la configuración de Rsync

Es hora de probar su configuración de rsync en su servidor de respaldo (es decir, backup.example.com) y, para hacerlo, escriba el siguiente comando.

[root@backup www]# rsync -avzhe ssh [email :/var/www/ /var/www
Salida de muestra
[email 's password:

receiving incremental file list
sent 128 bytes  received 32.67K bytes  5.96K bytes/sec
total size is 12.78M  speedup is 389.70

Puede ver que su rsync ahora funciona absolutamente bien y sincroniza datos. He utilizado “/var/www” para transferir; puede cambiar la ubicación de la carpeta según sus necesidades.

Paso 4: Automatizar la sincronización con el inicio de sesión sin contraseña SSH

Ahora hemos terminado con las configuraciones de rsync y ahora es el momento de configurar un cron para rsync. Como vamos a utilizar rsync con el protocolo SSH, ssh solicitará autenticación y si no proporcionamos una contraseña para cron, no funcionará. Para que cron funcione sin problemas, necesitamos configurar inicios de sesión ssh sin contraseña para rsync.

En este ejemplo, lo hago como root para preservar la propiedad de los archivos. También puedes hacerlo para usuarios alternativos.

Primero, generaremos una clave pública y privada con los siguientes comandos en el servidor de copias de seguridad (es decir, backup.example.com).

[root@backup]# ssh-keygen -t rsa -b 2048

Cuando ingrese este comando, no proporcione una frase de contraseña y haga clic en Intro para frase de contraseña vacía para que rsync cron no necesite ninguna contraseña para sincronizar datos.

Salida de muestra
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
9a:33:a9:5d:f4:e1:41:26:57:d0:9a:68:5b:37:9c:23 [email 
The key's randomart image is:
+--[ RSA 2048]----+
|          .o.    |
|           ..    |
|        ..++ .   |
|        o=E *    |
|       .Sooo o   |
|       =.o o     |
|      * . o      |
|     o +         |
|    . .          |
+-----------------+

Ahora, nuestra clave Pública y Privada ha sido generada y tendremos que compartirla con el servidor principal para que el servidor web principal reconozca esta máquina de respaldo y le permita iniciar sesión. sin pedir ninguna contraseña mientras sincroniza datos.

[root@backup html]# ssh-copy-id -i /root/.ssh/id_rsa.pub [email 

Ahora intente iniciar sesión en la máquina, con "ssh '[email '", y registre .ssh/authorized_keys.

[root@backup html]# [email 

Ahora hemos terminado de compartir claves. Para saber más en profundidad sobre el inicio de sesión sin contraseña SSH, puedes leer nuestro artículo al respecto.

  1. Inicio de sesión SSH sin contraseña en 5 sencillos pasos

Paso 5: programe Cron para automatizar la sincronización

Configuremos un cron para esto. Para configurar un cron, abra el archivo crontab con el siguiente comando.

[root@backup ~]# crontab –e

Abrirá el archivo /etc/crontab para editarlo con su editor predeterminado. Aquí, en este ejemplo, estoy escribiendo un cron para ejecutarlo cada 5 minutos para sincronizar los datos.

*/5        *        *        *        *   rsync -avzhe ssh [email :/var/www/ /var/www/

Los comandos cron y rsync anteriores simplemente sincronizan “/var/www/” desde el servidor web principal con un servidor de respaldo en cada 5 minutos. Puede cambiar la configuración de hora y ubicación de la carpeta según sus necesidades. Para ser más creativo y personalizar con el comando Rsync y Cron, puede consultar nuestros artículos más detallados en:

  1. 10 comandos Rsync para sincronizar archivos/carpetas en Linux
  2. 11 ejemplos de programación cron en Linux