Назад | Перейти на главную страницу

Простая стратегия резервного копирования для инстансов / томов Amazon EC2?

Вы ввели начальное резервное копирование образов Windows на основе Amazon EC2 EBS 010 ...

Я долго размышлял, чтобы найти простую стратегию резервного копирования для нашего единого сервера Windows 2008, на котором работает SharePoint Services. Это защищенный EBS образ одного сервера с одним томом данных. Мне не нужно ничего экзотического. Мне нужно только «ежедневное» резервное копирование (потеря дневных данных не является катастрофой).

Мы создали и сохранили образ AMI с поддержкой EBS (Windows 2008), которым удобно пользоваться. Мы начали делать резервные копии, просто создав новый образ EBS AMI. Это действительно просто, но работающий сервер отключается в течение первых 10-15 минут создания образа - не идеально.

Стандартный способ создания резервных копий - это создание снимков томов, подключенных к работающему экземпляру. Опять же, это довольно просто, и сервер остается пригодным для использования во время создания снимка. Очевидная Catch-22 заключается в том, что вы не можете просто запустить новый экземпляр прямо из снимка.

Я знаю, как связать работающий экземпляр с хранилищем S3, а затем зарегистрировать AMI из корзины S3. Это позволяет мне сделать резервную копию работающего экземпляра и, если запущенный экземпляр потерян, зарегистрировать AMI из корзины S3 и запустить новый AMI для восстановления экземпляра, но это кажется действительно запутанным, и кажется нелепым иметь переключаться между Консолью AWS и подключаемым модулем S3 Organizer для Firefox, чтобы добиться этого. (Пожалуйста, не упоминайте подход командной строки, это курс уровня 010).

После экспериментов с изображениями, поддерживаемыми EBS, мне кажется, что следующий подход работает для меня (все делается в консоли AWS):

1. Для резервных копий просто сделайте снимок системного тома (/ dev / sda1) по мере необходимости. 2. Если вы потеряете свой работающий экземпляр, сделайте следующее: a. Создайте новый том из последней резервной копии моментального снимка. B. Запустите другой экземпляр вашего стартового AMI (должен иметь поддержку EBS). C. Остановить этот экземпляр. г. Отключите существующий системный том от нового остановленного экземпляра и удалите его. д. Присоедините вновь созданный том как системный том (/ dev / sda1) к остановленному экземпляру. е. Перезапустите новый экземпляр. Я тестировал это пару раз, и, похоже, у меня это сработало.

Вопрос: Что-то не так в таком подходе?

Ваш подход звучит очень хорошо, но я могу придумать, как его улучшить.

Чтобы уменьшить влияние потери данных с момента последнего резервного копирования и сбоя тома EBS (что маловероятно, но все же возможно), вы можете хранить данные на отдельном томе EBS, чем системные файлы, и выполнять резервное копирование тома данных чаще, чем системного тома. .

С вашей текущей стратегией вы потеряете все данные, которые были созданы между временем последнего резервного копирования и временем отказа вашего экземпляра. При новом подходе объем данных будет записываться вплоть до сбоя экземпляра, поэтому вы можете просто повторно подключить его к новому экземпляру, как только он будет запущен.

Я создаю снимок для каждого тома в моей учетной записи с помощью сценария 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

Вот сценарий, который создаст резервную копию AMI для всех экземпляров ec2 в вашем 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