Простая стратегия резервного копирования для экземпляров / томов Amazon EC2?
Вы ввели вводные резервные копии образов образов Windows ECS, поддерживаемых Amazon EC2 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.Остановите этот экземпляр. d.Отключите существующий системный том от нового остановленного экземпляра и удалите. e.Прикрепите вновь созданный том как системный том (/dev/sda1) к остановленному экземпляру. Перезапустите новый экземпляр. Я проверял это пару раз, и мне кажется, что это работает.
Вопрос: что-то не так с этим подходом?
3 ответа
Ваш подход звучит очень хорошо - но я могу придумать, как его улучшить.
Чтобы уменьшить влияние потери данных с момента последнего резервного копирования и сбоя тома 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