web-dev-qa-db-ja.com

AWSスポットインスタンスを戦略的に入札するようにプログラムする方法は、競合他社が支払い可能な最大額を超えるまでオークションが失われないようにするためですか?

私はこれを尋ねるためにスタック交換の適切なセクションにいると信じています。そうでない場合は、お知らせください。

一時的なタイプのホスティングサービスにのみAmazon Webサービスを使用しているため、スポットインスタンスは非常に貴重です。また、インスタンスを作成し、それを開始および停止するだけですが、残念ながら、ブートストラップされた予算に必ずしも合うとは限りません。

とにかく、誰かが私が持っているスポットインスタンスで私を上回ったとき(私は利用可能なものが少ない大きなものに行く傾向があります)、私は本当に私を殺し、私はランダムにキックオフされます。私は知っているか、少なくともあなたの入札価格があなたの入札価格よりも高い場合、潜在的な競争相手を打ち負かすためにあなたの入札価格を動的に変更する何らかの方法でプログラムする方法があると信じています。

今、私は以前にAmazonが次の最低の競合他社のすぐ上の最高価格を自動的に請求することを信じていました(これの必要性を排除します)-したがって、私が高すぎると、勝つために必要なものだけを支払うオークションを続けます。基本的に、入札価格は最高入札価格だと思っていました。

どうやら、私の法案と私がやったいくつかの実験によると-これはそうではありません。彼らは、私に反対入札する人が誰もいないとわかっていても、私が入札したものに対して請求します。

それを明確にする必要がありましたが、要点に戻りましょう。

私が0.50ドルを入札し、競合他社が0.55セントで入札するとします。私はキックオフされます。支払い可能な最高額を設定したい場所に持って行きたい(ここで1.00ドルとしましょう)。次に、競合他社が入って$ .55を入札しようとすると、私の入札は動的に調整され、$ 0.56で勝ちます。彼が私の1.00ドルの閾値を破るまで。

私はガイドを読んでいますが、それらは多かれ少なかれ簡単ですが、ガイドにいくつかの穴が残っているので、混乱してしまいます。たとえば、コマンドをどこで入力するのか、いつ入力するのかなどです。たぶん、私はただの技術の知識がなく、これらのガイドを解読するのに助けが必要です。

この問題を解き明かしてくれる/助けてくれる誰かのための良いスタートはここにあります: http://docs.aws.Amazon.com/AWSEC2/latest/UserGuide/spot-as-update-bid.html

4
Taal

ここで決定する秘密の方法論はなく、あなたがしようとしていることをする必要はありません。

市場の需要を超えて支払うことはないので、マシンに価値のあるものを入札する必要があります。

今、私は以前にAmazonが次の最低競合他社のすぐ上の最高価格を自動的に請求すると信じていました...

あなたがそのアイデアをどこから得たのか分かりません。

次の4つの構成要素すべてを備えたすべてのインスタンスについて、いつでも固定スポット価格があります。

  • 同じ可用性ゾーン
  • 同じインスタンスクラス
  • 同じプラットフォーム(Linux/Unix、Windows、またはSUSE)
  • 同じ製品クラス(VPCまたはEC2 Classic)

最大入札価格が高いかどうかに関係なく、全員がその期間に同じスポット価格を支払います

http://docs.aws.Amazon.com/AWSEC2/latest/UserGuide/using-spot-instances.html

それに照らして、次のアサーションと間違えられたか、AWSサポートに連絡する必要があります。これは間違っているためです。

彼らは私に対抗するために周りに誰もいないと知っていても、私が入札したものに対して私に請求します。

2つの点で、それは正しくありません。

多くの場合、1時間あたりの単価は最高入札価格よりも低くなります。スポット価格は、リクエストが来て、インスタンスの利用可能な供給が変わると、定期的に調整されます。 

http://docs.aws.Amazon.com/AWSEC2/latest/UserGuide/using-spot-instances.html

私の請求書は、この点に関する文書と一致しています。コンソールに表示されているスポット市場価格が常に請求されていますが、これは間違いなく最高入札価格ではありません。

これが表示されない場合、市場シグナルを正しく解釈していないと思われます。

重要なのは、現在の市場価格が現在の高値を反映していないため、他の誰が、または他の誰かがあなたに反対入札するかどうかを知る方法がないことです。インスタンスの有無は市場価格に影響しません。

