web-dev-qa-db-ja.com

EBSとインスタンスストアの利点(およびその逆)

Amazon EC2上のインスタンスでインスタンスストアと比較してEBSからどのようなメリットが得られるかについては不明です。どちらかといえば、EBSの方がコストが比較的少ないのですが(ストップ、スタート、持続、スピードの向上)、もっと便利なようです…?また、まだ比較的新しいということを考えれば、EBSを利用できるようになったことで、より多くの人々がEBSを使用しているかどうかについてのメトリックはありますか?

371
HelloWorldy

肝心なのは、あなたはほとんどいつもEBSの裏付けのインスタンスを使うべきです。

これが理由です

  • EBSがサポートするインスタンスは、APIを通じて(誤って)終了させられないように設定できます。
  • EBSでバックアップされたインスタンスは、使用していないときに停止し、必要になったときに再開することができます(Virtual PCの一時停止など)。少なくとも私の使用パターンでは、数十GBのEBSストレージに比べてはるかに多くの費用を節約できます。
  • EBSでバックアップされたインスタンスはクラッシュしてもインスタンスの記憶域を失うことはありません(すべてのユーザーにとって必須ではありませんが、回復がはるかに速くなります)。
  • EBSインスタンスの記憶域を動的にサイズ変更できます。
  • EBSインスタンスストレージを新しいインスタンスに移すことができます(実行していたAmazonのハードウェアが不安定になったり死んだりする場合に便利です)。
  • イメージをS3から取得する必要がないため、EBSを使用したインスタンスを起動する方が速いです。
  • EBS-Backedインスタンスのハードウェアが メンテナンス予定 の場合、インスタンスの停止と起動は自動的に新しいハードウェアに移行されます。また、インスタンスを強制停止してから再起動することで、障害が発生したハードウェアにEBS-Backedインスタンスを移動することもできました(障害のあるハードウェアによってはマイレージが異なる場合があります)。

私はAmazonのヘビーユーザーであり、技術がベータから外れるとすぐに私のすべてのインスタンスをEBSバックアップストレージに切り替えました。結果にはとても満足しています。

EBSはまだ失敗する可能性があります - 銀の弾丸ではありません

クラウドベースのインフラストラクチャはいつでも失敗する可能性があることに留意してください。それに応じてインフラストラクチャを計画します。 EBS-Backedインスタンスは一時ストレージインスタンスと比較して一定レベルの耐久性を提供しますが、失敗する可能性があります。任意のアベイラビリティゾーンで必要に応じて新しいインスタンスを起動し、重要なデータ(データベースなど)をバックアップできるAMIを用意します。予算が許す場合は、負荷分散と冗長性のために複数のサーバインスタンスを実行します。 ).

しない場合

いくつかの時点で、Instance Storeインスタンスでより速いIOを達成するのがより安いかもしれません。それが確かに本当である時がありました。現在、EBSストレージには多くの選択肢があり、多くのニーズに応えています。オプションとその価格は、テクノロジの変化に応じて絶えず進化しています。本当に使い捨て可能なインスタンスが大量にある場合(それらがなくなってもビジネスにあまり影響を与えない場合)、コストとパフォーマンスの関係を計算してください。 EBSベースのインスタンスも、いつでも死ぬ可能性がありますが、私の実際的な経験では、EBSはより耐久性があります。

287
Eric J.

AWSの設定の99%はリサイクル可能です。だから私にとっては、インスタンスを終了してもそれほど問題にはなりません。例えば。私のアプリケーションはSVNのインスタンスに自動的にデプロイされ、私たちのログは中央のsyslogサーバーに書き込まれます。

私が見ているインスタンスストレージの唯一の利点はコスト削減です。そうでなければ、EBSベースのインスタンスが勝ちます。 Ericはすべての利点について述べました。


[2012-07-16]私はこの答えを今日はかなり違った言い方にします。

