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


13

Ви ввели вступні резервні копії для зображень Windows 010, підтримуваних Amazon EC2, підтримуваних EBS ...

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

Ми створили та зберегли зображення, підтримувані EBS, AMI (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.Задаліть існуючий об'єм системи з нового зупиненого екземпляра та відкиньте. е. Приєднайте новостворений том як системний об'єм (/ dev / sda1) до зупиненого екземпляра. f.Запустіть новий екземпляр. Я тестував це кілька разів, і, здається, це працює на мене.

Питання: Чи є щось не так у цьому підході?

Відповіді:


9

Ваш підхід звучить дуже добре - але я можу придумати можливий спосіб його вдосконалити.

Щоб зменшити вплив втрати даних після останньої резервної копії та збою обсягу EBS (навряд чи, але все-таки можливо), ви можете зберігати свої дані в окремому томі EBS, ніж у ваших системних файлах, і створювати резервні копії обсягу даних частіше, ніж на системному томі .

За допомогою вашої поточної стратегії ви втратите будь-які дані, створені між часом останньої резервної копії та часом відмови вашого примірника. З новим підходом об'єм даних буде записуватися вправо до відмови екземпляра, так що ви можете просто приєднати його до нового примірника, як тільки він запущений і запущений.


Відмінний момент.
Джон Майнер

4

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

1
+1 для натхнення. (Я написав кілька сценаріїв для подібних цілей моїх: serverfault.com/questions/275245 / ... )
Jonik

0

Ось сценарій, який створить резервну копію 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
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.