Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Azure Batch bietet Spot virtual machines (VMs), um die Kosten für Batchworkloads zu reduzieren. Spot-VMs ermöglichen neue Arten von Azure Batch-Workloads, indem sie die Nutzung einer großen Menge an Rechenleistung zu niedrigen Kosten ermöglichen.
Spot-VMs nutzen Überschusskapazität in Azure. Die verfügbare Überschusskapazität variiert je nach Faktoren wie VM-Familie, VM-Größe, Region und Tageszeit. Wenn Sie Spot-VMs in Ihren Pools angeben, kann Azure Batch diese Überschusskapazität verwenden, wenn sie verfügbar ist.
Der Kompromiss für die Verwendung von Spot-VMs besteht darin, dass diese virtuellen Computer keine SLA und keine Verfügbarkeitsgarantien haben. Spot-VMs können jederzeit unterbrochen werden, sogar sofort beim Erstellen der VM. Aus diesem Grund eignen sich Spot-VMs am besten für Batch- und asynchrone Verarbeitungslasten, bei denen die Zeit für den Auftragsabschluss flexibel ist und die Arbeit auf viele VMs verteilt wird.
Wenn ein Vorfall auftritt, wird der Spot-Computeknoten ausgeräumt, und alle Arbeiten, die nicht ordnungsgemäß überprüft wurden, gehen verloren. Prüfpunkte sind optional und müssen vom Batch-Endbenutzer implementiert werden. Die laufende Batch-Aufgabe, die aufgrund einer vorzeitigen Beendigung unterbrochen wurde, wird automatisch durch einen anderen Serverknoten erneut zur Ausführung zurückgegeben. Eine vorgreifend angehaltene VM kann später von der Azure-Plattform wiederhergestellt werden, aber die Wiederherstellung wird nur während der ersten 48 Stunden nach der Unterbrechung versucht und eine erfolgreiche Wiederherstellung kann nicht garantiert werden.
Spot-VMs werden im Vergleich zu dedizierten VMs zu einem reduzierten Preis angeboten. Weitere Informationen zu Preisen finden Sie unter Batch-Preisinformationen.
Batch-Unterstützung für Spot-VMs
Azure Batch bietet mehrere Funktionen, mit denen Spot-VMs problemlos verwendet und profitieren können:
- Batch-Pools können sowohl dedizierte VMs als auch Spot-VMs enthalten. Die Anzahl der einzelnen VM-Typen kann beim Erstellen eines Pools angegeben und für einen bestehenden Pool mithilfe der ausdrücklichen Größenänderung oder der automatischen Skalierung jederzeit geändert werden. Die Auftrags- und Aufgabenübermittlung kann unabhängig von den VM-Typen im Pool unverändert bleiben. Sie können einen Pool auch so konfigurieren, dass er vollständig auf Spot-VMs zurückgreift, um Aufträge so kostengünstig wie möglich auszuführen, aber dedizierte VMs hochfährt, wenn die Kapazität unter einen Mindestschwellenwert fällt, damit die Aufträge weiterlaufen.
- Batch-Pools suchen automatisch die gewünschte Anzahl von Spot-VMs. Wenn VMs vorzeitig entfernt werden oder nicht verfügbar sind, versucht Batch, die verlorene Kapazität auszugleichen und das Ziel wieder zu erreichen.
- Wenn Aufgaben unterbrochen werden, erkennt Batch dies und reiht die Aufgaben zur erneuten Ausführung automatisch wieder in eine Warteschlange.
- Spot-VMs haben ein separates vCPU-Kontingent, das sich von dem für dedizierte VMs unterscheidet. Die Quote für Spot-VMs ist höher als die Quote für dedizierte VMs, da Spot-VMs weniger kosten. Weitere Informationen finden Sie im Artikel Batch-Dienst – Kontingente und Limits.
Überlegungen und Anwendungsfälle
Viele Batch-Workloads eignen sich gut für Spot-VMs. Ziehen Sie die Verwendung von Spot-VMs in Betracht, wenn Aufträge in viele parallele Aufgaben aufgeteilt sind, oder wenn Sie über viele Aufträge verfügen, die aufskaliert und auf viele VMs verteilt sind.
Einige Beispiele für Batchverarbeitungs-Anwendungsfälle, die sich gut für den Einsatz von Spot-VMs eignen, sind:
- Entwicklung und Tests: Insbesondere bei der Entwicklung von umfangreichen Lösungen lassen sich beträchtliche Einsparungen realisieren. Alle Arten von Tests können profitieren, aber groß angelegte Lasttests und Regressionstests sind besonders sinnvoll.
- Ergänzung der On-Demand-Kapazität: Spot-VMs können zur Ergänzung regulärer dedizierter VMs verwendet werden. Wenn sie verfügbar sind, können Aufträge skaliert werden, sodass diese schneller und günstiger abgeschlossen werden. Wenn sie nicht verfügbar sind, ist weiterhin die Baseline der dedizierten VMs verfügbar.
- Flexible Auftragsausführungszeit: Bei Aufträgen mit flexibler Fertigstellungsfrist können potenzielle Kapazitätseinbußen toleriert werden. Mit dem Hinzufügen von Spot-VMs werden Aufträge jedoch häufig schneller und kostengünstiger ausgeführt.
Batch-Pools können auf verschiedene Weise für die Verwendung von Spot-VMs konfiguriert werden:
- Ein Pool kann nur Spot-VMs verwenden. In diesem Fall stellt Batch alle vorgezogenen Kapazitäten wieder her, sobald verfügbar. Diese Konfiguration stellt die günstigste Möglichkeit zum Ausführen von Aufträgen dar.
- Spot-VMs können mit einer festen Basis dedizierter VMs verwendet werden. Die feste Anzahl dedizierter VMs stellt sicher, dass stets eine Kapazität zum Fortsetzen der Verarbeitung eines Auftrags verbleibt.
- Ein Pool kann eine dynamische Mischung aus dedizierten und Spot-VMs verwenden, so dass die billigeren Spot-VMs nur verwendet werden, wenn sie verfügbar sind, während die vollpreisigen dedizierten VMs bei Bedarf hochskaliert werden. Durch eine solche Konfiguration bleibt eine Mindestmenge an Kapazität für die fortlaufende Verarbeitung der Aufträge verfügbar.
Beachten Sie bei der Planung des Einsatzes von Spot-VMs die folgenden Punkte:
- Um den Einsatz von Überkapazitäten in Azure zu maximieren, können geeignete Arbeitsplätze verkleinert werden.
- Gelegentlich sind die VMs möglicherweise nicht verfügbar oder werden vorzeitig entfernt. Dies führt zu einer verringerten Kapazität für Aufträge und damit möglicherweise zu Unterbrechungen und einem erneutem Ausführen von Aufgaben.
- Aufgaben mit kürzeren Ausführungszeiten funktionieren am besten mit Spot-VMs. Aufträge mit längeren Aufgaben werden möglicherweise durch Unterbrechungen stärker beeinträchtigt. Wenn Aufgaben mit langer Ausführungsdauer Prüfpunkte implementieren, um den Fortschritt im Laufe der Ausführung zu speichern, werden diese Auswirkungen möglicherweise reduziert.
- Zeitintensive MPI-Aufträge, die mehrere VMs nutzen, eignen sich nicht gut für Spot-VMs, da eine vorzeitig entfernte VM dazu führen kann, dass der gesamte Auftrag erneut ausgeführt werden muss.
- Spot-Knoten können als unbrauchbar markiert werden, wenn die Regeln der Netzwerksicherheitsgruppe (NSG) falsch konfiguriert sind.
Erstellen und Verwalten von Pools mit Spot-VMs
Ein Batch-Pool kann sowohl dedizierte als auch Spot-VMs (auch als Rechenknoten bezeichnet) enthalten. Sie können die Zielanzahl der Rechenknoten sowohl für dedizierte als auch für Spot-VMs festlegen. Die Zielanzahl der Knoten gibt die Anzahl von VMs an, die im Pool vorhanden sein sollen.
Spot-VMs können gelegentlich vorzeitig entfernt werden. Wenn es zu einer vorzeitigen Entfernung kommt, werden Aufgaben, die auf den vorzeitig entfernten Knoten-VMs ausgeführt wurden, nochmals in die Warteschlange gestellt und bei wieder vorhandener Kapazität erneut ausgeführt. Batch führt außerdem die folgenden Verhaltensweisen aus:
- Der Status der preemptierten VMs wird in Preempted geändert.
- Die VM wird effektiv gelöscht, sodass alle auf der VM lokal gespeicherten Daten verloren gehen.
- Ein Auflistungsvorgang von Knoten im Pool gibt weiterhin die vorzeitig entfernten Knoten zurück.
- Der Pool versucht ständig, die angestrebte Anzahl der verfügbaren Spot-Knoten zu erreichen. Wenn Ersatzkapazität gefunden wird, behalten die Knoten ihre IDs bei, werden jedoch erneut initialisiert und durchlaufen wieder die Zustände Wird erstellt und Wird gestartet, bevor sie zum Planen von Aufgaben verfügbar sind.
- Unterbrechungsanzahlen sind als Metrik im Azure-Portal verfügbar.
Azure Batch SDK
Im folgenden Beispiel wird ein Pool mit Azure virtuellen Computern erstellt, in diesem Fall Linux-VMs mit einem Ziel von 5 dedizierten VMs und 20 Spot-VMs:
ImageReference imageRef = new ImageReference(
publisher: "Canonical",
offer: "ubuntu-24_04-lts",
sku: "server",
version: "latest");
// Create the pool
VirtualMachineConfiguration virtualMachineConfiguration =
new VirtualMachineConfiguration("batch.node.ubuntu 24.04", imageRef);
pool = batchClient.PoolOperations.CreatePool(
poolId: "vmpool",
targetDedicatedComputeNodes: 5,
targetLowPriorityComputeNodes: 20,
virtualMachineSize: "Standard_D4s_v3",
virtualMachineConfiguration: virtualMachineConfiguration);
Sie können die aktuelle Anzahl der Knoten sowohl für dedizierte als auch für Spot-VMs abrufen:
int? numDedicated = pool1.CurrentDedicatedComputeNodes;
int? numLowPri = pool1.CurrentLowPriorityComputeNodes;
Pool-Knoten haben eine Eigenschaft, die angibt, ob der Knoten eine dedizierte oder eine Spot-VM ist:
bool? isNodeDedicated = poolNode.IsDedicated;
Wie bei Pools, die nur aus dedizierten VMs bestehen, ist es möglich, einen Pool mit Spot-VMs durch Aufrufen der Resize-Methode oder durch Verwendung der Autoskalierung zu skalieren.
Der Vorgang zum Ändern der Poolgröße nimmt einen zweiten optionalen Parameter entgegen, der den Wert von targetLowPriorityNodes aktualisiert:
pool.Resize(targetDedicatedComputeNodes: 0, targetLowPriorityComputeNodes: 25);
Azure CLI
Erstellen eines neuen Pools mit Spotinstanzen:
az batch pool create \
--id "vmpool" \
--vm-size "Standard_D4s_v3" \
--target-dedicated-nodes 5 \
--target-low-priority-nodes 20 \
--enable-inter-node-communication false \
--image "Canonical:ubuntu-24_04-lts:server" \
--node-agent-sku-id "batch.node.ubuntu 24.04" \
--account-name <your-batch-account-name> \
--account-endpoint "https://<your-batch-account-name>.<region>.batch.azure.com"
Skalieren des vorhandenen Pools mit Spot-Instanzen:
az batch pool resize \
--pool-id <existing-pool-id> \
--target-dedicated-nodes 5 \
--target-low-priority-nodes 20 \
--account-name <your-batch-account-name> \
--account-endpoint "https://<your-batch-account-name>.<region>.batch.azure.com"
Überprüfen des Poolstatus und der Knotenzuweisung
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}"
Azure PowerShell
Pool mit Spotinstanzen erstellen:
New-AzBatchPool `
-Id "vmpool" `
-VirtualMachineSize "Standard_D4s_v3" `
-TargetDedicatedComputeNodes 5 `
-TargetLowPriorityComputeNodes 20 `
-VirtualMachineImageId "/subscriptions/{subscription}/resourceGroups/{rg}/providers/Microsoft.Compute/images/{image}" `
-BatchContext $context
Überprüfen mit PowerShell:
$pool = Get-AzBatchPool -Id "vmpool" -BatchContext $context
$pool | Select-Object Id, VmSize, @{Name="SpotNodes";Expression={$_.TargetLowPriorityComputeNodes}}, State
Azure Portal
Wählen Sie im Azure-Portal das Batchkonto aus, und zeigen Sie einen vorhandenen Pool an, oder erstellen Sie einen neuen Pool.
Wählen Sie unter Skalieren entweder Ziel für dedizierte Knoten oder Ziel für Spot-Knoten/Knoten mit niedriger Priorität aus.
Wählen Sie für einen vorhandenen Pool den Pool aus, und wählen Sie dann "Skalieren " aus, um die Anzahl der erforderlichen Spotknoten zu aktualisieren.
Wählen Sie "Speichern" aus.
Automatische Skalierung mit Spot-VMs
Neben dem direkten Festlegen der Anzahl der Ziel-VM können Sie optional eine Autoskalenformel für Ihren Pool definieren. Die Formel für die automatische Pool-Skalierung unterstützt Spot-VMs wie folgt:
- Den Wert der dienstseitig definierten Variable
$TargetLowPriorityNodeskönnen Sie abrufen oder festlegen. - Den Wert der vom Dienst definierten Variable
$CurrentLowPriorityNodeskönnen Sie abrufen. - Den Wert der vom Dienst definierten Variable
$PreemptedNodeCountkönnen Sie abrufen. Diese Variable gibt die Anzahl der Knoten mit dem Status „Vorzeitig entfernt“ zurück und ermöglicht Ihnen, die Anzahl der dedizierten Knoten abhängig von der Anzahl der nicht verfügbaren vorzeitig entfernten Knoten hoch- oder herunterzuskalieren.
Weitere Informationen finden Sie in der Batch-Autoskalenanleitung.
Konfigurieren von Aufträgen und Aufgaben
Aufträge und Aufgaben erfordern möglicherweise eine zusätzliche Konfiguration für Spotknoten:
- Die
JobManagerTask-Eigenschaft eines Auftrags besitzt eineAllowLowPriorityNode-Eigenschaft. Wenn diese Eigenschaft wahr ist, kann die Jobmanager-Aufgabe entweder auf einem dedizierten oder einem Spot-Knoten geplant werden. Wenn diese Eigenschaft auf FALSE festgelegt ist, wird die Auftrags-Manager-Aufgabe nur auf einem dedizierten Knoten geplant. - Die
AZ_BATCH_NODE_IS_DEDICATEDUmgebungsvariable steht einer Aufgabenanwendung zur Verfügung, damit sie feststellen kann, ob sie auf einem Spot- oder einem dedizierten Knoten läuft.
Anzeigen von Metriken für Spot-VMs
Neue Metriken sind im Azure-Portal für Spotknoten verfügbar. Diese Metriken sind:
- Anzahl der Knoten mit niedriger Priorität
- Anzahl von Kernen mit niedriger Priorität
- Anzahl der vorzeitig entfernten Knoten
So zeigen Sie diese Metriken im Azure-Portal an:
- Navigieren Sie im Azure-Portal zu Ihrem Batchkonto.
- Wählen Sie Metriken im Abschnitt Überwachung aus.
- Wählen Sie die gewünschten Metriken aus der Liste Metriken aus.
Einschränkungen
- Spot-VMs in Batch unterstützen nicht die Festlegung eines Höchstpreises und keine preisbasierte Räumungen. Sie können nur aus Kapazitätsgründen geräumt werden.
- Spot-VMs sind für einige Clouds, VM-Größen und Abonnementangebotstypen nicht verfügbar. Weitere Informationen zu Spot-VM-Einschränkungen.
- Derzeit werden kurzlebige Betriebssystemdatenträger aufgrund der dienstseitig verwalteten Entfernungsrichtlinie Stop-Deallocate nicht mit Spot-VMs unterstützt.
Nächste Schritte
- Erfahren Sie mehr über den Workflow des Batch-Diensts und primäre Ressourcen wie Pools, Knoten, Aufträge und Aufgaben.
- Informieren Sie sich über die Batch-APIs und Tools, die für die Erstellung von Batch-Lösungen verfügbar sind.
- Weitere Informationen zu Spot-VMs in Azure, einschließlich der Anzeige historischer Preise und Räumungsraten, finden Sie unter Spot Virtual Machines.