私は、この1年ほどでEBSベースのインスタンスを使用した経験がありませんでした。 AWSでの最後のダウンタイムもEBSを大破しました。

RDSのようなサービスもある種のEBSを使用していて、それが大部分うまくいくように思えます。私たちが自ら管理している例では、可能な限りEBSを削除しました。

データベースクラスタをiron(=本物のハードウェア)に戻したところで、拡張をやめました。インフラストラクチャに残っている唯一の部分は、複数のEBSボリュームをソフトウェアRAIDにストライプし、1日に2回バックアップするDBサーバーです。バックアップの合間に何が失われても、私たちは一緒に生きることができます。

EBSは本質的にネットワークボリューム、つまりリモートからサーバーに接続されているボリュームであるため、やや不安定なテクノロジです。基本的に無制限のpersistentstorageはAPI呼び出しに過ぎないので、私はそれを使って行われた作業を否定していません - それは素晴らしい製品です。しかし、I/Oパフォーマンスが重要なシナリオにはほとんど適しません。

また、ネットワークストレージの動作に加えて、すべてのネットワークがEC2インスタンスで共有されます。インスタンスが小さければ小さいほど(たとえば、t1.micro、m1.small)、実際のホストシステム上のネットワークインターフェイスが、その上で実行されている複数のVM(= EC2インスタンス)間で共有されているため、悪化します。

もっと大きいインスタンス、betterはもちろんです。ここでより良いとは、の範囲内であることを意味します。

永続性が必要な場合は、インスタンス間を一元管理するためにS3のようなものを使用することを常にお勧めします。 S3は非常に安定したサービスです。それからインスタンスのセットアップを自動化して、新しいサーバーを起動できるようになります。そして、それは自動的に準備されます。その場合、インスタンスよりも長寿命のネットワークストレージを用意する必要はありません。

したがって、全体として、EBSベースのインスタンスにはこれまでに何のメリットもありません。私はむしろブートストラップに1分を追加してから、潜在的なSPOFで実行します。

67
Till

インスタンスストアが好きです。それは私たちのインスタンスを完全にリサイクル可能にすることを私たちに強います、そして私たちは与えられたAMIの上で最初からサーバーを構築するプロセスを容易に自動化することができます。これはまた、AMIを簡単に交換できることを意味します。また、EBSにはまだ時々パフォーマンスの問題があります。

40
sehugg

エリックはほとんどそれを釘付けにしました。私たち( Bitnami )は、人気のあるアプリケーションや開発フレームワーク(PHP、Joomla、Drupalなど)のための無料AMIの人気のあるプロバイダーです。 EBSを基にしたAMIは、S3を基にしたAMIよりもはるかに普及していると言えます。一般的に、s3-Backedインスタンスは、時間が制限された分散ジョブ(大規模なデータ処理など)に使用されると考えられます。1つのマシンに障害が発生した場合、別のマシンが単純にスピンアップされます。 EBSベースのAMISは、ローカルで状態を維持するため、クラッシュした場合にデータを利用できるようにする必要があるWebサーバーやデータベースサーバーなどの「従来の」サーバータスクに使用される傾向があります。

私が言及していなかった1つの側面は、実行中にEBS-Backedインスタンスのスナップショットを取ることができるという事実です。インフラストラクチャのバックアップを非常に費用効果の高いものにすることができます。

16
Daniel Lopez

EC2「ハードウェア」

EC2インスタンスが起動されると、そのインスタンスが実行されるように仮想マシンが予約されます。その仮想マシンは、インスタンスの種類(32ビットまたは64ビットCPU、仮想コアの数、ハードドライブのサイズなど)に応じて特定の仕様があります。インスタンス仕様の詳細は、 http:// aws)で入手できます。 .Amazon.com/ec2 /#instance

EC2インスタンスが「実行中」の状態にある場合、それは仮想マシン上で実行されていることを意味します。これはあなたが課金されるものです。

