【AWS】クラウド時代のバックアップ管理術  ~tagを活用したsnapshotの世代管理~

このエントリーをはてなブックマークに追加
こんにちはfujyaです。
今日はAWSの超便利な機能、snapshotを良い感じに使うTipsを紹介したいと思います。

AWSのsnapshotは超便利なので色々なサーバのバックアップ用途としてがんがん取得したくなりますが、数十台・数百台にサーバが増加すると管理が煩雑になってしまいます。これをスッキリさせるために、マネジメントコンソール上で「世代数の管理」「snapshot対象かどうか」を分かるようにしてみました。


手順としては4Stepで環境が構築可能です。


1:snapshotを取得したいインスタンスのtagにbackup:ON / generation:N(世代数)を設定する
2:apitoolsがインストールされてるサーバにX.509証明書を設置しておく
3:2のサーバにsnapshot取得スクリプトを配置
4:CronもしくはJenkinsで定期的に3のスクリプトを実行する



■Step1:インスタンスにtagを設定する


使うタグは [backup]と[generation]の二つです。
tag説明
backupsnapshot対象のインスタンスとするか
generation何世代分のスナップショットを取得するか



■Step2:X.509証明書を取得する


https://portal.aws.amazon.com/gp/aws/securityCredentials
からX.509証明書取得してください。

取得方法等はWEB上探せばたくさん情報があるので、詳細は割愛します。


■Step3:スクリプトを設置

ここでは二つのスクリプトを設置します。

  • /root/bin/all_createsnapshot.sh
  • /root/bin/createsnapshot.sh

all_createsnapshot.sh

ポイントとして
ec2-describe-instances -F tag:backup=ON --show-empty-fields | grep ^TAG | grep backup | awk '{print $3}'
このコマンドでinstance-idのリストを取得して

ec2-describe-instances -F instance-id=${INSTANCE_ID} | grep generation | awk '{print $5}
このコマンドで対象intance-idの世代数を取得します



またスクリプト内部でX.509証明書のパスはハードコードされていますが、オプションでコンフィグを読み込ませ変更できるようになっています
※ コンフィグサンプル
export EC2_PRIVATE_KEY=<EC2_PRIVATE_KEY_PATH>
export EC2_CERT=<EC2_CERT_PATH>
export EC2_URL=<EC2_URL>
export AWS_REGION=<AWS_REGION>
ex ) /root/bin/all_createsnapshot.sh -c <config_path> で実行



これでsnapshot対象のinstance-idと世代数がわかったので、次に実際にスナップショットを取得するスクリプトが実行されます。


※ このスクリプトはid:rx7さんのブログの記事を参考に改良したものです
参考元:RX-7乗りの適当な日々 – Amazon EBSのスナップショット(バックアップ)を取得しつつ世代管理も行うスクリプト
createsnapshot.sh
このスクリプトが実行されれば指定した世代数分のsnapshotが保管されるようになります。
また、このスクリプトは単体でも動作するようになっており、オプション無しで実行すると実行したインスタンスのsanpshotが取得されるようになっています。


■Step4:最後にall_createsnapshot.shを定期実行されるようにすれば完了

とりあえずCronで実行されるように設定
# crontab -e

00 04 * * * /root/bin/all_createsnapshot.sh


これで毎朝4時にbackup:ONと設定されているインスタンスの指定した世代数分のsanpshotが取得されるようになります。
実行履歴をloggerコマンドに渡すようにしてあるので、スクリプトを設置した翌日にでもログを確認すると良いでしょう。もちろん実際にSnapshotが取得できているかマネジメントコンソール上でも確認しておきましょう。




■さいごに


AWSは単体でも非常に強力な機能が提供されていますが、それらを組み合わせることによってより強固なインフラを構築する事ができます。今回はTagの有効活用といったところでしょうか。
他にTagを利用して監視のON/OFF設定や名前解決に利用しているケースも見られますので、他にもたくさん良い感じの使い方ができそうですね!(シャノンでは課金管理にもTagを活用しています)





あれ?遠くの方で声が聞こえる。

「間違ってファイル消したんだけど、昨日のデータ復元できるーーー?」

しょうがないなーw まぁsnapshot取ってるからそこからcreate volumeしてattachして取り出すかー







(つд⊂)ゴシゴシ














。・゚・(ノД`)・゚・。









バックアップのご利用は計画的に!
次の記事
« Prev Post
前の記事
Next Post »
Related Posts Plugin for WordPress, Blogger...