Prosta strategia tworzenia kopii zapasowych instancji / woluminów Amazon EC2?


13

Wprowadzono wstępne kopie zapasowe obrazów systemu Windows wspieranych przez Amazon EC2 EBS Windows 010 010 ...

Przeglądam swoje mózgi, aby znaleźć prostą strategię tworzenia kopii zapasowych dla naszego pojedynczego serwera Windows 2008 z uruchomionymi SharePoint Services. Jest to obraz wspierany przez EBS jednego serwera z jednym woluminem danych. Nie potrzebuję niczego egzotycznego. Potrzebuję tylko „codziennej” kopii zapasowej (utrata danych z jednego dnia nie jest katastrofalna).

Stworzyliśmy i zapisaliśmy obraz AMI wspierany przez EBS (Windows 2008), z którego korzystamy wygodnie. Zaczęliśmy tworzyć kopie zapasowe od stworzenia nowego obrazu EBS AMI. Jest to naprawdę proste, ale działający serwer jest wyłączany podczas pierwszych 10–15 minut tworzenia obrazu - nie jest to idealne.

Standardowym sposobem tworzenia kopii zapasowych wydaje się tworzenie migawek woluminów dołączonych do działającej instancji. Ponownie jest to dość proste, a serwer pozostaje użyteczny podczas generowania migawki. Najwyraźniej Catch-22 polega na tym, że nie można po prostu uruchomić nowej instancji bezpośrednio z migawki.

Wiem, jak połączyć działającą instancję z pamięcią S3, a następnie zarejestrować AMI z segmentu S3. Pozwala mi to na przechwycenie kopii zapasowej działającej instancji, a jeśli działająca instancja zostanie utracona, zarejestruj AMI z segmentu S3 i uruchom nową AMI, aby odzyskać instancję, ale wydaje się to bardzo skomplikowane i wydaje się śmieszne żongluj tam iz powrotem między konsolą AWS a wtyczką S3 Organizer dla Firefoksa, aby to osiągnąć. (Proszę nie wspominać o linii poleceń, jest to kurs na poziomie 010).

Po zabawie ze zdjęciami wspieranymi przez EBS, wydaje mi się, że działa następujące podejście (wszystko wykonane w konsoli AWS):

1. Aby wykonać kopię zapasową, po prostu wykonaj migawkę woluminu systemowego (/ dev / sda1) w razie potrzeby. 2.Jeśli stracisz działającą instancję, wykonaj następujące czynności: a. Utwórz nowy wolumin z ostatniej kopii zapasowej migawki b. Uruchom inną instancję początkowego AMI (musi być wspierana przez EBS) c. Zatrzymaj tę instancję. d. Odłącz istniejący wolumin systemowy od nowej zatrzymanej instancji i odrzuć. e. Dołącz nowo utworzony wolumin jako wolumin systemowy (/ dev / sda1) do zatrzymanej instancji. f. Uruchom ponownie nową instancję. Testowałem to kilka razy i wydaje mi się, że to działa.

Pytanie: Czy z tym podejściem jest coś nie tak?

Odpowiedzi:


9

Twoje podejście brzmi bardzo dobrze - ale mogę wymyślić sposób na jego poprawę.

Aby zmniejszyć wpływ utraty danych od czasu ostatniej kopii zapasowej i awarii woluminu EBS (mało prawdopodobne, ale nadal możliwe), możesz przechowywać dane na innym wolumenie EBS niż pliki systemowe i tworzyć kopię zapasową woluminu danych częściej niż wolumin systemowy .

Przy obecnej strategii utracisz wszelkie dane, które zostały utworzone między chwilą ostatniej kopii zapasowej a niepowodzeniem instancji. Dzięki nowemu podejściu wolumin danych będzie zapisywany aż do awarii instancji, więc możesz po prostu ponownie podłączyć go do nowej instancji, gdy będzie już uruchomiona.


Doskonały punkt
John Miner

4

Generuję migawkę dla każdego woluminu na moim koncie za pomocą skryptu 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

3
jak przycinać stare migawki?
rmalayter

1
+1 za inspirację. (Napisałem kilka skryptów do podobnych celów: serverfault.com/questions/275245 / ... )
Jonik

0

Oto skrypt, który utworzy kopię zapasową AMI dla wszystkich instancji ec2 w twoim 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
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.