Amazon EC2 bulut sunucuları / birimleri için Basit Yedekleme Stratejisi?


13

Amazon EC2 EBS destekli Windows Images 010 için Tanıtım Yedekleri girdiniz ...

SharePoint Services çalıştıran tek bir Windows 2008 sunucumuz için basit bir yedekleme stratejisi bulmak için beyinlerime göz atıyorum. Bu, bir veri hacmine sahip bir sunucunun EBS destekli görüntüsüdür. Egzotik bir şeye ihtiyacım yok. Sadece "günlük" bir yedeklemeye ihtiyacım var (bir günlük veri kaybını kaybetmek felaket değil).

Kullanmakta rahat olduğumuz bir EBS destekli AMI görüntüsü (Windows 2008) oluşturduk ve kaydettik. Yeni bir EBS AMI görüntüsü oluşturarak yedekleme yapmaya başladık. Bu gerçekten basit, ancak çalışan sunucu, görüntüyü oluşturmanın ilk 10-15 dakikası boyunca çevrimdışı duruma getiriliyor - ideal değil.

Yedek oluşturmanın standart yolu, çalışan bir örneğe eklenen birimlerin anlık görüntülerini oluşturmak gibi görünmektedir. Yine oldukça basit ve sunucu anlık görüntü üretimi sırasında kullanılabilir durumda. Görünen Catch-22, yeni bir örneği doğrudan bir anlık görüntüden başlatamamanızdır.

Çalışan bir örnek S3 depolama paketlemek ve sonra AMI S3 kova kaydetmek nasıl biliyorum. Bu, çalışan bir örneğin yedeğini almama izin veriyor ve çalışan örnek kaybolursa, AMI'yi S3 grubundan kaydedin ve örneği kurtarmak için yeni AMI'yi başlatın, ancak bu gerçekten kıvrımlı görünüyor ve bunu yapmak çok saçma görünüyor Bunu başarmak için AWS Konsolu ile Firefox için S3 Organizer eklentisi arasında ileri geri oynayın. (Lütfen komut satırı yaklaşımından bahsetmeyin, bu 010 seviyeli bir derstir).

EBS destekli görüntülerle oynamaktan, aşağıdaki yaklaşım benim için işe yarıyor gibi görünüyor (hepsi AWS Konsolu'nda yapılır):

1.Yedekleriniz için sistem birimini (/ dev / sda1) gerektiği gibi anlık olarak çekin. 2. Çalışan örneğinizi kaybederseniz aşağıdakileri yapın: a. Son anlık görüntü yedeklemenizden yeni bir birim oluşturun b. Başlangıç ​​AMI'nızın başka bir örneğini başlatın (EBS destekli olmalıdır) c. d.Yeni durdurulmuş durumdan mevcut sistem birimini silin ve atın. e.Yeni oluşturulan birimi, durdurulan örneğe sistem birimi (/ dev / sda1) olarak ekleyin. f.Yeni örneği yeniden başlatın. Bunu birkaç kez test ettim ve benim için çalışıyor gibi görünüyor.

Soru: Bu yaklaşımda bir sorun var mı?

Yanıtlar:


9

Yaklaşımınız kulağa hoş geliyor - ancak bunu iyileştirmenin olası bir yolunu düşünebilirim.

Son yedeklemeden bu yana veri kaybının ve EBS birim hatasının (olası değil, ancak yine de mümkün) etkisini azaltmak için verilerinizi sistem dosyalarınızdan ayrı bir EBS biriminde depolayabilir ve veri birimini sistem biriminden daha sık yedekleyebilirsiniz .

Mevcut stratejinizle, son yedeklemenin yapıldığı saat ile örneğinizin başarısız olduğu zaman arasında oluşturulan tüm verileri kaybedersiniz. Yeni yaklaşımla, veri hacmi örnek başarısızlığına kadar yazılacak, böylece çalıştıktan sonra yeni örneğinize yeniden bağlayabilirsiniz.


Mükemmel nokta.
John Miner

4

Bir bash betiği kullanarak hesabımdaki her birim için bir anlık görüntü oluşturuyorum

#!/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
eski fotoğrafları nasıl budanırsınız?
rmalayter

1
İlham için +1. (Kendime benzer amaçlar için bazı senaryolar yazdım: serverfault.com/questions/275245/… )
Jonik

0

İşte VPC'nizdeki tüm ec2 örnekleri için AMI yedeklemesi oluşturacak komut dosyası

#!/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
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.