ねっとわーくえんじにあとか > > AWSでの自動スナップショットの設定方法 ~AWSで作るWordPress~ Part.7

AWSでの自動スナップショットの設定方法 ~AWSで作るWordPress~ Part.7

スポンサーリンク

ここまでWordPressの構築を説明してきましたが、ここに着てやっとAWSで作った理由がわかります。
それは….

バックアップです。

AWSは比較的安い値段でバックアップを取得することができます。その値段がすごいわかりにくいのですが、計算式は以下のようになっています。

①8Gのストレージ(2GB使用中)
②バックアップ実行(8GBの内2GBがバックアップされる)※2GB分の課金発生
③8Gのストレージ(使用中が2GB⇒2.1GB増加)
④バックアップ実行(2.1GBがされるバックアップされる)※0.1GB分課金発生

バックアップの値段については変更量(差分)で課金が決定されます。
最初の2GBの場合、バックアップが始めてのため2GBバックアップされます。
次の2.1GBの場合、すでに2GB分はバックアップが完了されているため、0.1GB分バックアップされます。
課金の計算式は以下のとおり。
初回バックアップ要領:B、2回目バックアップ:S、圧縮率:C
B*C(%)+(S-B)*C(%)=バックアップの値段となります。
※実際にはバックアップを取る際に圧縮が自動でされるため、実際より要領が少なくなる可能性がある。

スポンサーリンク
スポンサーリンク

バックアップを設定しよう!!!!

次は実際にAWSのCLIにてバックアップを実施してみます。用意するものは3つです。

  • AWS CLIログイン用のアクセスキー
  • バックアップ用のタグ
  • バックアップのシェルスクリプト

AWS CLI設定してみよう!AWS CLIログイン用のアクセスキーの入手

 

AWS CLIを使うう上でアクセスキーとシークレットIDを発行する必要があります。

AWSコンソールにアクセスし、右上のアカウント名⇒認証情報を選択すると以下の画面に行きます。

アクセスキー(アクセスキーIDとシークレットアクセスキー)を選択し新しいアクセスキーを作成します。

アクセスキーの発行

入手したら、アクセスキーをダウンロードしPCに格納しておきます。

AWS

中身は以下のような文字の羅列になっています。

AWSAccessKeyId=XXXXXXXXXXXX
AWSSecretKey=TyAWs5GRBmvYrtBXXXXXXXXXXXXXXXXXX6U0N

次にSSHにてサーバへログインし「aws configure」を入力します。
そうしたら先ほど入手したアクセスキーおよびシークレットアクセスキーを入力します。

$ aws configure
AWS Access Key ID [****************XXXX]:<AWSAccessKeyId>
AWS Secret Access Key [****************XXXX]:<AWSSecretKey>
Default region name [ap-northeast-1]:ap-northeast-1
Default output format:text

 

入力が終わったら以下のコマンドで自分のインスタンスが見えることを確認します。

$ aws ec2 describe-instance-status
INSTANCESTATUSES        ap-northeast-1a i-xxxxxxxxxx
INSTANCESTATE   16      running
INSTANCESTATUS  ok
DETAILS reachability    passed
SYSTEMSTATUS    ok
DETAILS reachability    passed

ここまで表示できればAWSのCLIを利用することができます。

AWS バックアップ対象にタグを設定しよう

Ec2のコンソールより、タブ⇒タブの管理⇒ボリュームを選択します。

AWSタグの選択

AWSボリューム選択

バックアップを取りたいボリュームにチェックをつけタグを追加します。

AWSタグ追加

キー:<バックアップ名称>※後ほどコマンドを使用するときに使います。
値:<世代数>※何世代までバックアップを残すか。今回は仮でキー:Backup_SS 値:2としている。

SSHに戻し以下のコマンドを入力し、TAG情報が以下のように表示されることを確認する。
※volumeのリソースに対して、Backup_SSというキーを持つものを抽出する。

# aws ec2 describe-tags –filters Name=resource-type,Values=volume Name=key,Values=Backup_SS TAGS Backup_SS vol-eb78fc02 volume 2

スクリプトを試してみよう

シェルスクリプトを配置しよう。文字が長いためテキストファイルでアップロードしています。
以下のファイルをサーバ上に拡張子.shに変更し格納してください。
スナップショット
※シェルスクリプトの基本についてはhttp://d.hatena.ne.jp/rx7/20100606/p1さんの記事を参考にさせていただいております。
実際に動かしてみる。
実行権限の付与

