Este
material muestra cómo se puede reflejar tu sitio web desde tu servidor web principal a un servidor de copia de seguridad. Usamos la
herramienta rsync para esto, y hacemos que funcione a través de una
tarea de cron que comprueba cada x minutos si hay algo para
actualizar en el espejo. Por lo tanto el servidor de copia de
seguridad por lo general debe estar al día si tiene que actualizar
la información.
Comenzamos
sin más preámbulo a realizar las instalaciones pertinentes. En todo
caso antes cabe mencionar lo siguiente:
El
servicio de transporte o túnel de datos a usar es SSH, sin embargo este
método tiene ventajas y desventajas. Dentro de las ventajas esta,
que es seguro, no es necesario abrir otro puerto ya que el 22 default
es preciso, pero, existe un solo impedimento, para el caso
radicalmente problemático y es el hecho que la comunicación entre
equipos nos pide contraseña de acceso en el equipo cliente y en tal
caso no podemos trasmitir datos automatizados entre equipos.
La
solución es el uso de claves publicas, entonces nuestra
configuración será la siguiente:
Creamos un par de claves (en MOZART servidor de respaldo) una de las cuales se guardan en el sistema remoto (SALIERI cliente).Esto soluciona el problema de petición de clave al correr el rsync y también incluye los trabajos programados de cron, que es exactamente lo que queremos.
La configuracion final quedaria asi:
- Main server: SALIERI(server)- IP address: 192.168.x.x
- Mirror/backup server:MOZART(mirror) – IP adress 192.168.x.
Primero instalamos rsync en ambas maquina:
| apt-get install rsync |
Luego
creamos un usuario sin privilegios en SALIERI llamado por ejemplo
user_rsync, el cual sera utilizado por rsync en MOZART para reflejar
el directorio /var/www (obviamente user_rsync debe tener permisos de
lectura en /var/www en SALIERI):
| useradd -d /home/user_rsync -m -s /bin/bash user_rsync |
Finalmente agregamos la password para user_rsync:
| passwd user_rsync |
Luego probamos la instalacion en MOZART:
| rsync -avz -e ssh user_rsync@192.168.x.x:/var/www/ /var/www/ |
Debiera darnos como resultado algo como esto de no ser asi, hay algun error en el proceso:
| The authenticity of host 'SALIERI (192.168.x.x)' can't be established. RSA key fingerprint is 32:e5:79:8e:5f:5a:25:a9:f1:0d:ef:be:5b:a6:a6:23. Are you sure you want to continue connecting (yes/no)? |
Comprobamos que esten los archivos respaldados:
| ls -la /var/www |
Si ha estado todo ok pasamos al siguiente paso que es la creación de keys para permitir la automatización del proceso programado en cron sin contraseñas o sea sin intervención humana.
Creamos el par de claves privada/publica en MOZART:
| mkdir /root/rsync ssh-keygen -t dsa -b 1024 -f /root/rsync/mirror-rsync-key |
| scp /root/rsync/mirror-rsync-key.pub user_rsync@192.168.x.x:/home/user_rsync/ |
Ahora nos conectamos a través de SSH a SALIERI como user_rsync (no root!) Y hacemos lo siguiente:
| mkdir ~/.ssh chmod 700 ~/.ssh mv ~/mirror-rsync-key.pub ~/.ssh/ cd ~/.ssh touch authorized_keys chmod 600 authorized_keys cat mirror-rsync-key.pub >> authorized_keys |
| ssh-dss AAAAB3NzaC1kc3MAAA[...]lSUom root@ mirror |
| command="/home/user_rsync/rsync/checkrsync",from="SALIERI.localdomain",no-port-forwarding,no-X11-forwarding,no-pty |
Ahora vamos a crear el script / home / user_rsync / rsync / checkrsync que rechaza todos los comandos excepto rsync.
| mkdir ~/rsync vi ~/rsync/checkrsync |
| #!/bin/sh case "$SSH_ORIGINAL_COMMAND" in *\&*) echo "Rejected" ;; *\(*) echo "Rejected" ;; *\{*) echo "Rejected" ;; *\;*) echo "Rejected" ;; *\<*) echo "Rejected" ;; *\`*) echo "Rejected" ;; rsync\ --server*) $SSH_ORIGINAL_COMMAND ;; *) echo "Rejected" ;; esac |
Ahora debemos probar en MOZART si podemos reflejar SALIERI sin que se le pida la contraseña de user_rsync. Hacemos esto:
| rsync -avz --delete --exclude=**/stats --exclude=**/error --exclude=**/files/pictures -e "ssh -i /root/rsync/mirror-rsync-key" user_rsync@192.168.x.x:/var/www/ /var/www/ |
1.1.1 Create A Cron Job
Nuestro objetivo ahora es automatizar completamente el traspaso de informacion entre servidores
pora eso creamos una tarea en cron para que MOZART, la ejecute como root::
| crontab -e |
Deberia quedar asi:
|
* /5 * * * * /usr/bin/rsync -azq --delete --exclude=**/stats --exclude=**/error --exclude=**/files/pictures -e "ssh -i /root/rsync/mirror-rsync-key" user_rsync@SALIERI.localdomain:/var/www/ /var/www/
|
¡¡Suerte!! hasta la proxima.
No hay comentarios:
Publicar un comentario