Amazon EC2インスタンス/ボリュームのシンプルなバックアップ戦略?


13

Amazon EC2 EBS-backed Windows Images 010の導入バックアップを入力しました...

SharePoint Servicesを実行している単一のWindows 2008サーバーの簡単なバックアップ戦略を見つけるために、頭をブラウジングしています。これは、1つのデータボリュームを備えた1つのサーバーのEBS-backedイメージです。エキゾチックなものは必要ありません。「毎日」のバックアップのみが必要です(1日分のデータを失うことは壊滅的ではありません)。

使いやすいEBSバックアップAMIイメージ(Windows 2008)を作成して保存しました。新しいEBS AMIイメージを作成するだけでバックアップを開始しました。これは非常に簡単ですが、実行中のサーバーは、イメージを作成してから最初の10〜15分間オフラインになりますが、これは理想的ではありません。

バックアップを作成する標準的な方法は、実行中のインスタンスに接続されたボリュームのスナップショットを作成することです。繰り返しますが、これは非常に単純であり、サーバーはスナップショットの生成中も使用可能なままです。明らかなCatch-22は、スナップショットから直接新しいインスタンスを起動することはできないということです。

実行中のインスタンスをS3ストレージにバンドルし、S3バケットからAMIを登録する方法を知っています。これにより、実行中のインスタンスのバックアップを取得でき、実行中のインスタンスが失われた場合、S3バケットからAMIを登録し、インスタンスを回復するために新しいAMIを起動しますが、これは本当に複雑で、とんでもないように思えますAWSコンソールとFirefoxのS3オーガナイザープラグインの間を行き来して、これを実現します。(コマンドラインアプローチについては言及しないでください。これは010レベルのコースです)。

EBS-backedイメージをいじってみると、次のアプローチがうまくいくように見えます(すべてAWSコンソール内で行われます)。

1.バックアップのために、必要に応じてシステムボリューム(/ dev / sda1)のスナップショットを作成します。2.実行中のインスタンスが失われた場合は、次の手順を実行します:a。最後のスナップショットバックアップから新しいボリュームを作成しますb。開始AMIの別のインスタンスを起動します(EBSでバックアップする必要があります)c。このインスタンスを停止します。d。停止した新しいインスタンスから既存のシステムボリュームを切り離し、破棄します。e。新しく作成したボリュームをシステムボリューム(/ 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

VPC内のすべてのec2インスタンスのAMIバックアップを作成するスクリプトは次のとおりです。

#!/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
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.