Azure CLI を使用して Azure Spot Virtual Machines をデプロイする
適用対象: ✔️ Linux VM ✔️ フレキシブル スケール セット
Azure Spot Virtual Machines を使用すると、大幅にコストを削減して未使用の容量を利用できます。 どの時点でも、Azure で容量の回復が必要になると、Azure インフラストラクチャによって Azure スポット仮想マシンが削除されます。 そのため、Azure Spot Virtual Machines は、バッチ処理ジョブ、開発/テスト環境、大規模なコンピューティング ワークロードなど、中断に対応できるワークロードに最適です。
Azure Spot Virtual Machines の価格は、リージョンと SKU に基づいて変動します。 詳細については、Linux と Windows の VM 価格を参照してください。
VM に対して、1 時間あたりに支払うことができる最大価格を設定するオプションがあります。 Azure スポット仮想マシンの最大価格は、小数点以下最大 5 桁を使用して米ドル (USD) で設定できます。 たとえば、0.98765
の値は、1 時間あたり $0.98765 米ドルの最大価格になります。 最大価格を -1
に設定した場合、VM は価格に基づいて削除されます。 VM の価格は、使用可能な容量とクォータがある限り、現在の Azure スポット仮想マシンの価格または標準 VM の価格のいずれか低い方です。 最大価格の設定の詳細については、Azure Spot Virtual Machines の価格に関するページを参照してください。
Azure CLI を使用して Azure Spot Virtual Machine を作成するプロセスは、クイックスタートの記事で詳しく説明されている内容と同じです。 '--priority Spot' パラメーターを追加し、--eviction-policy
を Deallocate
(既定値) または Delete
に設定して、最大価格または -1
を指定するだけです。
Azure CLI のインストール
Azure Spot Virtual Machines を作成するには、Azure CLI バージョン 2.0.74 以降が実行されている必要があります。 バージョンを確認するには、az --version を実行します。 インストールまたはアップグレードが必要な場合は、Azure CLI のインストールに関するページを参照してください。
az login を使用して Azure にサインインします。
az login
Azure Spot Virtual Machine を作成する
この例では、価格に基づいて削除されない Linux Azure スポット仮想マシンをデプロイする方法を示します。 この VM の割り当てを解除するように削除ポリシーが設定されているため、後で再起動することができます。 VM が削除されるときに VM と基になるディスクを削除する場合は、--eviction-policy
を Delete
に設定します。
az group create -n mySpotGroup -l eastus
az vm create \
--resource-group mySpotGroup \
--name myVM \
--image Ubuntu2204 \
--admin-username azureuser \
--generate-ssh-keys \
--priority Spot \
--max-price -1 \
--eviction-policy Deallocate
VM が作成されたら、クエリを実行して、リソース グループ内のすべての VM の最大請求価格を確認できます。
az vm list \
-g mySpotGroup \
--query '[].{Name:name, MaxPrice:billingProfile.maxPrice}' \
--output table
削除をシミュレートする
REST、PowerShell、または CLI を使用して Azure スポット仮想マシンの削除をシミュレートし、突然の削除に対してアプリケーションがどれほど適切に対応するかをテストすることができます。
ほとんどの場合、アプリケーションの自動テストに役立つ、REST API 仮想マシン - 削除のシミュレートを使用することができます。 REST では、Response Code: 204
はシミュレートされた削除が成功したことを意味します。 シミュレートされた削除とスケジュールされたイベント サービスを組み合わせることで、VM が削除されたときにアプリケーションがどのように対応するかを自動化できます。
スケジュールされた実行中のイベントを確認するには、Azure Friday の「Azure Scheduled Events を使った VM のメンテナンスの準備」をご覧ください。
クイック テスト
シミュレートされた削除の動作を確認するためのクイック テストとして、スケジュールされたイベント サービスに対してクエリを実行し、Azure CLI を使用して削除をシミュレートするとどのようになるかを確認します。
スケジュールされたイベント サービスは、初めてイベントを要求したときに、サービスに対して有効になります。
VM にリモートでログインし、コマンド プロンプトを開きます。
VM のコマンド プロンプトで、次のように入力します。
curl -H Metadata:true http://169.254.169.254/metadata/scheduledevents?api-version=2019-08-01
この最初の応答には最大 2 分かかることがあります。 これ以降は、ほぼ瞬時に出力が表示されます。
(ローカル コンピューターと同様) Azure CLI がインストールされているコンピューターから、az vm simulate-eviction を使用して削除をシミュレートします。 リソース グループ名と VM 名を実際の名前に置き換えます。
az vm simulate-eviction --resource-group mySpotRG --name mySpot
要求が正常に行われた場合、応答の出力は Status: Succeeded
になります。
スポット仮想マシンへのリモート接続にすぐに戻り、スケジュールされたイベントのエンドポイントに対して、もう一度クエリを実行します。 詳細情報が含まれる出力が得られるまで、次のコマンドを繰り返します。
curl -H Metadata:true http://169.254.169.254/metadata/scheduledevents?api-version=2019-08-01
スケジュールされたイベント サービスが削除通知を受け取ると、次の出力のような応答が返されます。
{"DocumentIncarnation":1,"Events":[{"EventId":"A123BC45-1234-5678-AB90-ABCDEF123456","EventStatus":"Scheduled","EventType":"Preempt","ResourceType":"VirtualMachine","Resources":["myspotvm"],"NotBefore":"Tue, 16 Mar 2021 00:58:46 GMT","Description":"","EventSource":"Platform"}]}
"EventType":"Preempt"
、およびリソースが VM リソース "Resources":["myspotvm"]
であることを確認できます。
"NotBefore"
をチェックして、VM の削除の状態を確認することもできます。指定された時刻より前は VM が削除されないため、この時間帯にはアプリケーションを正常に終了できます。
次のステップ
Azure PowerShell、ポータル、またはテンプレートを使用して Azure Spot Virtual Machine を作成することもできます。
Azure Spot Virtual Machine については、Azure retail prices API を使用して現在の価格情報を照会してください。 meterName
と skuName
の両方に Spot
が含まれています。
エラーが発生した場合は、エラー コードを参照してください。