クラウドエンジニアブログ

Azure Spot VM で VM 利用料をお得に!

椎熊 裕一

椎熊 裕一

1. はじめに

みなさん、こんにちは。クラウドアーキテクトの椎熊です。

先日、Spot VM という、Azure の VM がより安価に利用できるサービスが提供されました。
[Azure Spot Virtual Machines の一般提供を開始]

本ブログでは、Spot VM についての概要と作成方法についてご紹介します。


2. Spot VM とは

Spot VM は、Azure 上に余っているリソースを使って、VM を利用します。
使える機能など普通の VM と何ら変わりありません。
余っているリソースを使うので、定価より安く VM を利用することができます。
ただし、余剰リソースがなくなると、Spot VM は自動的に停止されます。
自動的に停止されるのは VM のみです。ディスクの料金は継続して課金され続けますので、課金を止めたい場合は、VM を手動で削除してください。
実際の設定画面を見てみると、[削除ポリシー] で [停止 / 割り当て解除] の横に、[削除] という項目もあるので、将来的には削除可能になることが期待できます。

Spot VM とは1


削除ポリシーと合わせて、停止するタイミングを以下の 2つから選択することができます。

[容量のみ] :Azure 上の余剰リソースが足りなくなる、または Spot VM の料金が定価以上になったら、仮想マシンを停止させる。

[価格または容量] :Azure 上の余剰リソースが足りなくなる、または、Spot VM の料金が指定した金額以上になったら、仮想マシンを停止させる。

実際の Spot VM の価格は、需要により変動しています。
リージョンと SKU (インスタンスの種類) ごとに価格が決まり、需要が高まると価格も上昇していきます。
次の日確認してみたところ、少し安くなっていました。 (以下画面参照)

Spot VM とは2


[容量のみ] とした場合は、定価以上になるまで Spot VM を稼動させ続けますが、[価格または容量] とした場合は、利用者側で設定した価格までしか稼動させないということができます。
例えば、予算など一定の金額以上は使えないというときは、最大価格を設定することで安くかつ安心して利用することができます。

もし、停止となった場合は、Scheduled Events を通して、30秒前に通知されます。
通知と言っても、Azure からメールが来たりするわけではありません。
VM 内部からアクセスできる REST エンドポイントにリクエストすることで知ることができます。
ですので、VM から一定間隔で能動的に確認する必要があります。
ただし、通知から 30秒しかないので、なにかデータを別の場所に退避するなどは難しいです。
すぐに確認したいデータなどは Blob など Spot VM とは別のストレージに置いていくのがよいかと思います。

Scheduled Events についての詳細は以下のリンクを参照ください。
https://docs.microsoft.com/ja-jp/azure/virtual-machines/linux/scheduled-events

Spot VM はすべてのインスタンスで利用できません。
もともと安価な B シリーズなどは使えないようです。

以下のリンクから目安の価格が確認できます。 (Linux の場合の価格です。)
https://azure.microsoft.com/ja-jp/pricing/details/virtual-machines/linux/

3 年の Reserved Instance よりも安いので、現時点で VM を一番安く使うことができます。

Spot VM とは3


実際の価格は Azure ポータルから VM を作成する画面で確認するのが確実です。

SLA はありませんので、検証や開発環境などの用途で使用してください。

最新情報は以下のリンクを参照ください。
[Azure でスポット VM を使用する]


3. Spot VM 使ってみた

Spot VM の作成方法ですが、通常の VM と同じです。

事前にリソースグループと仮想ネットワークを作成しておいてください。

左右にスクロールしてご覧ください。

順番 手順
1 VM の作成
2 Scheduled Events を確認する


1. VM の作成

Azure ポータルより、[すべてのサービス] から [Virtual Machines] 、[追加] を選択します。
以下は普通の VM と変わりません。

VM の作成1



[Azure スポット インスタンス] は [はい] を選択し、[削除の種類] と [削除ポリシー] を選択します。
すると、[サイズ] のところに現在の価格が表示されます。

VM の作成2



[削除の種類] で [価格または容量] を選択すると、価格の上限が設定できます。
現在の価格以上の価格を指定します。
ちなみに、[近くのリージョンの価格を比較する] と選択すると、

VM の作成3



以下のように近辺のリージョン価格が比較できます。
西日本の方が少し安いですね。

VM の作成4


あとは普通の VM と変わりません。
ストレージや仮想ネットワークを選択し、VM を作成します。


2. Scheduled Events を確認する

対象の VM へログインして、以下コマンドを実行します。

curl -H Metadata:true http://169.254.169.254/metadata/scheduledevents?api-version=2017-11-01 | jq .
※ jq コマンドがない場合はインストールしてください。

Scheduled Events を確認する1



Events が空となっていますので、まだ停止はされないようです。

なにかイベントがスケジュールされると以下のような形式で json が返されます。
Spot VM が削除される EventType は Preempt となりますので、もし監視されたい場合は、定期的に監視してみてください。

Scheduled Events を確認する2



4. さいごに

いつ止まるかわからないこと以外は普通の VM として扱うことができます。
停止されるところを確認するために、Spot VM 作成時に、削除ポリシーを [価格または容量] にして、現在の価格 ($0.0204) をそのまま最大価格 ($0.0204) として設定しましたが、1 日中ずっと動き続けていますので、意外と止まらないんだなと感じました。
※ $0.0204 は本ブログ執筆当時の価格です。

検証用途であれば十分な実用性がありそうと言えます。
(本当は停止されるところを確認したかったのですが。。)

3 年予約して利用するより、安く利用できますので、とてもお得と言えます。
ぜひ、一度、Spot VM を利用してみてはいかがでしょうか。

【総合】お問い合わせ

製品・サービスに関するお問い合わせはお気軽にご相談ください

ピックアップ

セミナー情報
クラウドエンジニアブログ
clouXion
メールマガジン登録