スポットインスタンスとオンデマンドインスタンスを使用したEC2自動スケーリング


11

オンデマンドインスタンスではなくスポットインスタンスを起動することで、自動スケーリングEC2グループのコストを最適化しようとしています。

私が本当に欲しいのは、スポットインスタンスの価格設定市場がどうなるかに関係なく、グループ内の一部のサーバーをオンデマンドインスタンスとして保持できるようにすることです。次に、構成済みの最小値を超えるグループ内の追加サーバーをスポットインスタンスにする必要があります。スポットリクエストを介してサーバーを追加するのが遅れても、通常は問題ありません。

私はこれを行う方法を見つけることができないようで、AWSのドキュメントを精査しようとしました。ASGは、オンデマンドでもスポットでも、ハイブリッドではないようです。

自動スケーリンググループに割り当てられたElastic Load Balancerにオンデマンドインスタンスを手動で追加することもできますが、そのサーバーの負荷は自動スケーリングの測定とトリガーに反映されません。

必要なサーバーを常に入手できるようにするために、とてつもなく高い入札価格を入力できると思いますが、価格の履歴を見て、時折大きなスパイクを確認します。

AWSのドキュメントはそれと矛盾しています。なぜなら、ある場所では、サーバーの最小値を入力すると、その数がそこにあることが「保証」されているからです。ただし、スポットインスタンスについて読んだ場合、保証はありません。スポットの価格差は説得力があるため、常時オンのベースラインを維持しながら、できる限り活用したいと思います。これは可能ですか?

回答:


1

現時点では、単一のASGでオンデマンドとスポットインスタンス混在させることができます

Amazon EC2 Auto Scalingでは、単一のAuto Scalingグループ(ASG)内の購入オプション、アベイラビリティーゾーン(AZ)、およびインスタンスファミリーにまたがってインスタンスをプロビジョニングおよび自動的にスケーリングし、スケール、パフォーマンス、コストを最適化できます。単一のASGオンデマンドとRIを備えたスポットインスタンスを含めることができ、計算で最大90%を節約できます。


はい-この質問を更新していただきありがとうございます。このための新しい正解としてあなたのものをマークしました。
プラットフォーム

15

上記のアプローチは少し面倒で、それほど柔軟ではありません。より標準的なアプローチは、2つのASG(1つはスポット用、1つはオンデマンド用)を作成し、両方を同じELBに登録することです(ここで説明します)。これにより、単一のASGでLCスワップをいじるのではなく、それぞれを個別に制御することができます。


7

残念ながら、このハイブリッド Auto Scalingアプローチはすぐに使用できるようには見えません。

ただし、次のようにこの制限を回避できる場合があります(テストされていませんが、しばらくの間私が試してきたシステム設計です)。

潜在的な回避策

Auto Scalingを使用してスポットインスタンスを起動するで概説されているように、スポット価格の入札は、使用中の起動設定のパラメータです。指摘したように、利用可能なハイブリッド起動構成はありません。むしろ、オンデマンドまたはスポットでなければなりません。つまり、ユースケースには2つの異なる起動構成が必要です。

Auto Scalingグループに一度接続できる起動設定は1つだけであるため、これはすぐには役に立たないようです。次の(部分的に古い)制約があります(起動設定を参照)。

Auto Scalingグループに新規または更新された起動設定をアタッチすると、新しい設定パラメーターを使用して新しいインスタンスが起動されます。既存のインスタンスは影響を受けません。Auto Scalingを縮小する必要がある場合、古い起動構成を持つインスタンスを最初に終了します[強調鉱山]

強調部分は、前者が、追加のスポット起動構成にそれぞれの初期オンデマンド起動設定から変更した後に実行されているオンデマンドインスタンスを保持するための要件をカバーして、キーけれどもであり、後者は必ずしももはやケースされていない原因にAuto Scalingグループのインスタンス終了ポリシーに記載されている、最近導入されたAuto Scaling終了ポリシー(変更については、付随するAWSブログ投稿によるファンファーレは通常ありませんでした):

