¿Estrategia de respaldo simple para instancias / volúmenes de Amazon EC2?

13

Ha introducido copias de seguridad introductorias para las imágenes de Windows 010 respaldadas por EBS de Amazon EC2 ...

He estado explorando mis cerebros para encontrar una estrategia de copia de seguridad simple para nuestro único servidor de Windows 2008 que ejecuta SharePoint Services. Esta es una imagen respaldada por EBS de un servidor con un volumen de datos. No necesito nada exótico. Solo necesito una copia de seguridad "diaria" (perder datos de un día no es catastrófico).

Hemos creado y guardado una imagen AMI respaldada por EBS (Windows 2008) con la que nos sentimos cómodos. Comenzamos haciendo copias de seguridad simplemente creando una nueva imagen EBS AMI. Esto es realmente simple, pero el servidor en ejecución se desconecta durante los primeros 10-15 minutos de la creación de la imagen, lo que no es ideal.

Parece que la forma estándar de crear copias de seguridad es crear instantáneas de volúmenes adjuntos a una instancia en ejecución. Nuevamente, es bastante simple y el servidor sigue siendo utilizable durante la generación de instantáneas. El aparente Catch-22 es que no puedes simplemente lanzar una nueva instancia directamente desde una instantánea.

Sé cómo agrupar una instancia en ejecución en el almacenamiento S3 y luego registrar el AMI desde el depósito S3. Esto me permite capturar una copia de seguridad de una instancia en ejecución y, si la instancia en ejecución se pierde, registrar el AMI del bucket de S3 e iniciar el nuevo AMI para recuperar la instancia, pero esto parece realmente complicado y parece ridículo tener que haga juegos malabares entre la consola de AWS y el complemento S3 Organizer para que Firefox lo logre. (No mencione el enfoque de la línea de comandos, este es un curso de nivel 010).

Al jugar con imágenes respaldadas por EBS, el siguiente enfoque parece funcionar para mí (todo hecho dentro de la consola de AWS):

1.Para sus copias de seguridad, simplemente tome una instantánea del volumen del sistema (/ dev / sda1) según sea necesario. 2. Si pierde su instancia en ejecución, haga lo siguiente: a. Cree un nuevo volumen desde su última copia de seguridad de instantánea b. Inicie otra instancia de su AMI inicial (debe estar respaldada por EBS) c. Detenga esta instancia. d. Desconecte el volumen del sistema existente de la nueva instancia detenida y deséchelo. e. Adjunte el volumen recién creado como volumen del sistema (/ dev / sda1) a la instancia detenida. f. Reinicie la nueva instancia. He probado esto un par de veces y parece funcionar para mí.

Pregunta: ¿Hay algo malo con este enfoque?

John Miner
fuente

Respuestas:

9

Su enfoque suena muy bien, pero puedo pensar en una posible forma de mejorarlo.

Para reducir el impacto de la pérdida de datos desde la última copia de seguridad y la falla del volumen EBS (poco probable, pero aún posible), puede almacenar sus datos en un volumen EBS separado que los archivos de su sistema, y ​​hacer una copia de seguridad del volumen de datos con más frecuencia que el volumen del sistema .

Con su estrategia actual, perderá todos los datos que se crearon entre el momento de la última copia de seguridad y el momento en que falló su instancia. Con el nuevo enfoque, el volumen de datos se escribirá hasta el fallo de la instancia, por lo que puede volver a conectarlo a su nueva instancia una vez que esté en funcionamiento.

gareth_bowles
fuente
Excelente punto
John Miner
4

Genero una instantánea para cada volumen en mi cuenta usando un script bash

#!/bin/bash

ec2-describe-volumes | awk '{ print $2 }' | sort -u >  /tmp/ebs_volumes

for i in $(cat /tmp/ebs_volumes); do
   echo $i;
   ec2-create-snapshot $i;
done
N Abramson
fuente
3
¿Cómo podas instantáneas antiguas?
rmalayter 01 de
1
+1 por inspiración. (Escribí algunos scripts para propósitos similares: serverfault.com/questions/275245/… )
Jonik
0

Aquí hay un script que creará una copia de seguridad de AMI para todas las instancias ec2 dentro de su VPC

#!/bin/bash
#Script to Automate AMI backup

echo "----------------------------------\n   `date`   \n----------------------------------"

aws ec2 describe-instances --filters Name=vpc-id,Values=vpc-xxx |   awk '{ print $8 }' | sort -n   | grep  "i-" > /tmp/instanceid.txt

echo "Starting the Daily AMI creation: "

 #To create AMI from instance-id 

for i in $(cat /tmp/instanceid.txt); do
        echo "Creating AMI for Instance id $i ......."


echo "instance-`date +%d%b%y`-$i" > /tmp/aminame.txt

aws ec2 create-image --instance-id $i --name "`cat /tmp/aminame.txt`" --description "This is created by ami-backup.sh" --no-reboot | grep -ir ami | awk '{print $4}' > /tmp/amiID.txt

echo  "AMI Name is: `cat /tmp/aminame.txt`\n"

done

echo done
Ashish Karpe
fuente