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 ödemek istediğiniz maksimum fiyatı belirleme seçeneğiniz vardır. Azure Spot Sanal Makinesi için en fazla 5 ondalık basamak kullanılarak en yüksek fiyat ABD doları (USD) cinsinden ayarlanabilir. Örneğin, değer 0.98765
saatte 0,98765 ABD doları maksimum fiyat olabilir. En yüksek fiyatı olarak -1
ayarlarsanı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 ve bu fiyat daha azdı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 tutarı. Ö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 kapasiteyi geri alması gerektiğinde). Çıkarma ilkesi VM'yi serbest bırakacak şekilde 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-AzVMConfig
olarak 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 - Benzetim Çıkarma özelliğini kullanmak istersiniz. REST için, Response Code: 204
simülasyon çı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 simülasyon çıkarmalarını Zamanlanmış Olay hizmetiyle birleştirebilirsiniz.
Zamanlanmış olayları iş başında 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 sorgulamaya göz atalım.
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 çıktısı olacaktır Status: Succeeded
.
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"}]}
öğesini ve kaynağın vm kaynağı "Resources":["myspotvm"]
olduğunu görebilirsiniz"EventType":"Preempt"
.
Ayrıca değeri denetleyerek "NotBefore"
VM'nin ne zaman çıkarılacağını da görebilirsiniz. VM, içinde NotBefore
verilen süreden önce çıkarılmaz, bu nedenle uygulamanızın düzgün bir şekilde kapatılması için kullanabileceğiniz penceredir.
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
.
Bir hatayla karşılaşırsanız bkz . Hata kodları.