Einfache Sicherungsstrategie für Amazon EC2-Instanzen / -Volumes?

13

Sie haben Einführungs-Backups für von Amazon EC2 EBS unterstützte Windows-Images 010 eingegeben.

Ich habe mein Gehirn nach einer einfachen Sicherungsstrategie für unseren einzelnen Windows 2008-Server durchsucht, auf dem SharePoint Services ausgeführt wird. Dies ist ein von EBS unterstütztes Image eines Servers mit einem Datenvolumen. Ich brauche nichts Exotisches. Ich benötige nur ein "tägliches" Backup (ein Datenverlust von einem Tag ist nicht katastrophal).

Wir haben ein von EBS unterstütztes AMI-Image (Windows 2008) erstellt und gespeichert, das wir problemlos verwenden können. Wir haben mit dem Erstellen eines neuen EBS AMI-Images begonnen. Das ist wirklich einfach, aber der laufende Server wird während der ersten 10 - 15 Minuten der Imageerstellung offline geschaltet - nicht ideal.

Die Standardmethode zum Erstellen von Backups scheint das Erstellen von Snapshots von Volumes zu sein, die an eine laufende Instanz angehängt sind. Wieder ist es ziemlich einfach und der Server bleibt während der Snapshot-Generierung verwendbar. Der offensichtliche Haken an Catch-22 ist, dass Sie eine neue Instanz nicht einfach direkt aus einem Snapshot heraus starten können.

Ich kann eine laufende Instanz in S3-Speicher bündeln und dann die AMI aus dem S3-Bucket registrieren. Auf diese Weise kann ich eine Sicherungskopie einer laufenden Instanz erfassen und, falls die laufende Instanz verloren geht, die AMI aus dem S3-Bucket registrieren und die neue AMI starten, um die Instanz wiederherzustellen Bewegen Sie sich zwischen der AWS-Konsole und dem S3 Organizer-Plug-in für Firefox hin und her, um dies zu erreichen. (Bitte erwähnen Sie nicht den Kommandozeilenansatz, dies ist ein Kurs mit 010 Level).

Nach dem Herumspielen mit EBS-gestützten Bildern scheint der folgende Ansatz für mich zu funktionieren (alles innerhalb der AWS-Konsole):

1. Erstellen Sie für Ihre Sicherungen bei Bedarf einen Snapshot des Systemvolumes (/ dev / sda1). 2.Wenn Sie Ihre laufende Instanz verlieren, gehen Sie wie folgt vor: a. Erstellen Sie ein neues Volume aus Ihrer letzten Momentaufnahmesicherung. B. Starten Sie eine andere Instanz Ihrer startenden AMI (muss EBS-gesichert sein). C. d.Das vorhandene Systemvolume von der neuen gestoppten Instanz entfernen und verwerfen. Hängen Sie das neu erstellte Volume als System-Volume (/ dev / sda1) an die gestoppte Instanz an. f. Starten Sie die neue Instanz neu. Ich habe dies ein paar Mal getestet und es scheint für mich zu funktionieren.

Frage: Ist an diesem Ansatz etwas falsch?

John Miner
quelle

Antworten:

9

Ihr Ansatz klingt sehr gut - aber ich kann mir einen Weg überlegen, ihn zu verbessern.

Um die Auswirkungen des Datenverlusts seit der letzten Sicherung und des Ausfalls des EBS-Volumes (unwahrscheinlich, aber immer noch möglich) zu verringern, können Sie Ihre Daten auf einem anderen EBS-Volume als Ihre Systemdateien speichern und das Datenvolumen häufiger als das Systemvolumen sichern .

Mit Ihrer aktuellen Strategie verlieren Sie alle Daten, die zwischen dem Zeitpunkt der letzten Sicherung und dem Zeitpunkt des Ausfalls Ihrer Instanz erstellt wurden. Mit dem neuen Ansatz wird das Datenvolumen bis zum Ausfall der Instanz beschrieben, sodass Sie es einfach wieder an Ihre neue Instanz anhängen können, sobald es betriebsbereit ist.

gareth_bowles
quelle
Hervorragender Punkt.
John Miner
4

Mit einem Bash-Skript erstelle ich einen Snapshot für jedes Volume in meinem Konto

#!/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
quelle
3
Wie schneidet man alte Schnappschüsse?
Malayter
1
+1 für Inspiration. (Ich habe einige Skripte für ähnliche Zwecke selbst geschrieben: serverfault.com/questions/275245/… )
Jonik
0

Hier ist ein Skript, das eine AMI-Sicherung für alle ec2-Instanzen in Ihrer VPC erstellt

#!/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
quelle