仮想マシンのハードドライブは「一時的」と見なされます。 「エフェメラル」という用語はギリシャ語の「エフェメロス」から来ており、これは「1日だけ続く」という意味です。そのようなハードドライブ上のものはすべて一時的なものと見なすべきです。データがハードドライブからコピーされない限り、仮想マシンが停止した場合、データは失われます。これには、データ、ソフトウェア、さらにはそれらのハードドライブに常駐するオペレーティングシステムも含まれます。

Amazon Web Servicesは、「EBS-Back」と「Instance Store」の2種類のルートデバイスを持つEC2インスタンスを提供します。

「インスタンスストア」インスタンス

「インスタンスストア」インスタンスは、ルートデバイスが仮想マシンのハードドライブにあるEC2インスタンスです。インスタンスが作成されると、ベースAMIが仮想マシンのハードドライブにコピーされて起動されます。インスタンスは必要なだけ実行できますが、停止することはできません。インスタンスのルートデバイスは実際のハードドライブなので、ハードウェア上で「動かなくなります」ことができます。インスタンスを終了させることだけができます。これを行うと、インスタンスは削除され、回復することはありません。また、仮想マシンのハードウェアに障害が発生した場合、ハードドライブ上のものもすべて失われるというリスクもあります。

「インスタンスストア」インスタンスを起動した場合は、完全に終了するまで実行したままにしておいてください。インスタンスが起動されてから終了するまでの間に課金されることに注意してください。

"EBS-Backed"インスタンス

「EBS-Backed」インスタンスは、EBSボリュームをルートデバイスとして使用するEC2インスタンスです。 EBSボリュームは冗長な「仮想」ドライブであり、特定のハードウェアに結び付けられていませんが、特定のEC2可用性ゾーンに制限されています。つまり、EBSボリュームは、同じアベイラビリティーゾーン内でハードウェア間で移動できます。 EBSボリュームは一種のネットワーク接続ストレージと考えることができます。

仮想マシンのハードウェアに障害が発生した場合は、EBSボリュームを別の仮想マシンに移動して再起動するだけです。理論的には、データを失うことはありません。

もう1つの利点は、EBSボリュームを簡単にバックアップして複製できることです。したがって、ボリュームの簡単なバックアップスナップショットを作成し、新しいボリュームを作成し、それらの複製されたボリュームに基づいて新しいEC2インスタンスを起動できます。

おそらく「EBS-Backed」インスタンスが「Instance Store」インスタンスよりも優れている最大の利点は、それらを停止できることです。これを行うと、仮想マシンはシャットダウンされ、EBSボリュームは後で取得するために保存されます。ハードウェアは他の人が使用できるようになります。また、この間、EC2インスタンスの現在の実行料金は請求されません。しかし、あなたはEBSストレージに対して課金されます。インスタンスを再度実行したい場合は、もう一度起動します。新しい仮想マシンが予約され、EBSボリュームがアタッチされ、そしてインスタンスが起動されます。

しかし、仮想マシンのハードドライブはどうでしょうか。

はい、EC2インスタンスが "EBS-Backed"の場合でも、これらのハードドライブを使用することは可能です。デフォルトでは利用できません。コマンドラインプログラムを使用してインスタンスを起動する場合は、ec2-run-instancesコマンドの「-b」オプションを使用して、「instance store」ドライブをEC2インスタンスに接続できます。

一時的なデータを保存したい場合は、これらのドライブを使用可能にしておくと便利です。ネットワークを介してデータを送信しているのではないため、読み書きアクセスはEBSボリュームの読み書きよりも高速である必要があります。また、データ転送やデータ保存については課金されません。しかし、これはデータがいつでも失われる可能性がある場合にのみ機能します。

ソース: http://help.skeddly.com/Amazon-web-services/ebs-backed-versus-instance-store

16

