Sdílet prostřednictvím


Nasazení spotových virtuálních počítačů Azure pomocí Azure PowerShellu

Platí pro: ✔️ Flexibilní škálovací sady virtuálních ✔️ počítačů s Windows virtuálních počítačů s Linuxem ✔️

Použití spotových virtuálních počítačů Azure vám umožňuje využít výhod naší nevyužité kapacity za významné úspory nákladů. V každém okamžiku, kdy Azure potřebuje kapacitu zpět, infrastruktura Azure vyřadí spotové virtuální počítače Azure. Proto jsou spotové virtuální počítače Azure skvělé pro úlohy, které dokážou zvládnout přerušení, jako jsou úlohy dávkového zpracování, vývojové/testovací prostředí, velké výpočetní úlohy a další.

Ceny spotových virtuálních počítačů Azure jsou proměnné na základě oblasti a skladové položky. Další informace najdete v tématu Ceny virtuálních počítačů pro Linux a Windows. Další informace o nastavení maximální ceny najdete v tématu Azure Spot Virtual Machines – ceny.

Pro virtuální počítač máte možnost nastavit maximální cenu, kterou jste ochotni zaplatit za hodinu. Maximální cena spotového virtuálního počítače Azure se dá nastavit v amerických dolarech (USD), a to až na 5 desetinných míst. Například hodnota 0.98765by byla maximální cena 0,98765 USD za hodinu. Pokud nastavíte maximální cenu -1, virtuální počítač se nevyřadí na základě ceny. Cena virtuálního počítače bude aktuální cena za spot nebo cenu standardního virtuálního počítače, která je nižší, pokud je k dispozici kapacita a kvóta.

Vytvoření virtuálního počítače

Vytvořte spotVM pomocí rutiny New-AzVmConfig a vytvořte konfiguraci. Zahrňte -Priority Spot a nastavte -MaxPrice jednu z těchto akcí:

  • -1 proto se virtuální počítač nevyřadí na základě ceny.
  • a dollar amount, up to 5 digits. Například znamená, -MaxPrice .98765 že virtuální počítač bude uvolněn, jakmile cena spotového virtuálního počítače překročí přibližně 98765 USD za hodinu.

Tento příklad vytvoří spotový virtuální počítač, který nebude uvolněn na základě cen (pouze v případě, že Azure kapacitu potřebuje zpět). Zásada vyřazení je nastavená na uvolnění virtuálního počítače, aby bylo možné ho později restartovat. Pokud chcete odstranit virtuální počítač a základní disk při vyřazení virtuálního počítače, nastavte na Delete hodnotu -EvictionPolicy in New-AzVMConfig.

$resourceGroup = "mySpotRG"
$location = "eastus"
$vmName = "mySpotVM"
$cred = Get-Credential -Message "Enter a username and password for the virtual machine."
New-AzResourceGroup -Name $resourceGroup -Location $location
$subnetConfig = New-AzVirtualNetworkSubnetConfig `
   -Name mySubnet -AddressPrefix 192.168.1.0/24
$vnet = New-AzVirtualNetwork -ResourceGroupName $resourceGroup `
   -Location $location -Name MYvNET -AddressPrefix 192.168.0.0/16 `
   -Subnet $subnetConfig
$pip = New-AzPublicIpAddress -ResourceGroupName $resourceGroup -Location $location `
  -Name "mypublicdns$(Get-Random)" -AllocationMethod Static -IdleTimeoutInMinutes 4
$nsgRuleRDP = New-AzNetworkSecurityRuleConfig -Name myNetworkSecurityGroupRuleRDP  -Protocol Tcp `
  -Direction Inbound -Priority 1000 -SourceAddressPrefix * -SourcePortRange * -DestinationAddressPrefix * `
  -DestinationPortRange 3389 -Access Deny
$nsg = New-AzNetworkSecurityGroup -ResourceGroupName $resourceGroup -Location $location `
  -Name myNetworkSecurityGroup -SecurityRules $nsgRuleRDP
$nic = New-AzNetworkInterface -Name myNic -ResourceGroupName $resourceGroup -Location $location `
  -SubnetId $vnet.Subnets[0].Id -PublicIpAddressId $pip.Id -NetworkSecurityGroupId $nsg.Id

