Nasazení spotové Virtual Machines Azure pomocí Azure PowerShell

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

Azure Spot Virtual Machines vám umožní využít naši nevyužitou kapacitu s výraznou úsporou nákladů. V jakémkoli okamžiku, kdy Azure potřebuje kapacitu zpět, vyřazení infrastruktury Azure Spot Virtual Machines. Proto je služba Azure Spot Virtual Machines skvělá pro úlohy, které zvládnou přerušení, jako jsou úlohy dávkového zpracování, vývojová a testovací prostředí, velké výpočetní úlohy a další.

Ceny spotových Virtual Machines Azure jsou proměnné v závislosti na oblasti a SKU. 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.

Máte možnost nastavit maximální cenu virtuálního počítače, kterou jste ochotni zaplatit za hodinu. Maximální cenu spotového virtuálního počítače Azure je možné nastavit v usdech s použitím až 5 desetinných míst. Například hodnota by byla 0.98765 maximální cena 0,98765 USD za hodinu. Pokud nastavíte maximální cenu na , virtuální počítač se nevyhodí -1 na základě ceny. Cena za virtuální počítač bude aktuální cena spotu nebo cena za standardní virtuální počítač, který je někdy nižší, pokud je k dispozici kapacita a kvóta.

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

Vytvořte spotVM pomocí příkazu New-AzVmConfig a vytvořte konfiguraci. -Priority SpotZahrnte a -MaxPrice nastavte na:

  • -1 virtuální počítač se nevyřazen na základě ceny.
  • dolarová částka, až 5 číslic. To například znamená, že jakmile cena spotVM přesáhne přibližně 98765 USD za hodinu, virtuální počítač se -MaxPrice .98765 uchová.

Tento příklad vytvoří spotVM, který se neudělí na základě cen (pouze pokud Azure potřebuje kapacitu zpět). Zásada vyhřešování je nastavená tak, aby se virtuální počítač uloil, aby ho bylo možné později restartovat. Pokud chcete při vyřazení virtuálního počítače odstranit virtuální počítač a základní disk, nastavte v nastavení -EvictionPolicy Delete na 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 Allow
$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 pro všechny virtuální počítače ve skupině prostředků.

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

Simulace vyřazení

Pomocí REST, PowerShellu nebo rozhraní příkazového řádku můžete simulovat vyzení spotového virtuálního počítače Azure, abyste otestovali, jak dobře bude vaše aplikace reagovat na náhlé vyhození.

Ve většině případů budete chtít použít REST API Virtual Machines – Simulovat vy vyřazení, který vám pomůže s automatizovaným testováním aplikací. V případě REST Response Code: 204 znamená, že simulované vyzení bylo úspěšné. Simulovaná vyřazení můžete kombinovat se službou Naplánovanáudálost a automatizovat tak, jak bude aplikace reagovat 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 – Využití Azure Scheduled Events a připravte se na údržbu virtuálního počítače.

Rychlý test

Rychlý test, který ukazuje, jak bude simulované vycházení fungovat, si projdeme dotazování služby naplánované události, abyste viděli, jak vypadá při simulaci vyhřešování pomocí PowerShellu.

Služba Naplánovaná událost je pro vaši službu povolená při prvním vyžádání událostí.

Vzdáleně se ke svému virtuálnímu počítači a pak 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. Odtedka by měl téměř okamžitě zobrazit výstup.

Z počítače s nainstalovaným modulem Az PowerShell (podobně jako na místním počítači) nasimulujte vy vyřazení pomocí rutiny 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 Status: Succeeded mít, pokud byl požadavek úspěšně proveden.

Rychle se vraťte ke vzdálenému připojení k spotovému virtuálnímu počítači a znovu Scheduled Events koncového bodu. Opakujte následující příkaz, dokud nezískute 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 Scheduled Event Service obdrží oznámení o vyházení, obdržíte odpověď, která vypadá podobně jako tato:

{"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" a prostředek je prostředek virtuálního počítače "Resources":["myspotvm"] .

Kontrolou hodnoty můžete také zjistit, kdy se virtuální počítač "NotBefore" vyřazen. Virtuální počítač se nevyřazen před časem v , takže to je okno, ve které se vaše aplikace řádně NotBefore zavře.

Další kroky

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

Informace o cenách spotových virtuálních počítačů Azure najdete v dotazech na informace o aktuálních cenách pomocí rozhraní API maloobchodních cen Azure. A meterName skuName budou obsahovat Spot .

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