私は最後の役職でEricとまったく同じ経験をしました。今私の新しい仕事で、私は私の最後の仕事で行ったのと同じプロセスを経験しています... EBSでバックアップされたインスタンス用にすべてのAMIを再構築 - そしておそらく32ビットマシンとして64台のマシン).

EBSでバックアップされたインスタンスはすぐに起動するので、 Amazon AutoScaling API を使用すると、CloudWatchメトリックスを使用して追加のインスタンスの起動をトリガーし、それらをELB(Elastic Load Balancer)に登録できます。また、不要になった場合はそれらをシャットダウンします。

この種の動的な自動スケーリングは、AWSが何をしているのか - ITインフラストラクチャの実質的な節約がうまくいく可能性があるところです。古いs3の "InstanceStore"ベースのインスタンスを使って正しく自動スケーリングすることはほとんど不可能です。

15
j2d3

私はEC2を自分で使い始めたばかりなので専門家ではありませんが、 Amazon独自のドキュメント

一時的なデータにはローカルインスタンスストアを使用することをお勧めします。より高いレベルの耐久性が必要なデータの場合、Amazon EBSボリュームを使用するか、Amazon S3にデータをバックアップすることをお勧めします。

私のことを強調します。

私はWebホスティング以上に データ分析 をしているので、永続化は私にとってWebサイトの場合ほど重要ではありません。 Amazon自身による区別を考えると、EBSがすべての人に適しているとは思いません。

両方を使用した後は、もう一度計量することを忘れないでください。

12
isomorphismes

EBSはVMの仮想ディスクのようなものです。

  • 耐久性があり、EBSによってサポートされているインスタンスは自由に開始および停止できます(節約)
  • ポイントインタイムバックアップを取得するために、いつでもスナップショットを作成できます。
  • AMIはEBSスナップショットから作成できるため、EBSボリュームは新しいシステムのテンプレートになります

インスタンスストレージは次のとおりです。

  • ローカル、とても一般的に速い
  • ネットワーク化されていない、通常の場合、EBS I/Oはネットワーク帯域幅を犠牲にして発生します(EBS最適化インスタンスは別のEBS帯域幅を​​持ちます)。
  • 1秒あたりのIOPSが制限されています。プロビジョニングされたI/Oでさえも数千IOPSに達する
  • 壊れやすい。インスタンスが停止するとすぐに、インスタンスストレージ内のすべてが失われます。

それぞれを使用する場所は次のとおりです。

  • バッキングOSパーティションと永続ストレージ(DBデータ、クリティカルログ、アプリケーション設定)にEBSを使用する
  • インプロセスデータ、重要でないログ、および一時的なアプリケーションの状態にインスタンスストレージを使用します。例:外部ソートストレージ、一時ファイルなど.
  • インスタンス間の複製がある場合(NoSQL DB、分散キュー/メッセージシステム、および複製ありのDB)、インスタンスストレージはパフォーマンスが重要なデータにも使用できます。
  • システム間で共有されるデータ(入力データセットと処理結果)、または起動時に各システムで使用される静的データにはS3を使用します。
  • プレベークされた起動可能なサーバーにAMIを使用する
7
BobMcGee

それはステートフルなので、ほとんどの人はEBSの裏付けのインスタンスを使用することを選択します。実行してその中にインストールしたものはすべて、stop/stopまたはインスタンスの障害に耐えられるので安全です。

インスタンスストアはステートレスで、インスタンス障害が発生した場合に備えて、内部のすべてのデータと共にそれを失います。ただし、インスタンスボリュームはVMが実行されている物理サーバーに関連付けられているため、無料で高速です。

3
mezi

これに不慣れな誰かのためにそして偶然にここに着陸した場合

現在のところ、クイックスタートセクションのすべてのAMIはEBSでサポートされています。

enter image description here

また、EBSインスタンスの違いについては、 公式ドキュメント に説明があります。店舗

この画像は、ほぼまとめたものです enter image description here

1
Aishwat Singh