Strategi Pencadangan Sederhana untuk instance / volume Amazon EC2?

13

Anda telah memasukkan Cadangan Pengantar untuk Gambar Windows yang didukung Amazon EC2 EBS 010 ...

Saya telah menelusuri otak saya untuk menemukan strategi cadangan sederhana untuk server windows 2008 tunggal kami yang menjalankan Layanan SharePoint. Ini adalah gambar yang didukung EBS dari satu server dengan satu volume data. Saya tidak butuh sesuatu yang eksotis. Saya hanya perlu cadangan "harian" (kehilangan data selama satu hari bukanlah bencana besar).

Kami telah membuat dan menyimpan gambar AMI yang didukung EBS (Windows 2008) yang nyaman kami gunakan. Kami mulai membuat cadangan dengan hanya membuat gambar AMI EBS baru. Ini benar-benar sederhana, tetapi server yang berjalan offline selama 10 - 15 menit pertama membuat gambar - tidak ideal.

Cara standar untuk membuat cadangan tampaknya akan membuat snapshot dari volume yang dilampirkan pada instance yang sedang berjalan. Sekali lagi ini sangat sederhana dan server tetap dapat digunakan selama pembuatan snapshot. Catch-22 yang jelas adalah bahwa Anda tidak bisa begitu saja meluncurkan instance baru langsung dari snapshot.

Saya tahu cara menggabungkan instance yang berjalan ke penyimpanan S3 dan kemudian mendaftarkan AMI dari bucket S3. Ini memungkinkan saya untuk mengambil cadangan instance yang sedang berjalan dan, jika instance yang berjalan hilang, daftarkan AMI dari bucket S3 dan luncurkan AMI baru untuk memulihkan instance tersebut, tetapi ini tampaknya benar-benar berbelit-belit dan tampaknya konyol karena harus juggle bolak-balik antara Konsol AWS dan plug-in S3 Organizer untuk Firefox untuk mencapai ini. (Tolong jangan menyebutkan pendekatan baris perintah, ini adalah kursus tingkat 010).

Dari bermain-main dengan gambar yang didukung EBS, pendekatan berikut ini tampaknya bekerja untuk saya (semua dilakukan dalam AWS Console):

1.Untuk cadangan Anda, cukup potret volume sistem (/ dev / hda1) sesuai kebutuhan. 2.Jika Anda kehilangan instance berjalan Anda, lakukan hal berikut: a.Buat volume baru dari cadangan snapshot terakhir Anda b. Luncurkan instance lain dari AMI awal Anda (harus didukung EBS) c. Buka instance ini. D. Keluarkan volume sistem yang ada dari instance yang dihentikan dan buang. e. Pasang volume yang baru dibuat sebagai volume sistem (/ dev / sda1) ke instance yang dihentikan. f.Mulai kembali instance baru. Saya telah menguji ini beberapa kali dan sepertinya berhasil untuk saya.

Pertanyaan: Apakah ada yang salah dengan pendekatan ini?

John Miner
sumber

Jawaban:

9

Pendekatan Anda terdengar sangat bagus - tetapi saya bisa memikirkan cara yang mungkin untuk memperbaikinya.

Untuk mengurangi dampak kehilangan data sejak cadangan terakhir, dan kegagalan volume EBS (tidak mungkin, tetapi masih memungkinkan) Anda dapat menyimpan data Anda pada volume EBS terpisah dari file sistem Anda, dan mencadangkan volume data lebih sering daripada volume sistem .

Dengan strategi Anda saat ini, Anda akan kehilangan data apa pun yang dibuat antara waktu cadangan terakhir dan waktu contoh Anda gagal. Dengan pendekatan baru, volume data akan ditulis ke atas sampai kegagalan instance, jadi Anda bisa memasangkannya kembali ke instance baru Anda setelah itu berjalan dan berjalan.

gareth_bowles
sumber
Poin luar biasa.
John Miner
4

Saya menghasilkan snapshot untuk setiap volume di akun saya menggunakan skrip 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
N Abramson
sumber
3
bagaimana Anda memangkas foto lama?
rmalayter
1
+1 untuk inspirasi. (Saya menulis beberapa skrip untuk keperluan saya sendiri yang serupa: serverfault.com/questions/275245/… )
Jonik
0

Berikut ini skrip yang akan membuat cadangan AMI untuk semua instance EC2 dalam VPC Anda

#!/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
Ashish Karpe
sumber