Usando tar y rsync para alta disponibilidad

13

Tengo servidores en la nube Ubuntu ejecutándose a los que no tengo acceso directo pero con ssh. Estoy usando 'tar' para clonar o tener alta disponibilidad de este servidor. Seguí el tutorial desde el enlace [texto del enlace] [1]. Intenté esto instalando un nuevo servidor de la misma versión. Cuando extraje el tar (tar -xvpzf ~ / clone.tgz -C /) en el destino (nuevo), al final termina con el siguiente resultado similar al siguiente (no sé si es un error).

tar: var/run: time stamp 2010-11-09 17:09:11 is 7335.159880406 s in the future
tar: var/spool/postfix/usr/lib/zoneinfo: time stamp 2010-11-09 17:08:26 is 7290.159730037 s in the future
tar: var/lib: time stamp 2010-11-09 17:27:51 is 8455.159349527 s in the future
tar: usr/bin: time stamp 2010-11-09 17:28:02 is 8466.159254097 s in the future
tar: usr/share/sgml: time stamp 2010-11-09 17:27:47 is 8451.158909506 s in the future
tar: usr/share/man/man7: time stamp 2010-11-09 17:27:50 is 8454.158393583 s in the future
tar: usr/share/man/man1: time stamp 2010-11-09 17:28:02 is 8466.158166556 s in the future
tar: usr/share/man/man8: time stamp 2010-11-09 17:27:51 is 8455.158057701 s in the  future
tar: usr/share/omf/time-admin: time stamp 2010-11-09 17:27:52 is 8456.157830449 s in the future
---------------------------------------------
---------------------------------------------
---------------------------------------------

Estoy usando el siguiente comando para crear un archivo tar de los directorios especificados en el sistema de origen.

tar -cvzf ~/clone.tgz --exclude ~/clone.tgz --exclude /etc/hosts --exclude /etc/hostname --exclude /etc/udev/ --exclude /etc/network/interfaces --exclude /etc/resolv.conf  /etc /home /opt /tmp /usr /var /mnt
  • ¿Hay alguna precaución antes de usar alquitrán? (el tar es una creación única a partir de entonces estaré usando rsync)
  • ¿Debo incluir más directorios como bin o lib? - sugiereme
  • ¿Debo excluir cualquier directorio? Como si tuviera un problema de dispositivo de red (eth0) (no se pudo iniciar eth0). Entonces, en el comando anterior, he excluido "/ etc / udev /" y después de esto sentí que estaba bien. De esta manera, ¿hay algo que deba excluir de / etc / o de cualquier directorio que haya incluido? - sugiereme.
  • ¿Cómo puedo programar rsync (incremental bkp) con combinación ssh para sincronizar los directorios (especificados en tar) a la ubicación remota (por ejemplo / mnt / newdir) que podría tar y extraer más tarde en caso de falla del sistema? Rsync puede programarse para ejecutarse como usuario root, pero ssh le pedirá la contraseña. Para su información, sudo está completamente deshabilitado y también se deshabilita el inicio de sesión ssh directo a la raíz.

Si hay alguna manera mejor sin ningún daño al servidor para lograr esto, puede sugerir.

[1]: http://ubuntuforums.org/showthread.php ? t = 525660

usuario3215
fuente

Respuestas:

9

En su lugar, le recomendaría usar rsync, ya que le permitirá realizar una sincronización real de sistema a sistema sin la necesidad de archivos temporales. También proporciona el beneficio de realizar actualizaciones incrementales cuando necesita actualizar el clon.

Solo excluiría: / proc / / sys / dev / tmp / mnt En el sistema de clonación, deberá asegurarse de que / etc / fstab y /boot/grub/grub.cfg estén actualizados con los UUID de las particiones de los sistemas de clonación.

Si tiene una base de datos como mysql, deberá tener cuidado y detener la base de datos antes de realizar la copia.

João Pinto
fuente
sí, bien recordado, creo que tendré que excluir '/ etc / fstab' y '/boot/gru/grub.cfg'. ¿Es esto bueno?. Coloque los comandos para la sincronización incremental rsync de los directorios especificados.
user3215
Por supuesto /boot/grub/grub.cfg no está incluido en absoluto
user3215
¿Cómo actualizo los UUID del sistema de clonación?
user3215
Deberá reemplazar los UUID de las particiones originales en la configuración de fstab y grub con los UUID de las particiones del sistema de clonación. Puede enumerar los identificadores de particiones con: blkid.
João Pinto
Quiere decir que los UUID deben ser los mismos en ambos sistemas.
user3215
6

