仮想マシン スケール セット用の Azure Spot Virtual Machines
スケール セットで Azure Spot Virtual Machines を使用すると、大幅にコストを削減して未使用の容量を利用できます。 どの時点でも、Azure で容量の回復が必要になると、Azure インフラストラクチャによって Azure Spot Virtual Machine インスタンスが削除されます。 したがって、Azure Spot Virtual Machine インスタンスは、バッチ処理ジョブ、開発/テスト環境、大規模なコンピューティング ワークロードなど、中断に対応できるワークロードに最適です。
利用可能な容量は、サイズ、リージョン、時刻などによって異なります。 スケール セットに Azure Spot Virtual Machine インスタンスをデプロイする場合、利用可能な容量がある場合にのみ Azure によってインスタンスが割り当てられますが、これらのインスタンスには SLA がありません。 Azure スポット仮想マシン スケール セットは 1 つの障害ドメインにデプロイされ、高可用性の保証はありません。
制限事項
次のサイズは、Azure Spot Virtual Machines ではサポートされていません。
- B シリーズ
- 任意のサイズのキャンペーン バージョン (Dv2、NV、NC、H キャンペーン サイズなど)
Azure Spot Virtual Machine は、21Vianet によって運営される Microsoft Azure を除き、任意のリージョンにデプロイできます。
現在サポートされているオファーの種類は次のとおりです。
- Enterprise Agreement
- 従量課金制プラン コード ( 003P)
- スポンサー (0036P および 0136P)
- クラウド サービス プロバイダー (CSP) については、パートナー センターを参照するか、パートナーに直接お問い合わせください。
価格
Azure Spot Virtual Machine インスタンスの価格は、リージョンと SKU に基づいて変動します。 詳細については、Linux および Windows での価格を参照してください。
変動する価格に対して、小数点以下最大 5 桁を使用して、最大価格を米ドル (USD) で設定することができます。 たとえば、0.98765
の値は、1 時間あたり $0.98765 米ドルの最大価格になります。 最大価格を -1
に設定した場合、インスタンスは価格に基づいて排除されません。 インスタンスの価格は、使用可能な容量とクォータがある限り、現在の Azure Spot Virtual Machine の価格または標準インスタンスの価格のいずれか低い方になります。
削除ポリシー
Azure Spot Virtual Machines を使用してスケール セットを作成するときは、削除ポリシーを [割り当て解除] (既定値) または [削除] に設定できます。
[Deallocate](割り当て解除) ポリシーでは、排除されたインスタンスは [stopped-deallocated](停止 - 割り当て解除) 状態に移行し、排除されたインスタンスはデプロイし直すことができます。 ただし、割り当てが成功する保証はありません。 割り当てを解除された VM は、スケール セット インスタンスのクォータに対してカウントされ、基になるディスクの料金が課金されます。
それらが削除されたときにインスタンスを削除する場合は、削除ポリシーを [削除] に設定します。 排除ポリシーを削除に設定した場合、スケール セット インスタンスのカウント プロパティを増やすことで、新しい VM を作成できます。 削除された VM は基になるディスクと共に削除されるので、ストレージに対して課金されることはありません。 また、スケール セットの自動スケーリング機能を使って、削除された VM の自動的な補正を試みることはできますが、割り当てが成功するという保証はありません。 ディスクのコストとクォータ制限への到達を回避するために、削除ポリシーを [削除] に設定しているときだけ、Azure スポット仮想マシン スケール セットで自動スケーリング機能を使うことをお勧めします。
ユーザーは、Azure Scheduled Events を通じて VM 内通知を受け取ることができます。 これにより、VM が削除される場合に通知され、削除される前に、30 秒でジョブを完了しタスクのシャットダウンを実行します。
削除履歴
ポータルでは、あるリージョンの価格と削除率の履歴をサイズ別に表示できます。 [View pricing history and compare prices in nearby regions](価格履歴を表示し、近くのリージョンの価格を比較する) を選択すると、特定のサイズに対して価格のテーブルまたはグラフが表示されます。 次の画像の価格と削除率は単なる例です。
グラフ:
テーブル:
試行と復元
このプラットフォーム レベルの機能では、AI を使用して、ターゲットのインスタンス数を維持するために、スケール セット内の削除された Azure Spot Virtual Machine のインスタンスの復元を自動的に試行します。
試行と復元のメリット:
- 容量が原因で削除された Azure スポット仮想マシンの復元を試行します。
- 復元された Azure スポット仮想マシンは、容量が原因で削除がトリガーされる確率が低くなることで、より長い期間実行されることが期待されます。
- Azure スポット仮想マシンの有効期間が長くなることで、ワークロードの実行時間が長くなります。
- 従量課金制 VM 用に既に存在するターゲット数を維持する機能と同様に、Azure Spot Virtual Machines で Virtual Machine Scale Sets のターゲット数を維持するのを支援します。
試行と復元は、自動スケーリングを使用するスケール セットでは無効になっています。 スケール セット内の VM の数は、自動スケーリング規則によって決まります。
配置グループ
配置グループは、Azure 可用性セットに似た構造で、独自の障害ドメインとアップグレード ドメインが備わっています。 既定では、スケール セットは、最大サイズが 100 個の VM である 1 つの配置グループで構成されます。 singlePlacementGroup
というスケール セット プロパティが false に設定されている場合、そのスケール セットは、複数の配置グループで構成することができ、0 ~ 1,000 個の VM が含まれます。
重要
HPC で Infiniband を使用している場合を除き、リージョンまたはゾーン全体でのスケーリングを向上させるため、スケール セットのプロパティ singlePlacementGroup
を false に設定して複数の配置グループを有効にすることを強くお勧めします。
スケール セットへの Azure Spot Virtual Machines のデプロイ
スケール セットに Azure Spot Virtual Machines をデプロイするには、新しい Priority フラグを Spot に設定します。 スケール セット内のすべての VM がスポットに設定されます。 Azure Spot Virtual Machines でスケール セットを作成するには、次のいずれかの方法を使います。
ポータル
Azure Spot Virtual Machines を使用するスケール セットを作成するプロセスは、使用の開始に関する記事で詳しく説明されているものと同じです。 スケール セットをデプロイするときに、Spot フラグ、削除の種類、削除ポリシーと、必要に応じて [インスタンスの復元を試みる] の設定を選択できます。
Azure CLI
重要
2023 年 11 月以降、PowerShell と Azure CLI を使用して作成された VM スケール セットは、オーケストレーション モードが指定されていない場合、既定でフレキシブル オーケストレーション モードになります。 この変更の詳細と実行する必要があるアクションについては、「VMSS PowerShell/CLI のお客様向けの重大な変更 - Microsoft コミュニティ ハブ」を参照してください
Azure Spot Virtual Machines を使用するスケール セットを作成するプロセスは、使用の開始に関する記事で詳しく説明されているものと同じです。 "--Priority Spot" を追加し、--max-price
を追加するだけです。 この例では、-1
を --max-price
に使用して、インスタンスが価格に基づいて削除されないようにします。
az vmss create \
--resource-group myResourceGroup \
--name myScaleSet \
--image Ubuntu2204 \
--orchestration-mode Flexible \
--single-placement-group false \
--admin-username azureuser \
--generate-ssh-keys \
--priority Spot \
--eviction-policy Deallocate \
--max-price -1 \
--enable-spot-restore True \
--spot-restore-timeout PT1H
PowerShell
重要
2023 年 11 月以降、PowerShell と Azure CLI を使用して作成された VM スケール セットは、オーケストレーション モードが指定されていない場合、既定でフレキシブル オーケストレーション モードになります。 この変更の詳細と実行する必要があるアクションについては、「VMSS PowerShell/CLI のお客様向けの重大な変更 - Microsoft コミュニティ ハブ」を参照してください
Azure Spot Virtual Machines を使用するスケール セットを作成するプロセスは、使用の開始に関する記事で詳しく説明されているものと同じです。
"-Priority Spot" を追加し、New-AzVmssConfig に -max-price
を指定するだけです。
$vmssConfig = New-AzVmssConfig `
-Location "East US 2" `
-SkuCapacity 2 `
-OrchestrationMode "Flexible" `
-SkuName "Standard_DS2" `
-Priority "Spot" `
-max-price -1 `
-EnableSpotRestore `
-SpotRestoreTimeout 60 `
-EvictionPolicy delete
Resource Manager テンプレート
Azure Spot Virtual Machines を使用するスケール セットを作成するプロセスは、Linux または Windows での使用の開始に関する記事で詳しく説明されているものと同じです。
Azure Spot Virtual Machine テンプレートのデプロイの場合は、"apiVersion": "2019-03-01"
以降を使用してください。
テンプレートの "virtualMachineProfile":
セクションに priority
、evictionPolicy
、billingProfile
、spotRestoryPolicy
プロパティを追加し、"Microsoft.Compute/virtualMachineScaleSets"
セクションに "singlePlacementGroup": false,
プロパティを追加します。
{
"type": "Microsoft.Compute/virtualMachineScaleSets",
},
"properties": {
"singlePlacementGroup": false,
}
"virtualMachineProfile": {
"priority": "Spot",
"evictionPolicy": "Deallocate",
"billingProfile": {
"maxPrice": -1
},
"spotRestorePolicy": {
"enabled": "bool",
"restoreTimeout": "string"
},
},
無効にしたインスタンスを削除するには、evictionPolicy
パラメーターを Delete
に変更します。
削除をシミュレートする
Azure Spot Virtual Machine の削除をシミュレートすると、突然の削除に対してアプリケーションがどの程度適切に対応するかをテストすることができます。
次の情報をお客様の情報に置き換えてください。
subscriptionId
resourceGroupName
vmName
POST https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/virtualMachines/{vmName}/simulateEviction?api-version=2020-06-01
Response Code: 204
は、シミュレートされた削除が成功したことを意味します。
詳細については、削除通知のシミュレーション テストに関するセクションを参照してください。
よく寄せられる質問
Q: 作成後、Azure Spot Virtual Machine インスタンスは標準のインスタンスと同じになりますか?
A: はい。ただし、Azure Spot Virtual Machines に対する SLA はなく、いつでも無効化される可能性があります。
Q: 排除された後も容量が必要な場合はどうすればよいですか?
A: 容量がすぐに必要な場合は、Azure Spot Virtual Machines ではなく、標準の VM を使用することをお勧めします。
Q: Azure Spot Virtual Machine のクォータはどのように管理されますか?
A: Azure Spot Virtual Machine インスタンスと標準のインスタンスは、別々のクォータ プールを持ちます。 Azure Spot Virtual Machine クォータは、VM とスケール セット インスタンスの間で共有されます。 詳細については、「Azure サブスクリプションとサービスの制限、クォータ、制約」をご覧ください。
Q: Azure Spot Virtual Machine に追加のクォータを要求することはできますか?
A: はい。標準のクォータ要求プロセスを通じて、Azure Spot Virtual Machines のクォータを増やす要求を送信することができます。
Q: 既存のスケール セットを Azure スポット仮想マシン スケール セットに変換できますか?
A: できません。Spot
フラグの設定は、作成時にのみ行うことができます。
質問: 優先順位の低いスケール セットに low
を使用していた場合、代わりに Spot
を使用する必要がありますか。
A: 現時点では low
と Spot
の両方が機能しますが、Spot
の使用に移行し始める必要があります。
Q: 通常の VM と Azure Spot Virtual Machines の両方を使用してスケール セットを作成できますか?
A: できません。スケール セットが複数の異なる優先順位をサポートすることはできません。
Q: Azure スポット仮想マシン スケール セットで自動スケーリングを使用できますか?
A: はい、できます。お使いの Azure スポット仮想マシン スケール セットに自動スケーリング規則を設定できます。 VM が削除された場合、自動スケーリングで新しい Azure Spot Virtual Machines の作成を試みることができます。 ただし、この容量が保証されるわけではないことを忘れないでください。
Q: 自動スケールは両方の排除ポリシー (割り当て解除と削除) で機能しますか?
A: はい。ただし、自動スケールを使用する場合は排除ポリシーを削除に設定することをお勧めします。 これは、割り当てを解除されたインスタンスが、スケール セットに対する容量数を基にカウントされるためです。 自動スケールを使用すると、インスタンスが割り当て解除されて排除されるため、短時間に目標インスタンス数に達する可能性があります。 また、スケーリング操作はスポット削除の影響を受けることがあります。 たとえば、仮想マシン スケール セット インスタンスは、スケーリング操作中の複数のスポット削除に起因し、設定されている最小カウントを下回ることがあります。
Q: どこで質問を投稿できますか。
A: Q&A で質問を投稿し、azure-spot
のタグを付けることができます。
次のステップ
価格について詳しくは、仮想マシン スケール セットの価格のページをご覧ください。