chmod u+x snapshotEBS.sh

スナップショットの実行
「./snapshotEBS.sh <バックアップキー>でバックアップを実行できます。」

# ./snapshotEBS.sh Backup_SS
Before snapshot list : Backup_SS
SNAPSHOTS Backup_SS False 816787222576 49% snap-75a0ab49 2015-04-30T14:22:31.000Z pending vol-eb78fc02 8
SNAPSHOTS Backup_SS False 816787222576 100% snap-8f8e71b0 2015-04-30T14:21:27.000Z completed vol-eb78fc02 8

CREATE:snap-31402d0c

After snapshot list : Backup_SS
SNAPSHOTS Backup_SS False 816787222576 99% snap-31402d0c 2015-04-30T14:22:36.000Z pending vol-eb78fc02 8
SNAPSHOTS Backup_SS False 816787222576 49% snap-75a0ab49 2015-04-30T14:22:31.000Z pending vol-eb78fc02 8

世代数=2と設定しているため、Beforeにあった古いファイルが削除されて、新しくsnap-31402d0cが作成されているのが確認できます。

自動バックアップを設定しよう

自動的にバックアップを取るためにはLinuxのcrontabというシステムを利用します。
crontabは指定された時間にスクリプトなどを実行してくれるシステムです。

sudo su -
crontab -e

で編集モードに以降し、以下を入力しましょう。

cronの設定については以下を入力し、保存することで実行できる。
日次と週次の参考例を記載しているため、環境に合わせて使ってください。

00 6 * * * /home/ec2-user/snapshotEBS.sh Backup_SS
※毎日6時にバックアップ実行(日次バックアップ)
00 6 * * 0 /home/ec2-user/snapshotEBS.sh Backup_SS
※毎週日曜日6時にバックアップ(週次バックアップ

実行の確認について、検証ではためしに3分刻みでバックアップを実施してみた。
実行については/var/log/cronに保存されているためそちらを参照してください。

# cat /var/log/cron

May  1 00:42:01 ip-172-31-18-127 CROND[27842]: (root) CMD (/home/ec2-user/snapshotEBS.sh Backup_SS)
May  1 00:45:01 ip-172-31-18-127 CROND[27899]: (root) CMD (/home/ec2-user/snapshotEBS.sh Backup_SS)
May  1 00:48:01 ip-172-31-18-127 CROND[27956]: (root) CMD (/home/ec2-user/snapshotEBS.sh Backup_SS)

実行結果については通常はrootアカウントに対してメールが配信されている。
そのため以下のフォルダを参照してください。

cat /var/mail/root
# cat /var/mail/root
Message-Id: <201504301551.t3UFp2TC028029@ip-172-31-18-127.ap-northeast-1.compute.internal>
From: root@ip-172-31-18-127.ap-northeast-1.compute.internal (Cron Daemon)
To: root@ip-172-31-18-127.ap-northeast-1.compute.internal
Subject: Cron <root@ip-172-31-18-127> /home/ec2-user/snapshotEBS.sh Backup_SS
Content-Type: text/plain; charset=UTF-8
Auto-Submitted: auto-generated
X-Cron-Env: <LANG=en_US.UTF-8>
X-Cron-Env: <SHELL=/bin/sh>
X-Cron-Env: <HOME=/root>
X-Cron-Env: <PATH=/usr/bin:/bin>
X-Cron-Env: <LOGNAME=root>
X-Cron-Env: <USER=root>

Before snapshot list : Backup_SS
SNAPSHOTS       Backup_SS       False   816787222576    100%    snap-4620f77b   2015-04-30T15:48:05.000Z        completed       vol-eb78fc02    8
SNAPSHOTS       Backup_SS       False   816787222576    100%    snap-ac048b96   2015-04-30T15:45:04.000Z        completed       vol-eb78fc02    8

After snapshot list : Backup_SS
SNAPSHOTS       Backup_SS       False   816787222576    29%     snap-aa1c6f96   2015-04-30T15:51:04.000Z        pending vol-eb78fc02    8
SNAPSHOTS       Backup_SS       False   816787222576    100%    snap-4620f77b   2015-04-30T15:48:05.000Z        completed       vol-eb78fc02    8

バックアップスクリプトが動いていることが確認できる。
次の章では保存したバックアップをリストアする作業をしてみたいと思います。

 

コメント