AWS EC2のバックアップと復元の基本

AWS
この記事は約7分で読めます。
記事内に広告が含まれています。

今回はEC2の「バックアップ」と「復元」について基本的なところを書いていきます。

EC2を誤って終了してしまったり、EC2内のデータ復元等に備えて、バックアップは基本であり重要です。

EC2のバックアップについて

本記事では「AMI」取得をバックアップとして扱います。

AMI取得はスナップショット取得の上位互換です。AMIを取得すればEBSのスナップショット(バックアップ)に加えて、構成情報も取得出来ます。構成情報とは プラットフォーム、アーキテクチャ、仮想化タイプ、ルートデバイス名、ルートデバイスタイプ…等です。AMIがあれば「EC2インスタンス」自体を消してしまっても、簡単に復元することが出来ます。

スナップショット作成・AMI作成の違い。

※昔は「AMI」の世代管理は簡単には出来なかったようです(スクリプトを組む必要があった)。現在では「ライフサイクルマネージャ」や「AWS Backup」を使うと簡単に出来ます。取得方法の種類については別記事でまとめます(今回は取得と復元を目的とします)。

事前解説が長くなりましたが、本編いきます!

AMIの作成

AMIの作成は色々な方法(手動・DLM・AWS Backup)がありますが、今回は任意EC2に対して手動で実施します。公式サイトにも記事があります。

Amazon EC2 インスタンスからの AMI の作成 - AWS Toolkit for Visual Studio
Toolkit for Visual Studio を使用して EC2 インスタンスから AMI を作成する方法

■イメージ作成

任意EC2を選択して右クリックメニューより「イメージとテンプレート」→「イメージの作成」をクリックします。

メニューより「イメージを作成」を選択します。

■必要事項の入力

「イメージを作成」の画面が表示されるため、以下を入力してイメージの作成を行います。

  • イメージ名:イメージ名を入力。
  • イメージの説明:イメージの説明を入力。
  • 再起動しない:通常は未チェック。
    ※未チェック=再起動が発生します。チェックした場合、再起動は発生しませんが、整合性が担保されません。
  • タグキー:Name等を付けたほうが管理しやすい。
必要事項を入力します。
必要事項を入力します。

■イメージ作成後

容量やタイミング依存ですが、数分~10分程度でAMIが完成します。

ステータスが「利用可能」になれば完成です!

また、AMIに関連するスナップショットも作られたことが確認できます。

スナップショット一覧上にも存在します。

AMIからの復元

復元は大きく2ケースあります。

  • Case1:EBSボリュームに障害(起動NGやデータ紛失)が生じたため、過去のバックアップから復元(ボリューム差し替え)したい。
  • Case2:EC2に障害発生、またはEC2を終了(削除)してしまったため、過去のバックアップから復元(作り直し)したい。

以降、具体的な手順を書いていきます。

Case1:EBSボリュームの復元

次のステップで進めます。(該当EC2は停止状態とします)

  1. 任意SnapshotからEBSボリュームを作成する。
  2. 該当EC2から障害となったEBSボリュームをデタッチする。
  3. 該当EC2に「1」で作成したEBSボリュームをアタッチする。

SnapshotからEBSボリュームを作成

該当Snapshotを選択し、右クリックメニューより「スナップショットからボリュームを作成」をクリックします。

Snapshot選択してボリュームを作成。

次に、ボリュームの設定画面が表示されるため、適切なボリュームタイプやAZを選択してボリュームの作成を確定させます。

作成されました。

ボリュームメニューより、該当ボリュームのボリュームの状態が「利用可能」となっていればOKです。

ボリュームが利用可能になった。

EBSボリュームをデタッチ

該当EC2からデタッチ(取り外す)ボリュームを確認し「デバイス名」をメモしておきます(後でアタッチの際に使います)。次にボリュームIDをクリックしてボリュームメニューに進みます。

デバイス名をメモします。

ボリュームメニューが表示された後、該当ボリュームを選択し、右クリックメニューより「ボリュームのデタッチ」をクリックします。

デタッチします。