En primer lugar, muchos de los proveedores de nube de IaaS ofrecen potentes capacidades de instantáneas que resuelven esto con bastante facilidad.

En EC2, si ejecuta un sistema basado en EBS, puede capturarlo periódicamente. Si algo horrible le sucede a la instancia de origen, puede retroceder a la instantánea anterior en una nueva instancia. Si desea archivar una instantánea, puede iniciar otra instancia con ella adjunta y usar algo como tar + s3 sin afectar negativamente el cuadro de producción.

Hay una serie de problemas con este enfoque que pueden no ser evidentes en este momento.

  1. Te estás encerrando en una sola tecnología. Si esto funciona en Ubuntu 10.10 y desea ir a 11.04, debe actualizar el sistema de origen y luego volver a tomar una instantánea. Del mismo modo, si utiliza las instantáneas EBS de EC2, necesita una nueva solución si va a la nube de espacio en rack.
  2. No tiene historial de cambios si usa rsync. Si modifica algo en el sistema 1, entonces algo se rompe, es probable que también rompa su sistema de respaldo cuando realice la sincronización.
  3. Rsync puede tener un impacto extremadamente alto en su sistema de producción.

Lo que realmente desea es un sistema de administración de configuración y alta disponibilidad de datos.

Te recomiendo que elijas un sistema de gestión de configuración, como puppet (¡en main!), Chef o cfengine. Comience a hacer toda su configuración en el sistema de administración de configuración, y luego puede iniciar un sistema genérico y aplicarle la administración de configuración. Agregue 'etckeeper' y tendrá historia.

Para obtener una alta disponibilidad de datos, rsync debería funcionar y ser mucho más sencillo, ya que puede copiar los datos que desee. También hay drbd para tener lo que equivale a una "red RAID1". Estos no son reemplazos para las copias de seguridad de datos, que deben incluir instantáneas históricas (ya sea a través de instantáneas de dispositivos de bloque o algo así como tar) en lugar de sincronizarse con un host de recuperación (¿y si alguien elimina todos los datos que se envían al cuadro de recuperación, eliminándolos todos? ¿ahí también?)

SpamapS
fuente
2

Los mensajes probablemente se deben a que el nuevo reloj del servidor está retrasado en el tiempo que el anterior.

Si está clonando la configuración y la base de datos del administrador de paquetes (y lo está haciendo), debe clonar / bin, / sbin y / lib o el sistema de destino estará en un estado inconsistente. Otro enfoque será excluir /etc/dpkg.info / etc / apt / var / lib / apt y / var / lib / dpkg y reinstalar todos los paquetes en el sistema de destino.

Los archivos en / var / dpkg y / var / apt contienen información sobre lo que está instalado en su sistema. Si no los excluye, el administrador de paquetes creerá que todos los programas y dependencias del sistema principal están instalados en el destino. Pero si no copió / bin, / sbin, etc ... no lo harán. Es muy probable que algo se rompa en la próxima instalación o actualización.

Para mantenerlo sincronizado con rsync, siempre he usado autenticación certificada, no contraseñas. Es bastante fácil de configurar, recuerdo que lo hice solo leyendo la página del manual la primera vez. Aquí hay una guía rápida , si desea más información, creo que merece una nueva pregunta.

Javier Rivera
fuente
No. / var no está excluido. En el comando anterior después de "--exclude /etc/resolv.conf" todo está incluido en /etc/..../var / mnt. En realidad, he especificado dos espacios entre resolv.conf y / etc. Aquí no se muestra.
user3215
lo siento, olvidé la parte del enlace
user3215
Ok, entonces incluso debería incluir bin, sbin y lib, está bien aquí. Oh ... tengo que excluirlos e instalar todos los paquetes.
user3215
¿Es realmente necesario excluir /etc/dpkg.info / etc / apt / var / lib / apt y / var / lib / dpkg ..?
user3215
Respuesta actualizada
Javier Rivera