2017-06-13 18 views
0

私はジョブのキューを持ち、ジョブを処理するAWS EC2インスタンスを実行しています。各c4。*インスタンスタイプの自動スケーリンググループが、現場版とオンデマンド版で用意されています。AWS(EC2およびスポットインスタンス)で価格を下げる

各インスタンスの電力は、インスタンスCPUの数に等しい数です。 (例えば、c4.largeには2つのCPUがあるので、power = 2となります)。

正確な電力は、キュー内のジョブの数から単純に計算されます。

キュー内のジョブ数を定期的にチェックし、AWS SDKで特定の自動スケーリンググループの希望する値を変更してできるだけ多くの金額を節約し、ジョブを処理し続ける。特に

:彼らは安価であるため、

  1. 私はオンデマンドにスポットインスタンスを好むが
  2. EC2インスタンスは時間ごとに課金され、我々はそのの非常に最後の最後でインスタンスをオフにしたいと思います1時間の稼働時間。
  3. 可能であれば、オンデマンドインスタンスをスポットインスタンスで置き換えたいと考えています。したがって、スポットグループが55分増加すると、58で新しいスポットインスタンスが実行されていることを確認し、そうであればオンデマンドグループを減らします。
  4. 入札単価が高すぎる場合は、オンデマンドでスポットインスタンスを交換したいと考えています。オンデマンドの電源を切って、スポット1をオンにするだけです。

問題は本当に扱いにくいようです。誰も経験や似たようなソリューションを実装していますか?

答えて

0

自動スケーリンググループを使用すると、自動スケーリンググループ外で定義されたアラームとメトリックを使用できます。

SNSを使用している場合は、SNSキューにアラームを設定し、それを使用してスケーリンググループをスケールアップおよびスケールダウンできなければなりません。

カスタムキューシステムを使用している場合は、メトリックをクラウドウォッチにプッシュして同様のアラームを作成できます。

スケーリングアクションの発生頻度を判断できますが、実行時間を正確に1時間にすることは難しい場合があります。

+0

私はアラームを試みました。その結果、アラームが遅いです。新しいインスタンスを開始するまでに最大5分の時間がかかります。また、スポットインスタンスをどのように扱いますか?実行するEC2インスタンスの数は、 QueueSize/C、Cは定数です。あなたはアラームでそれを行うことはできません。 – smrt28

1

インスタンスを追加/削除するときにAuto Scalingグループに効果的に伝える独自のコードを作成できます。

  • リージョン
  • アベイラビリティゾーン
  • インスタンスタイプ:

    また、スポットインスタンスでコストを削減するための良い戦略は、スポットインスタンスの価格はによって異なりことを理解することであることに注意してください

したがって、c4.xlargeの現物価格が1つのAZに上がった場合でも、それはまだ同じ費用iです他のAZ。また、c4.2xlargeの価格は、c4.xlargeより低く、消費電力は2倍です。

したがって、多様性複数のAZと複数のインスタンスタイプにわたるスポットインスタンスを目指す必要があります。これは、スポット価格の変化が、一度にすべてではなく、あなたの艦隊の小さな部分にのみ影響を与えることを意味します。

Spot Fleetを使用して、SpotInstなどのサードパーティ製品をサポートすることができます。

AWS Batch(現時点ではすべての地域で利用できません)は、バッチジョブの容量をインテリジェントに提供するように設計されています。

関連する問題