Azure Batch プール内の低優先度コンピューティング ノードを割り当てる機能は2025 年 9 月 30 日に廃止されます。 低優先度コンピューティング ノードを含む Batch プールをスポット インスタンスに基づくコンピューティング ノードに移行する方法について説明します。
機能について
現在、Batch プール構成の一部として、Batch マネージド プール割り当ての Batch アカウントに対する低優先度コンピューティング ノードのターゲット数を指定できます。 ユーザー サブスクリプション プール割り当ての Batch アカウントでは、スポット コンピューティング ノードのターゲット数を指定できます。 どちらの場合も、これらのコンピューティング リソースは予備の容量から割り当てられ、専用のオンデマンド VM と比較して割り引きされた料金で提供されます。
使用可能な未使用容量は、VM ファミリ、VM サイズ、リージョン、時刻などの要因に応じて変化します。 専用容量とは異なり、これらの低優先度またはスポットの VM は、Azure によっていつでも再利用できます。 そのため、低優先度とスポットの VM は、通常、中断の影響を受けやすい、またはコスト低減を見込んだ厳格な完了期間を必要としない Batch ワークロードに使用できます。
機能のサポート終了
廃止されるのは、Batch の低優先度コンピューティング ノードのみです。 スポット コンピューティング ノードは引き続きサポートされ、GA オファリングになっていて、この非推奨の対象ではありません。 低優先度コンピューティング ノードは 2025 年 9 月 30 日に廃止されます。 その日を過ぎると、Batch の既存の低優先度プールは使用できなくなる可能性があり、ターゲットの低優先度ノード数にシーク バックしようとすると失敗し、低優先度コンピューティング ノードを含む新しいプールはプロビジョニングできなくなります。
代替手段: Batch プールで Azure スポット ベースのコンピューティング ノードを使用する
2021 年 12 月に、Azure Batch では、Batch でのスポットベースのコンピューティング ノードの提供を開始しました。 低優先度 VM と同様に、スポット インスタンスを使用すると割引価格で予備の容量を取得でき、引き換えに VM がプリエンプションされる可能性があります。 プリエンプションが発生すると、スポット コンピューティング ノードは削除され、適切にチェックポイント処理されなかったすべての作業は失われます。 チェックポイント処理は省略可能であり、実装するかどうかは Batch エンド ユーザーが決定します。 プリエンプションのために中断された実行中の Batch タスクは、別のコンピューティング ノードによって実行されるように自動的にキューに再登録されます。 さらに、Azure Batch では、プールで指定されたターゲットのスポット ノード数へのシーク バックを自動的に試みます。
移行中の変更点
優先順位の低い VM からスポット VM に移行する場合、次のプール構成プロパティが影響を受けます。
-
プール割り当てモード:
UserSubscriptionする必要があります (スポット VM はBatchServiceモードでは使用できません) -
VM の構成:
VirtualMachineConfigurationする必要があります (CloudServiceConfigurationではサポートされていません) -
ターゲット ノードのプロパティ:
-
targetLowPriorityNodes→targetSpotNodes - プールの価格モデルが低優先度からスポット価格に変更される
- 削除ポリシーが構成可能になる (削除または割り当て解除)
-
Batch での低優先度とスポットのそれぞれのオファリング間の詳細な内訳を参照してください。
低優先度コンピューティング ノードを含む Batch プールを移行するかスポット インスタンスを含む Batch プールを作成する
[前提条件]
- ユーザー サブスクリプション プール割り当てモードの Batch アカウントを使用していることを確認します。
- プールで
VirtualMachineConfigurationを使用していることを確認します (スポット VM はCloudServiceConfigurationではサポートされていません)。
オプション 1: Azure CLI の移行 (自動化に推奨)
スポット インスタンスを使用して新しいプールを作成します。
az batch pool create \
--id "spot-pool-001" \
--vm-size "Standard_D2s_v3" \
--target-low-priority-nodes 5 \
--enable-inter-node-communication false \
--image "Canonical:0001-com-ubuntu-server-focal:20_04-lts-gen2" \
--node-agent-sku-id "batch.node.ubuntu 20.04" \
--account-name <your-batch-account-name> \
--account-endpoint "https://<your-batch-account-name>.<region>.batch.azure.com"
スポット インスタンスを使用するように既存のプールをスケーリングする:
az batch pool resize \
--pool-id <existing-pool-id> \
--target-dedicated-nodes 0 \
--target-low-priority-nodes 5 \
--account-name <your-batch-account-name> \
--account-endpoint "https://<your-batch-account-name>.<region>.batch.azure.com"
オプション 2: Azure PowerShell (代替の自動化方法)
スポット インスタンスを使用してプールを作成する:
New-AzBatchPool `
-Id "spot-pool-001" `
-VirtualMachineSize "Standard_D2s_v3" `
-TargetLowPriorityComputeNodes 5 `
-VirtualMachineImageId "/subscriptions/{subscription}/resourceGroups/{rg}/providers/Microsoft.Compute/images/{image}" `
-BatchContext $context
PowerShell を使用して検証する:
$pool = Get-AzBatchPool -Id "spot-pool-001" -BatchContext $context
$pool | Select-Object Id, VmSize, @{Name="SpotNodes";Expression={$_.TargetLowPriorityComputeNodes}}, State
オプション 3: Azure portal (UI メソッド)
Azure portal で、Batch アカウントを選択し、既存のプールを表示するか新しいプールを作成します。
[スケーリング] で、[ターゲットの専用ノード数] または [ターゲットのスポットまたは低優先度ノード] を選択します。
既存のプールの場合、[スケーリング] を選択して、スケジュールされたジョブに基づいて必要なスポット ノードの数を更新します。
[保存] を選択します。
移行を検証する
移行後にプールの構成を確認します。
az batch pool show \
--account-name <your-batch-account-name> \
--account-endpoint "https://<your-batch-account-name>.<region>.batch.azure.com" \
--pool-id <your-pool-id> \
--query "{PoolID:id, VMSize:vmSize, SpotNodes:scaleSettings.targetLowPriorityNodes, AllocationMode:poolAllocationMode, VMConfig:virtualMachineConfiguration.nodeAgentSkuId}"
正常な出力が予想されます。
{
"AllocationMode": "UserSubscription",
"PoolID": "spot-pool-001",
"SpotNodes": 5,
"VMConfig": "batch.node.ubuntu 20.04",
"VMSize": "Standard_D2s_v3"
}
プールの状態とノードの割り当てを確認します。
az batch pool show \
--account-name <your-batch-account-name> \
--account-endpoint "https://<your-batch-account-name>.<region>.batch.azure.com" \
--pool-id <your-pool-id> \
--query "{State:state, CurrentSpotNodes:currentLowPriorityNodes, TargetSpotNodes:scaleSettings.targetLowPriorityNodes, ResizeErrors:resizeErrors}"
正常なプールの予想される出力:
{
"CurrentSpotNodes": 5,
"ResizeErrors": null,
"State": "steady",
"TargetSpotNodes": 5
}
トラブルシューティング: 問題を示す内容
-
状態:
"resizing"(延長期間) は割り当ての問題を示します - ResizeErrors: null 以外の値は、容量またはクォータの問題を示します
- CurrentSpotNodes<TargetSpotNodes: プールがターゲット容量に達していません
オートメーションの構成変数
自動化されたソリューションを構築するチームの場合、主な構成プロパティとその値は次のとおりです。
REST API のプロパティ
-
プール割り当てモード:
poolAllocationMode: "UserSubscription" -
VM 構成の種類:
virtualMachineConfiguration(必須) -
ターゲット スポット ノード:
targetLowPriorityNodes: <number> -
削除ポリシー:
virtualMachineConfiguration.spotPolicy.evictionPolicy: "delete"または"deallocate"
ARM テンプレート変数
{
"poolAllocationMode": "UserSubscription",
"scaleSettings": {
"targetDedicatedNodes": 0,
"targetLowPriorityNodes": 5
},
"virtualMachineConfiguration": {
"imageReference": {...},
"nodeAgentSkuId": "batch.node.ubuntu 20.04"
}
}
Terraform の構成
resource "azurerm_batch_pool" "spot_pool" {
pool_allocation_mode = "UserSubscription"
scale_settings {
target_dedicated_nodes = 0
target_low_priority_nodes = 5
}
virtual_machine_configuration {
image_reference {...}
node_agent_sku_id = "batch.node.ubuntu 20.04"
}
}
FAQ
ユーザー サブスクリプション プール割り当ての Batch アカウントはどのように作成しますか?
ユーザー サブスクリプション プール割り当てモードで新しい Batch アカウントを作成するには、クイックスタートを参照してください。
スポット VM は Batch マネージド プール割り当てアカウントで使用できますか?
いいえ。 スポット VM は、ユーザー サブスクリプション プール割り当ての Batch アカウントでのみ使用できます。
スポット インスタンスは
CloudServiceConfigurationプールで使用できますか?いいえ。 スポット インスタンスは
VirtualMachineConfigurationプールでのみ使用できます。CloudServiceConfigurationプールは、低優先度プールの前に廃止されます。 その前に、VirtualMachineConfigurationプールとユーザー サブスクリプション プール割り当ての Batch アカウントに移行することをお勧めします。スポット インスタンスの価格と削除ポリシーは何ですか? 価格履歴と削除レートを表示できますか?
正解です。 Azure portal では、あるリージョンの価格と削除率の履歴をサイズ別に表示できます。
スポット VM の使用の詳細については、スポット仮想マシンに関する記事を参照してください。
Batch アカウント間で自分のクォータを転送できますか?
現時点では、Batch アカウント間でクォータを転送することはできません。
次のステップ
オファリング間の違い、制限事項、デプロイの例の詳細については、Batch のスポット コンピューティング インスタンスに関するガイドを参照してください。