Share via


Azure PowerShell kullanarak Azure Spot Sanal Makineler dağıtma

Şunlar için geçerlidir: ✔️ Linux VM'leri ✔️ Windows VM'leri ✔️ Esnek ölçek kümeleri

Azure Spot Sanal Makineler kullanmak, kullanılmayan kapasitemizden önemli bir maliyet tasarrufuyla yararlanmanızı sağlar. Azure'ın kapasiteye geri ihtiyacı olduğunda, Azure altyapısı Azure Spot Sanal Makineler çıkaracaktır. Bu nedenle Azure Spot Sanal Makineler toplu işleme işleri, geliştirme/test ortamları, büyük işlem iş yükleri ve daha fazlası gibi kesintileri işleyebilen iş yükleri için idealdir.

Azure Spot Sanal Makineler fiyatlandırması, bölgeye ve SKU'ya göre değişkendir. Daha fazla bilgi için bkz. Linux ve Windows için VM fiyatlandırması. En yüksek fiyatı ayarlama hakkında daha fazla bilgi için bkz. Azure Spot Sanal Makineler - Fiyatlandırma.

VM için saat başına ödemeye hazır olduğunuz maksimum fiyatı ayarlama seçeneğiniz vardır. Azure Spot Sanal Makinesi için maksimum fiyat, en fazla 5 ondalık basamak kullanılarak ABD doları (USD) cinsinden ayarlanabilir. Örneğin, değer 0.98765saatte 0,98765 ABD doları maksimum fiyat olabilir. En yüksek fiyatı olarak -1ayarlarsanız, VM fiyata göre çıkarılamaz. Kullanılabilir kapasite ve kota olduğu sürece, VM'nin fiyatı spot için geçerli fiyat veya standart bir VM'nin fiyatı olacaktır.

Sanal makineyi oluşturma

Yapılandırmayı oluşturmak için New-AzVmConfig kullanarak spotVM oluşturun. Dahil et -Priority Spot ve şunlardan biri olarak ayarlayın -MaxPrice :

  • -1 bu nedenle VM fiyata göre çıkarılmaz.
  • 5 basamağı olan bir dolar. Örneğin, -MaxPrice .98765 spotVM'nin fiyatı saatte yaklaşık 98765 ABD doları olduğunda VM'nin serbest bırakılacağı anlamına gelir.

Bu örnek fiyatlandırmaya göre serbest bırakılmayacak bir spotVM oluşturur (yalnızca Azure'ın kapasiteye geri ihtiyacı olduğunda). Çıkarma ilkesi VM'yi serbest bırakmak üzere ayarlanmıştır, böylece daha sonra yeniden başlatılabilir. VM çıkarıldığında VM'yi ve temel alınan diski silmek istiyorsanız, içinde New-AzVMConfigolarak Delete ayarlayın-EvictionPolicy.

$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

VM oluşturulduktan sonra, kaynak grubundaki tüm VM'lerin en yüksek fiyatını görmek için sorgulayabilirsiniz.

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

Çıkarmanın simülasyonunu yapma

Uygulamanızın ani bir çıkarma işlemini ne kadar iyi yanıt vereceğini test etmek için REST, PowerShell veya CLI kullanarak Azure Spot Sanal Makinesi çıkarma işleminin benzetimini yapabilirsiniz.

Çoğu durumda, uygulamaların otomatik olarak test edilmesine yardımcı olmak için REST API Sanal Makineler - Simulate Eviction kullanmak istersiniz. REST için simülasyon Response Code: 204 çıkarma işleminin başarılı olduğu anlamına gelir. Sanal makine çıkarıldığında uygulamanızın nasıl yanıt vereceğini otomatikleştirmek için sanal çıkarmaları Zamanlanmış Olay hizmetiyle birleştirebilirsiniz.

Zamanlanmış olayları uygulamada görmek için, VM bakımına hazırlanmak için Azure Friday - Azure Zamanlanmış Olayları Kullanma'yı izleyin.

Hızlı test

Simülasyon çıkarma işleminin nasıl çalışacağını gösteren hızlı bir test için, PowerShell kullanarak çıkarma işleminin benzetimini yaparken nasıl göründüğünü görmek için zamanlanmış olay hizmetini sorgulama adım adım ilerleyelim.

Zamanlanmış Olay hizmeti, olaylar için ilk istekte bulunurken hizmetiniz için etkinleştirilir.

VM'nize uzaktan bağlanıp bir komut istemi açın.

VM'nizdeki komut isteminden şunu yazın:

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

Bu ilk yanıt 2 dakika kadar sürebilir. Bundan sonra çıkışı hemen görüntülemeleri gerekir.

Az PowerShell modülünün yüklü olduğu bir bilgisayardan (yerel makineniz gibi), Set-AzVM kullanarak çıkarma benzetimi yapın. Kaynak grubu adını ve VM adını kendi adınızla değiştirin.

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

İstek başarıyla yapıldıysa yanıt çıkışına sahip Status: Succeeded olur.

Spot Sanal Makinenize uzak bağlantınıza hızla geri dönün ve Zamanlanmış Olaylar uç noktasını yeniden sorgulayın. Daha fazla bilgi içeren bir çıkış elde edene kadar aşağıdaki komutu yineleyin:

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

Zamanlanan Olay Hizmeti çıkarma bildirimini aldığında şuna benzer bir yanıt alırsınız:

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

ve kaynağının "EventType":"Preempt"vm kaynağı "Resources":["myspotvm"]olduğunu görebilirsiniz.

Değeri denetleyerek "NotBefore" VM'nin ne zaman çıkarılacağını da görebilirsiniz. VM, içinde NotBeforeverilen süreden önce çıkarılmaz, bu nedenle uygulamanızın düzgün bir şekilde kapanması için pencerenizdir.

Sonraki adımlar

Azure CLI, portal veya şablon kullanarak bir Azure Spot Sanal Makinesi de oluşturabilirsiniz.

Azure Spot Sanal Makine fiyatlandırması hakkında bilgi için Azure perakende fiyatları API'sini kullanarak geçerli fiyatlandırma bilgilerini sorgula. meterName ve skuName her ikisi de içerirSpot.

Hatayla karşılaşırsanız bkz. Hata kodları.