web-dev-qa-db-ja.com

Amazon Elastic Beanstalkでスポットインスタンスを使用するにはどうすればよいですか?

Amazon Elastic Beanstalkを使用してアプリケーションをデプロイするインフラがあります。 EBがサポートしていないスポットインスタンスをいくつか追加して、アプリをスケーリングする必要があります。

そこで、スポットインスタンスを含む起動構成から2番目の自動スケーリングを作成します。自動スケーリングは、beanstalkによって作成された同じロードバランサーを使用します。

アプリの最新バージョンでインスタンスを起動するために、元の起動構成(beanstalkで作成)からスポットデータのある起動構成(私が作成)にユーザーデータをコピーします。

これはうまくいきますが、

  1. beanstalkが管理するインスタンスを新しいバージョンのアプリで更新するときに、2番目の自動スケーリングから表示されたスポットインスタンスを更新する方法

  2. スポットインスタンスを使用してbeanstalkのメリットを享受するのにとても簡単でエレガントな別の方法はありますか?

12
Gean Ribeiro

私はこれを私自身に尋ねていて、エラスティックビーンズトークに組み込みのソリューションを見つけました。 here は次のように記述されていました。

  • .ebextensionsフォルダーの下にファイルを追加します。このセットアップでは、spot_instance.config(.config拡張子が重要です)としてファイルに名前を付けています。以下のコンテンツをファイルに貼り付けます https://Gist.github .com/rahulmamgain/93f2ad23c9934a5da5bc878f49c91d64
  • EC2_SPOT_PRICEの値は、Elastic Beanstalk環境設定を介して設定できます。スポットインスタンスの使用を無効にするには、環境設定から変数を削除します。
  • 環境がすでに存在し、上記の設定が更新されている場合、古い自動スケーリンググループは破棄され、新しい自動スケーリンググループが作成されます。
  • 次に、環境はスポットインスタンスのリクエストを送信します。スポットインスタンスはEC2ダッシュボードの[スポットインスタンス]タブに表示されます。
  • リクエストが満たされると、インスタンスは新しいクラスターと自動スケーリンググループに追加されます。
  • Spot Advisorツールを使用して、使用中のインスタンスの最適な価格を確認できます。
  • 元の価格の30%の価格ポイントはまともなレベルのようです。

私は個人的には、この価格があなたが支払う意思の上限であることを考えると、特定のインスタンスタイプのオンデマンド価格を使用します。これにより、高額になる可能性が低くなり、インスタンスが終了します。

これは、いくつかのオンデマンドインスタンスと追加のスポットインスタンスの間で分割することができず、他の誰かが使用できるように使用できるスポットインスタンスがない可能性が少しあるため、本番システムにとって最適なアプローチではない可能性があります。高い入札で市場全体を買う。

プロダクションユースケースの場合、私は https://github.com/cristim/autospotting を調べます。これは、すべての自動スケーリンググループをアクティブに管理し、最低価格と構成可能な数の間のバランスを満たそうとしますまたはオンデマンドインスタンスの割合。

10
Jan Prieser

ここSpotinstでは、私たちはお客様のためにまさにそのジレンマを扱っていました。

Elastic Beanstalkは、相互に結び付けられたサービス(ロードバランサー、ASG、Route 53アクセスポイントなど)のスタック全体を作成するため、その中でスポットを管理することは簡単な作業ではありません。

多くの調査の結果、構成をそのままにしておくと複雑になるため、ASGを削除すると常にエラーが発生しやすくなることがわかりました。代わりに、単にASGを複製し、すべてのスケーリングポリシーがElastigroupとASG構成の更新にのみ影響を与えるように、ElastigroupとASGを並べてライブ配信します。

Elastigroup内でインスタンスを実行すると、完全なSLAでマネージドスポットインスタンスを実現できます。

Elastigroupでスポットインスタンスを実行する利点には、次のようなものがあります。

1)私たちのアルゴリズムは、新しいインスタンスがスピンアップするときはいつでも、価格と可用性の面で最高のスポット市場にライブ選択を行います。

2)中断が発生した場合は、約15分前にそれを予測し、グループの容量を確保(および保証)するために必要なすべての手順を実行します。

3)スポットの可用性を備えた市場がないという極端なケースでは、オンデマンドインスタンスにフォールバックします。

2
Tomer.H

AWSは、Beanstalkがすぐに使えるスポットインスタンスをサポートしていないことを明確に述べているので、少し手を加える必要があります。私の顧客は混合環境(オンデマンド+スポット)とフルスポットを望んでいました。私が顧客のために作成したものは次のとおりです(私はGUIにのみアクセスできました)。

  1. 混合環境の場合:

    • 通常のインスタンスで環境を開始します。
    • それぞれの起動構成をコピーし、プロセス中にスポットインスタンスを選択します。
    • auto Scalingグループを編集し、編集したlcを選択します。終了ポリシーを必ずNewestInstanceに変更してください。このような設定により、基本的なオンデマンドのフリート(決定不能)と、必要に応じて、通常よりも多いトラフィックなどの追加のスポットを確保できます。環境を終了して再作成すると、編集内容がすべて削除されることに注意してください。
  2. フルスポット環境の場合:

    • 以前と同様の手順ですが、1つの違いがあります。実行中のインスタンスを終了し、ASGが新しいインスタンスを起動するのを待ちます。ダウンタイムなしで実行したい場合は、Desired番号のインスタンスを追加し、それが起動するのを待ってから、オンデマンドのインスタンスを終了します。
0
Remigiusz