Azure Spot Virtual Machines

AzureVirtual Machines

この記事は最終更新から1年以上経過しています。内容が古くなっている可能性があります。

概要

Azure のスポット VM とは、Azure 上で余っているリソースを使って作成される VM のことです。Azure では、バックグラウンドに大量のサーバーを有していますが、利用状況によって使われていないリソースが存在しています。スポット VM では、その “いまは利用されていない” VM のリソースを使って VM を構築することができます。ただし、B シリーズなどのいくつかのシリーズではサポートされていません。

使える機能などは、通常の VM と全く変わりませんが、余っているリソースを使用するという性質上、通常の VM よりも利用料金が安く設定されています。実際の料金は、その時その時の需要に応じて変動し、構築先のリージョンと SKU ごとに価格が決まっています。

ただし、制限も存在していて、Azure リソースの余剰がなくなってくるとスポット VM は、停止 or 削除されてしまいます。どちらの動作になるのかは、スポット VM の作成時に選択することができます。また、スポット VM には、SLA はありません。

構築手順

スポット VM の構築手順自体は、こちらのドキュメントを参照してください。

<Azure portal を使用して Azure Spot Virtual Machines をデプロイする>
https://docs.microsoft.com/ja-jp/azure/virtual-machines/spot-portal#create-the-vm

流れとしては、VM 作成時に「Azure スポット インスタンス」の項目にチェックを入れるだけです。停止 or 削除などの動作は、そのあとの項目で決められます。

各項目の詳細は、こちらのドキュメントにありますが、日本語そのままであまり違和感のある設定はないかと思います。

<Azure Spot Virtual Machines を使用する>
https://docs.microsoft.com/ja-jp/azure/virtual-machines/spot-vms#eviction-policy

Azure のリソースの空きがなくなり、スポット VM が停止 or 削除されるときには、Azure Scheduled Events で 30 秒前に通知を受け取ることができます。

削除時の動き

実際に削除時の動きを確認してみます。今回は、スポット VM の削除ポリシーを「削除」に設定し、VM の設定で削除時にディスクと vNIC も削除するように設定しています。

まずは、現時点での Scheduled Events を取得してみます。Scheduled Events については、以下のドキュメントに記載されており、下記のコマンドで取得が可能です。コマンドは、VM 内から実行する必要があります。

<Azure Metadata Service: Linux VM の Scheduled Events>
https://docs.microsoft.com/ja-jp/azure/virtual-machines/linux/scheduled-events#bash

curl -H Metadata:true http://169.254.169.254/metadata/scheduledevents?api-version=2020-07-01 | jq

取得結果は以下のようになり、現時点では特に削除イベントはありません。

では、続いて、削除のシミュレートを実施してみます。削除のシミュレートは、こちらのページから行います。

<Virtual Machines – Simulate Eviction>
https://docs.microsoft.com/ja-jp/rest/api/compute/virtual-machines/simulate-eviction

Azure で用意された API は、手元での実行も可能ですが、リファレンスから直接実行することも可能です。リファレンスから直接実行する場合は、API 欄右上の「使ってみる」をクリックします。

Azure の認証を通して、必要な各パラメータを入力したら「実行」をクリックします。応答コードとして 204 が返ってきていれば成功していますので、VM から再度 Scheduled Events を取得してみると

新たに EventType が Preempt のイベントが登録されています。Scheduled Events のドキュメントに記載されていますが、Preempt はスポット VM が削除されるときの EventType です。

今度は Azure Portal を確認してみると

「状態」が「実行」から「削除中」に変化しており、しばらく待つと VM が削除されます。今回は試していませんが、停止も同じような動きになるかと思います。

まとめ

スポット VM は、非常に安価に VM を利用できる仕組みですが、安定して使いたい場合などには適さないので、検証や動作確認などの際に利用するようにしてみて下さい。