Aracılığıyla paylaş


Resource Manager şablonu kullanarak Azure Spot Sanal Makineler dağıtma

Şunlar için geçerlidir: ✔️ Linux VM'leri

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 VM'lerini çıkartır. Azure Spot VM'leri 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ı.

VM için saat başına ödemek istediğiniz maksimum fiyatı belirleme seçeneğiniz vardır. Azure Spot VM için en yüksek fiyat, en fazla beş 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ı olacak -1şekilde ayarlarsanız, VM'lerin çıkarma işlemi fiyata dayalı değildir ve kapasite ve kota mevcut olduğu sürece fiyatı Azure Spot VM'leri için geçerli fiyat veya standart bir VM'nin fiyatı (hangisi daha azsa) olacaktır. En yüksek fiyatı ayarlama hakkında daha fazla bilgi için bkz . Azure Spot VM'leri - Fiyatlandırma.

Şablon kullanma

Azure Spot VM şablonu dağıtımları için veya üzerini kullanın"apiVersion": "2019-03-01" . priorityşablonunuzda öğesine evictionPolicy ve billingProfile özelliklerini ekleyin:

"priority": "Spot",
"evictionPolicy": "Deallocate",
"billingProfile": {
    "maxPrice": -1
}

Azure Spot VM için eklenen özelliklere sahip örnek bir şablon aşağıda verilmiştir. Kaynak adlarını kendi adlarınızla ve <password> VM'de yerel yönetici hesabı için bir parolayla değiştirin.

{
    "$schema": "http://schema.management.azure.com/schemas/2019-03-01/deploymentTemplate.json#",
    "contentVersion": "1.0.0.0",
    "parameters": {
    },
    "variables": {
        "vnetId": "/subscriptions/ec9fcd04-e188-48b9-abfc-abcd515f1836/resourceGroups/spotVM/providers/Microsoft.Network/virtualNetworks/spotVM",
        "subnetName": "default",
        "networkInterfaceName": "spotVMNIC",
        "publicIpAddressName": "spotVM-ip",
        "publicIpAddressType": "Dynamic",
        "publicIpAddressSku": "Basic",
        "virtualMachineName": "spotVM",
        "osDiskType": "Premium_LRS",
        "virtualMachineSize": "Standard_D2s_v3",
        "adminUsername": "azureuser",
        "adminPassword": "<password>",
        "diagnosticsStorageAccountName": "diagstoragespot2019",
        "diagnosticsStorageAccountId": "Microsoft.Storage/storageAccounts/diagstoragespot2019",
        "diagnosticsStorageAccountType": "Standard_LRS",
        "diagnosticsStorageAccountKind": "Storage",
        "subnetRef": "[concat(variables('vnetId'), '/subnets/', variables('subnetName'))]"
    },
    "resources": [
        {
            "name": "spotVM",
            "type": "Microsoft.Network/networkInterfaces",
            "apiVersion": "2019-03-01",
            "location": "eastus",
            "dependsOn": [
                "[concat('Microsoft.Network/publicIpAddresses/', variables('publicIpAddressName'))]"
            ],
            "properties": {
                "ipConfigurations": [
                    {
                        "name": "ipconfig1",
                        "properties": {
                            "subnet": {
                                "id": "[variables('subnetRef')]"
                            },
                            "privateIPAllocationMethod": "Dynamic",
                            "publicIpAddress": {
                                "id": "[resourceId(resourceGroup().name, 'Microsoft.Network/publicIpAddresses', variables('publicIpAddressName'))]"
                            }
                        }
                    }
                ]
            }
        },
        {
            "name": "[variables('publicIpAddressName')]",
            "type": "Microsoft.Network/publicIpAddresses",
            "apiVersion": "2019-02-01",
            "location": "eastus",
            "properties": {
                "publicIpAllocationMethod": "[variables('publicIpAddressType')]"
            },
            "sku": {
                "name": "[variables('publicIpAddressSku')]"
            }
        },
        {
            "name": "[variables('virtualMachineName')]",
            "type": "Microsoft.Compute/virtualMachines",
            "apiVersion": "2019-03-01",
            "location": "eastus",
            "dependsOn": [
                "[concat('Microsoft.Network/networkInterfaces/', variables('networkInterfaceName'))]",
                "[concat('Microsoft.Storage/storageAccounts/', variables('diagnosticsStorageAccountName'))]"
            ],
            "properties": {
                "hardwareProfile": {
                    "vmSize": "[variables('virtualMachineSize')]"
                },
                "storageProfile": {
                    "osDisk": {
                        "createOption": "fromImage",
                        "managedDisk": {
                            "storageAccountType": "[variables('osDiskType')]"
                        }
                    },
                    "imageReference": {
                        "publisher": "Canonical",
                        "offer": "UbuntuServer",
                        "sku": "22.04-LTS",
                        "version": "latest"
                    }
                },
                "networkProfile": {
                    "networkInterfaces": [
                        {
                            "id": "[resourceId('Microsoft.Network/networkInterfaces', variables('networkInterfaceName'))]"
                        }
                    ]
                },
                "osProfile": {
                    "computerName": "[variables('virtualMachineName')]",
                    "adminUsername": "[variables('adminUsername')]",
                    "adminPassword": "[variables('adminPassword')]"
                },
                "diagnosticsProfile": {
                    "bootDiagnostics": {
                        "enabled": true,
                        "storageUri": "[concat('https://', variables('diagnosticsStorageAccountName'), '.blob.core.windows.net/')]"
                    }
                },
                "priority": "Spot",
                "evictionPolicy": "Deallocate",
                "billingProfile": {
                    "maxPrice": -1
                }
            }
        },
        {
            "name": "[variables('diagnosticsStorageAccountName')]",
            "type": "Microsoft.Storage/storageAccounts",
            "apiVersion": "2019-04-01",
            "location": "eastus",
            "properties": {},
            "kind": "[variables('diagnosticsStorageAccountKind')]",
            "sku": {
                "name": "[variables('diagnosticsStorageAccountType')]"
            }
        }
    ],
    "outputs": {
        "adminUsername": {
            "type": "string",
            "value": "[variables('adminUsername')]"
        }
    }
}

Çıkarmanın simülasyonunu yapma

Uygulama yanıtınızı ani bir çıkarmayla test etmek için Azure Spot VM'sinin çıkarma benzetimini yapabilirsiniz.

Aşağıdaki parametreleri bilgilerinizle değiştirin:

  • subscriptionId
  • resourceGroupName
  • vmName
POST https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/virtualMachines/{vmName}/simulateEviction?api-version=2020-06-01

Sonraki adımlar