Auto Scalingは、終了するインスタンスを選択する前に、最初にグループが使用する他のアベイラビリティーゾーンよりも多くのインスタンスを持つアベイラビリティーゾーンを識別します。すべてのアベイラビリティーゾーンに同じ数のインスタンスがある場合、ランダムなアベイラビリティーゾーンを識別します。識別されたアベイラビリティーゾーン内で、Auto Scalingは終了ポリシーを使用して、終了するインスタンスを選択します[強調鉱山]

概説されているようにどのようにあなたの終了ポリシー作品、あなたは今指定することができNewestInstanceをあなたが最後の打ち上げのインスタンスを終了することにしたい場合は、より最近発売されたスポットインスタンスの一つであると思われます、:

Auto Scalingは、インスタンスの起動時間を使用して、最後に起動されたインスタンスを識別します。

明らかにこれにはもう少しあるかもしれません。例えば、ポリシーのいずれか1つをスタンドアロンポリシーとして指定するか、順序付けられたリストに複数のポリシーをリストすることができますが、このアプローチはすべてのインスタンスの負荷を考慮します自動スケーリングの測定値とトリガー。ただし、次の点に注意してください。

警告

ロードバランサーが他の理由で(たとえば、それ自体が異常になったために)オンデマンドインスタンスの1つを終了した場合、それは自動的にオンデマンドインスタンスに置き換えられません。したがって、このイベントを個別に監視および説明する必要があります。たとえば、オンデマンド起動構成を一時的に再度アクティブにするなどです。

幸運を!


2
これは理にかなっています-素晴らしい探偵の仕事。停止のリスクはまだありますが、そのリスクを減らすためのいくつかの新しい方法を発見したようです。いつか、ASGの簡単なチェックボックス「サーバーの最小値以下のインスタンスはオンデマンドインスタンス」になることを願っています。ありがとう!
プラットフォーム

1

https://github.com/ashwanthkumar/matsyaを思い付くために、ここの答えからインスピレーションを得ました

以下を行うのに役立ちます

  • Hadoop / Mesos / YARNクラスターの要件を満たすには、常に一連のマシンが必要です。
  • Spotを使用して費用を節約したいが、SLAを満たすための処理能力が必要なため、ODにフォールバックしたい
  • ODを一度スポットに切り替えて、もう一度お金を節約します。


答えは、役に立つかもしれないという善意で共有されました。あなたが自己宣伝としてそれを見つけた場合、私は答えを削除することができます。
アシュワントクマ

あなたの答えが実際のスパムだと思っていたら、すでにそのようにマークしていましたので、あなたはあなたの投稿を削除する必要はありません。製品プロモーションのリンクはより先取り的であるため、そのような回答は価値がありますが、自分のような比較的新しいユーザーが気づかないことが多いというバランスが取れています。そして、モデレーターとして、私はあなたを教育することを好みます。あなたが存在することを知らなかったラインを越える前に(これは不幸な繰り返しパターンです)
HBruijn

理にかなっています。ポリシーについてご意見をお寄せいただきありがとうございます。
アシュワントクマ

1

静的な数のオンデマンドインスタンスで1つのASGのみが必要な場合、次のように機能します。

  • スポットインスタンス起動設定に基づいてAuto Scalingグループを作成します。

  • ASGでAuto Scalingを一時停止する

  • オンデマンドインスタンス(静的ベースロード)をASGに手動で追加し、それらのインスタンスのインスタンス保護をオンにします。

  • ASGで自動スケーリングを再開する

  • デフォルトの自動スケーリングポリシーは、保護のためにオンデマンドインスタンスを無視し、オンデマンドインスタンスと同じ数のスポットインスタンスを終了して、目的のグループ数を達成します。スケールインまたはスケールアウトアクティビティは、スポットインスタンスのみを起動または終了します。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.