# Create a virtual machine configuration and set this to be an Azure Spot Virtual Machine

$vmConfig = New-AzVMConfig -VMName $vmName -VMSize Standard_D1 -Priority "Spot" -MaxPrice -1 -EvictionPolicy Deallocate | `
Set-AzVMOperatingSystem -Windows -ComputerName $vmName -Credential $cred | `
Set-AzVMSourceImage -PublisherName MicrosoftWindowsServer -Offer WindowsServer -Skus 2016-Datacenter -Version latest | `
Add-AzVMNetworkInterface -Id $nic.Id

New-AzVM -ResourceGroupName $resourceGroup -Location $location -VM $vmConfig

Po vytvoření virtuálního počítače se můžete dotazem podívat na maximální cenu všech virtuálních počítačů ve skupině prostředků.

Get-AzVM -ResourceGroupName $resourceGroup | `
   Select-Object Name,@{Name="maxPrice"; Expression={$_.BillingProfile.MaxPrice}}

Simulace vyřazení

Vyřazení virtuálního počítače Azure Spot můžete simulovat pomocí rozhraní REST, PowerShellu nebo rozhraní příkazového řádku a otestovat, jak dobře bude vaše aplikace reagovat na náhlé vyřazení.

Ve většině případů budete chtít použít virtuální počítače REST API – Simulace vyřazení , které vám pomůžou s automatizovaným testováním aplikací. U REST znamená, Response Code: 204 že simulované vyřazení bylo úspěšné. Simulované vyřazení můžete kombinovat se službou naplánovaných událostí a automatizovat způsob reakce aplikace při vyřazení virtuálního počítače.

Pokud chcete zobrazit naplánované události v akci, podívejte se na Azure Friday – Příprava na údržbu virtuálních počítačů pomocí plánovaných událostí Azure.

Rychlý test

Rychlý test, který ukazuje, jak bude simulované vyřazení fungovat, si projdeme dotazování na naplánovanou službu událostí a podívejme se, jak vypadá, když simulujete vyřazení pomocí PowerShellu.

Služba Naplánovaná událost je pro vaši službu povolená při prvním zadání požadavku na události.

Vzdáleně přejděte k virtuálnímu počítači a otevřete příkazový řádek.

Na příkazovém řádku na virtuálním počítači zadejte:

curl -H Metadata:true http://169.254.169.254/metadata/scheduledevents?api-version=2019-08-01

Tato první odpověď může trvat až 2 minuty. Od této chvíle by se měl zobrazit výstup téměř okamžitě.

Z počítače s nainstalovaným modulem Az PowerShell (jako je váš místní počítač) simulujte vyřazení pomocí set-AzVM. Nahraďte název skupiny prostředků a název virtuálního počítače vlastním názvem.

Set-AzVM -ResourceGroupName "mySpotRG" -Name "mySpotVM" -SimulateEviction

Výstup odpovědi bude mít Status: Succeeded , pokud byl požadavek úspěšně proveden.

Rychle se vraťte ke vzdálenému připojení k spotovém virtuálnímu počítači a znovu zadejte dotaz na koncový bod Naplánované události. Opakujte následující příkaz, dokud nedostanete výstup, který obsahuje další informace:

curl -H Metadata:true http://169.254.169.254/metadata/scheduledevents?api-version=2019-08-01

Když služba naplánované události obdrží oznámení o vyřazení, obdržíte odpověď, která vypadá nějak takto:

{"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"}]}

Vidíte, že "EventType":"Preempt"prostředek je prostředek virtuálního počítače "Resources":["myspotvm"].

Můžete také zjistit, kdy se virtuální počítač vyřadí kontrolou "NotBefore" hodnoty. Virtuální počítač se nevyřadí před časem zadaným v NotBeforeaplikaci, aby se vaše aplikace řádně zavřela.

Další kroky

Můžete také vytvořit spotový virtuální počítač Azure pomocí Azure CLI, portálu nebo šablony.

Pokud chcete zjistit informace o cenách spotových virtuálních počítačů Azure, zadejte dotaz na aktuální informace o cenách cen za maloobchodní ceny Azure. A meterName oba budou obsahovat Spot.skuName

Pokud dojde k chybě, podívejte se na kódy chyb.