この記事は最終更新から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 を利用できる仕組みですが、安定して使いたい場合などには適さないので、検証や動作確認などの際に利用するようにしてみて下さい。