価格の履歴と傾向を分析した経験から導き出せる唯一の結論は、上記の4つの要因の各組み合わせに対してEC2が最低価格を持っているということです。特定の場所に特定の容量が現在のスポットリクエストの合計よりも多い場合、スポット市場価格はそのインスタンスクラス+アベイラビリティゾーン+プラットフォーム+製品の最低価格のままです。そうでなければ、上昇します。

あなたのスポットリクエストは、おそらくその存在によって市場を変えています。市場が最低価格でない場合は、thisが見ているものであることがほぼ確実です。その場合、 のように見えます彼らはあなたが入札したものをあなたに請求していますが、それはあなたのリクエストが最低価格の上昇を引き起こしているからです。

以下のことを想定してみましょう-単に説明のために数字を使用して-

あなたと私は、Amazon VPCの「us-east-1a」可用性ゾーンでLinux/Unixを実行するc3.largeインスタンスに入札しています。 (議論のために、「us-east-1a」は私のAWSアカウントとAWSアカウントの同じ可用性ゾーンを指すと仮定しますが、これは必ずしも真実ではありません-可用性ゾーンからアカウントへのマッピングは疑似です-さまざまなAWS顧客間でランダム。)

EC2にはスポット割り当てに使用できるこのようなインスタンスが10個しかなく、最低市場価格は0.032ドル/時間であると推測されます。私の最高入札価格は1時間あたり0.096ドルです。

これらのうち8つを実行しており、別の顧客が1つのインスタンスを実行しており、他の顧客の最高入札価格は$ 0.035 /時間です。

他の顧客と私は両方とも0.032ドル/時間を支払っています。これは、スポットマーケットのサービスに割り当てられたアイドルマシンがまだあるため、インスタンスが価格を変更していないためです。

しかし、価格を監視している場合、価格が変化しないため、機械が稼働しているかどうか、または入札に反対しているかどうかはわかりません。

ここで、価格が0.032ドル/時間で表示され、2つのインスタンスに0.04ドルを入札します。

使用可能なマシンは10台しかないため、8 + 1 + 2 = 11を処理するのに十分な容量がありません。そのため、システムは誰が実行し、誰が停止する必要があるかを決定し、市場は変化します。

私の最高入札価格は0.096ドルなので、8台のマシンが稼働し続けます。次に、上限入札単価は0.04ドルであるため、2つのインスタンスが開始され、上限入札単価が私たちよりも低い他の顧客は終了します。

そして、市場価格はどうなりますか?

最後に実行された入札、スポット価格を設定します

http://docs.aws.Amazon.com/AWSEC2/latest/UserGuide/spot-pricing-interruptions.html

ドキュメントによると、スポット価格は0.04ドルになりました。

後で、スケールバックし、すべてのインスタンスを必要としないため、5つのインスタンスを終了します。容量が過剰になったため、他のユーザー(前述の最大入札価格0.035ドル)が再起動し、インスタンスが実行され続け、市場は最低価格0.032ドルに戻ります。再びシフトします。

価格がベースラインにないときはいつでも、需要が供給を超えており、成功した入札はすべての人のレートを上げる可能性があります。

スポット市場は基本的に公正な市場です。明らかに、割り当てられた容量が完全に利用されていない場合を除き、要求を満たすことができる最低入札者によって価格入札が支払われます。その場合、その特定の構成に対して設定された最低価格が適用されるようです。 。

唯一の本当の「秘密」は、あなたにとって有効な特定の場所/構成の組み合わせを見つけることであり、これらの要求も最も少なく、それらのマシンが実際にあなたに価値があるものに入札します。あなたはそれ以上払うことはありません、そして時々あなたはより少なく払うでしょう。

また、明らかに、同じスポット要求に複数のマシンを配置するのではなく、複数の同一のマシンが必要な場合に入札額をずらすことは理にかなっていますが、必ずしもすべてを実行する必要はありません...需要曲線の端に、が表示されます。最低の履行された入札は、場合によっては、市場価格を設定する入札である可能性があります。したがって、上記の例では、0.04ドルと0.036ドルで入札した場合、市場は0.04ドルではなく0.036ドルで合体し、1時間あたりわずかに節約できます。

3