確認が表示されるため「デタッチ」をクリックします。

デタッチを確定させます。

EBSボリュームをアタッチ

先ほどSnapshotから作成したボリュームを選択し、右クリックメニューより「ボリュームのアタッチ」をクリックします。

新しいボリュームをアタッチします。

ボリュームのアタッチ画面が表示されるため、必要事項を選択/入力してアタッチを行います。

  • インスタンス:アタッチ対象のEC2を選択します。
  • デバイス名:先ほどデタッチする前にメモしたデバイス名を入力します。
アタッチしていきます。
アタッチ出来ました。

以上で完了です。後はECを開始させて問題なく復元できているか確認しましょう。

デタッチした障害ボリュームは不要であれば別途削除しましょう。

Case2:EC2の復元

次のステップで進めます。

  1. 障害EC2を終了します。
    ※後でじっくり解析したい場合は現時点をバックアップしてもOKです。またEC2を終了せずに新しいEC2として起動してもOKですがPrivateIP等は別物になります。
  2. 任意AMIから新規EC2を起動する。
EC2復元の流れ。

障害EC2の終了

障害となったEC2を停止させます。

  • Private IP等、必要情報はメモしておきます。
  • 終了保護をしている場合は、解除しないと終了出来ません。

AMIを新規EC2を起動

復旧時点としたいAMIを選択し、右クリックメニューより「イメージからインスタンスを起動」をクリックします。

イメージからインスタンスを起動。

見慣れたインスタンス起動時のメニューになるため、インスタンスタイプや詳細(VPCやサブネット、PrivateIP等)を入力して起動させます。

手順は以上となります。簡単ですね。

補足事項や注意点など

■バックアップ先やコスト

スナップショットのバックアップ先はS3です。S3のためデータが損失する可能性は極めて低いと考えられます。(オンプレの場合は別拠点に転送して災害対策を実施していたが、AWSのS3は強固のため別リージョンへの転送は未実施という判断も方針によってはありえます。)

1GB辺り月額「0.05$」かかります。
初回バックアップはフルバックアップのため、EBS容量×0.05$が毎月かかることになります。2回目以降のバックアップは増分バックアップです。(初回分を後から消しても内部的には保持されている為か、2回目以降のバックアップは消えませんし復元可能です。)

Amazon EBS スナップショット - Amazon Elastic Compute Cloud
Amazon EBS ボリュームのポイントインタイムバックアップのコピーとしてのスナップショットの使用

■バックアップの整合性

基本的にAMIを作成する際は、EC2を停止すべきです。バックアップ方法によってはVSSが動作してOS整合までは取ってくれる場合もありますが、アプリ整合までは保証されません(何か作り込みすれば保証出来る方法もある)。

■復元直後はボリュームのパフォーマンスが落ちます

バックアップはS3にあり、順次データを引っ張ってきている状態のため、すぐにはボリュームのパフォーマンスが出ません。

Amazon EBS ボリュームの初期化 - Amazon Elastic Compute Cloud
スナップショットから作成された EBS ボリュームでファーストタッチレイテンシーの増加を回避するには、初期化と呼ばれるプロセスを実行します。

※対処方法としてボリューム全体をOS側で読み込むという手があるようです。さらに別の手段として「高速スナップショット」という機能を有効にしておくと、復元時にすぐに最大パフォーマンスを発揮できるようです。(ただし高速スナップショットを有効にしておくと、結構なコストが日々加算されます。)

■AMI削除とスナップショットの削除

AMIだけを削除しても関連スナップショットは消えません。別途スナップショットの削除操作が必要です。(中にはAMI削除のイベントをトリガにスナップショットを自動削除するlambda関数を作る人もいるようです)

まとめ

EC2バックアック(AMI作成)と復元を紹介しました。

  • バックアップとして定期的にAMI(構成+EBSスナップショット)を作成すべきです。
  • 復元パターンとしては「ボリューム」「EC2」単位があります。

いざって時に慌てないように、一通り検証しておくことをおすすめします。

最後までご覧いただき、ありがとうございました。

コメント

Top
タイトルとURLをコピーしました