Stratégie de sauvegarde simple pour les instances / volumes Amazon EC2?

13

Vous avez entré les sauvegardes d'introduction pour les images Windows 010 basées sur Amazon EC2 EBS ...

J'ai parcouru mon cerveau pour trouver une stratégie de sauvegarde simple pour notre serveur Windows 2008 unique exécutant SharePoint Services. Il s'agit d'une image EBS d'un serveur avec un volume de données. Je n'ai besoin de rien d'exotique. Je n'ai besoin que d'une sauvegarde «quotidienne» (perdre une journée de données n'est pas catastrophique).

Nous avons créé et enregistré une image AMI soutenue par EBS (Windows 2008) que nous sommes à l'aise d'utiliser. Nous avons commencé à faire des sauvegardes en créant simplement une nouvelle image EBS AMI. C'est vraiment simple, mais le serveur en cours d'exécution est mis hors ligne pendant les 10 à 15 premières minutes de création de l'image - pas idéal.

La manière standard de créer des sauvegardes semble être de créer des instantanés de volumes attachés à une instance en cours d'exécution. Encore une fois, c'est assez simple et le serveur reste utilisable pendant la génération d'instantanés. Le Catch-22 apparent est que vous ne pouvez pas simplement lancer une nouvelle instance directement à partir d'un instantané.

Je sais comment regrouper une instance en cours d'exécution sur le stockage S3, puis enregistrer l'AMI à partir du compartiment S3. Cela me permet de capturer une sauvegarde d'une instance en cours d'exécution et, si l'instance en cours d'exécution est perdue, d'enregistrer l'AMI à partir du compartiment S3 et de lancer la nouvelle AMI pour récupérer l'instance, mais cela semble vraiment compliqué et il semble ridicule de devoir jongler entre la console AWS et le plug-in S3 Organizer pour Firefox pour y parvenir. (Veuillez ne pas mentionner l'approche en ligne de commande, il s'agit d'un cours de niveau 010).

En jouant avec des images soutenues par EBS, l'approche suivante semble fonctionner pour moi (tout cela est fait dans la console AWS):

Pour vos sauvegardes, prenez simplement un instantané du volume système (/ dev / sda1) selon vos besoins. 2.Si vous perdez votre instance en cours d'exécution, procédez comme suit: a.Créez un nouveau volume à partir de votre dernière sauvegarde de capture instantanée b.Lancez une autre instance de votre AMI de départ (doit être soutenue par EBS) c.Arrêtez cette instance. d.Détachez le volume système existant de la nouvelle instance arrêtée et supprimez-le. e. Attachez le volume nouvellement créé en tant que volume système (/ dev / sda1) à l'instance arrêtée. f. Redémarrez la nouvelle instance. J'ai testé cela plusieurs fois et cela semble fonctionner pour moi.

Question: Y a-t-il un problème avec cette approche?

John Miner
la source

Réponses:

9

Votre approche semble très bonne - mais je peux penser à un moyen possible de l'améliorer.

Pour réduire l'impact de la perte de données depuis la dernière sauvegarde et de la défaillance du volume EBS (peu probable, mais toujours possible), vous pouvez stocker vos données sur un volume EBS distinct de vos fichiers système et sauvegarder le volume de données plus fréquemment que le volume système .

Avec votre stratégie actuelle, vous perdrez toutes les données créées entre le moment de la dernière sauvegarde et le moment où votre instance a échoué. Avec la nouvelle approche, le volume de données sera écrit jusqu'à l'échec de l'instance, vous pouvez donc simplement le rattacher à votre nouvelle instance une fois qu'elle est opérationnelle.

gareth_bowles
la source
Excellent point.
John Miner
4

Je génère un instantané pour chaque volume de mon compte à l'aide d'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
la source
3
comment tailler de vieux clichés?
rmalayter
1
+1 pour l'inspiration. (J'ai écrit quelques scripts à des fins similaires: serverfault.com/questions/275245/… )
Jonik
0

Voici un script qui créera une sauvegarde AMI pour toutes les instances ec2 dans votre 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
la source