CDP:Snapshotパターン

From AWS-CloudDesignPattern
Jump to: navigation, search
Architect

データのバックアップ

Contents

解決したい課題

ITにおいてデータは何よりも大切なものとして「安全」に扱わなければならない。データを「安全」にするためにデータをバックアップしておくことが重要である。その具体例としては、テープを用いてバックアップしたデータを、別拠点に保存しておく方法が挙げられれる。しかしテープバックアップはテープ交換や保管等のコストが掛かかってしまい、またこれら作業は自動化が困難である。高価な装置を購入することで半自動化することもできるが、それでもテープの容量は有限のため補充が必要になり、完全な自動化の実現は困難である。

クラウドでの解決/パターンの説明

クラウドにおいては、非常に「安全」で容量の制限がない、インターネットストレージ(Webストレージともいわれる)を比較的安価に利用できる。

仮想サーバのデータや、その他のデータを、そのインターネットストレージに定期的に保存するのも管理画面からワンクリックで行える。このバックアップ方法はSnapShotと呼ばれ、SnapShortの取得は管理画面ではなく、APIを使用して取得することが可能である。つまりプログラムを使用して、自動化することができる。

インターネットストレージは容量を気にする必要は無いため、プログラムでSnapShotを定期的に取得するようにすれば、バックアップを完全に自動化することができる。

また、プログラム更新確認やテストのための環境を一時的に作る際に、ある特定のデータ断面を用いて環境を作りたいというニーズは高い。

この場合は単にデータだけの複製だけではなく、OSごと複製を行うことが必要となるが、SnapShotを使用することでOSごと複製できるため、これら問題もクラウドを使うことで容易に解決される。

実装

AWSの仮想ストレージであるAmazon EBSには、スナップショット機能がついており、これを利用する。この機能を使用して、EBSに対してスナップショットを作成すると、作成時点でEBSに入っているデータが、EBS丸ごとスナップショットとして作成され、そのデータがS3へ格納される。S3は非常に耐久性が高いオブジェクトストレージであり、99.999999999%の耐久性を持つよう設計されている。

S3へ格納されたスナップショットは、新たなEBSとして復元できるため、もしEBS上のデータが破損したりロストした場合も、スナップショットを取った時点のデータをS3から復元できる。

データ部分のディスクのスナップショットを取得すれば、そのデータはS3へ保存されるため、非常に堅牢なバックアップを行える。任意の時点のEBSスナップショットを用いることで、必要なときに、必要なだけ新たなEBSを作成できる。

OSのブート領域を含むEBSスナップショットは、Amazon Machine Image(AMI)として登録できるため、そこから新しいEC2インスタンスを起動することも可能である。

構造

6wNg0ISJczU5Pz1m-B8482.png

利点

  • OSも含めた領域のバックアップ取得が自動化できる
  • バックアップ先に耐久性の高いAmazon S3を用いることができる。
  • EBSの丸ごとバックアップが容易に出来る、かつ、データディスクが損傷した際も、取得したスナップショットから迅速にEBSを作成できるので、万が一の障害時にも容易に復旧することができる。
  • AMIとして登録できるため、データだけでなくOSのブート領域も含めたバックアップが可能。
  • 特定の状態(例えばアプリケーションを入れ替えた後や、データを更新した後)のスナップショットを持っておくことができ、必要な分だけスナップショットをとっておくことができるので、障害や不具合があった場合に容易に環境を再現できるし、任意のタイミングの環境に戻すことができる。

注意点

  • EBSのスナップショットを取得する際に、EXT3やNTFSと言った、EBSで使用されているファイルシステムや、その上で動作するアプリケーションについては自身で考慮する必要があることに注意する。スナップショット取得はアトミックであるが、EBSをマウントしたままスナップショットを取得する場合は、ファイルシステムのキャッシュをはき出したり、アプリケーションのトランザクションなどを終わらせるなど、論理的に整合性を取った状態でスナップショットを作成する必要がある。
  • 一般的に、ブートディスクは小さめのほうが、仮想サーバの起動も早くなる。また定期的に行わるディスクチェック(Linuxの場合はfsck)の際に時間もかからない。

その他

  • ブート部分よりデータ部分のほうが頻繁にバックアップを行うことが多いため、ブート部分とデータ部分を別の仮想ディスクに分けておく事も良く行われる。
Personal tools
Namespaces
Variants
Actions
Navigation
Toolbox