web-dev-qa-db-ja.com

EBSボリュームを新しいスポットインスタンスに自動アタッチしますか?

EC2スポットインスタンスを実験しており、終了間で保持されるデータが必要です。今私が理解しているように、現在の価格が私の上限を超えたとき。入札後、自動的に終了させて​​いただきます。アンマウントする前にEBSにデータをプッシュできるように、シャットダウン時に実行されるすべての初期化スクリプトを想定しています。

私の質問は、価格が下がったら、新しいEBSボリュームをルートボリュームに初めてロードするinitスクリプトがないので、価格が下がったら、どのようにして自動的に新しいスポットインスタンスにマウントできますか?

カスタムAMIを作成する必要がありますか、またはこれを実現する他の方法はありますか?

14
Jeff

インスタンスを実行するたびに固定された開始点で開始するだけの場合は、次のことができます。

  1. 独自のAMIを作成し、毎回インスタンスとして実行する、または

  2. 標準のベースAMIから新しいインスタンスが起動されるたびにソフトウェアを仕様にインストールおよび構成するユーザーデータスクリプトを指定します。

インスタンスの実行間で状態を維持する必要がある場合は、インスタンス/ AMIの外のどこかにデータを保存する必要があります。例えば:

  1. データはS3、SimpleDB、DynamoDB、RDSなどで最新に保つことができます。

  2. 起動時にインスタンスが動的に接続およびマウントする永続的なEBSボリュームを指定できます。これは、ユーザーデータスクリプトを使用して実行できます。

11
Eric Hammond

GitHubで ec2-spotterプロジェクト を確認してください。あなたが説明する問題を解決するために作成されました。

@mcenzmの回答に記載されている問題(#1から#4)は現実のものであり、ec2-spotterで正しく処理されます。

5
Alex R

私はこれをしばらく試してみましたが、EC2スポットインスタンスと接続されたストレージにまだ多くの問題があります。

  1. 接続するボリュームがインスタンスと同じゾーンにない可能性がありますか?起動時にゾーンを指定することはできません。
  2. 内部でinitスクリプトを使用して接続することもできますが、少し非同期なので、テストするかsleep 10 いう。
  3. AWSコンソールに「パーティション」がプライマリブロックデバイスとして表示される理由を理解できません。たぶん、私たちが別のパーティションで海賊版のWindowsイメージを拒否するのでしょうか? (sdaの代わりにsda1)。パーティションテーブルを見つけてください。

    enter image description here

  4. 現在、外部制御ポイントからCLIを使用してアタッチするのは難しいため、バージョン管理にスナップショットを使用するのは困難です。

  5. したがって、一般的には... tar.bz2を別のボックスにバックアップし、起動時に「作業領域」にデータを入力できます。これは少量のデータにのみ役立つため、新しいAMIを両方のボリュームでベースライン化することをお勧めします。スポットインスタンスは、「ワークユニット」または「再開可能」な作業に非常に適しているため、サーバーから作業を取得するという概念は確立されています。起動まで極端に9分間待機しているので、(できるだけ小さい)ディスクをフォーマットしてもかまいません。

    1. EBSはまだかなり不安定で、「最適化」するには追加料金を支払う必要があります。インスタンスが「価格設定」されている場合、完了した作業を90秒程度でアップロードするよりも高速です。

    2. これは、「エラスティックファイル」の提供によってすべて変わると思います。

3
mckenzm

EBSを使用してEC2スポットインスタンスを起動し、不要な場合はEC2インスタンスを停止してから、EBSが再接続されるため、再起動するための可能な解決策。

https://aws.Amazon.com/about-aws/whats-new/2020/01/Amazon-ec2-spot-instances-stopped-started-similar-to-on-demand-instances/ =

0
terma