Sanal Makine Ölçek Kümesini Değiştirme

Not

Bu belgede listelenen adımların çoğu, Tekdüzen Düzenleme modunu kullanan Sanal Makine Ölçek Kümeleri için geçerlidir. Yeni iş yükleri için Esnek Düzenleme'nin kullanılmasını öneririz. Daha fazla bilgi için bkz. Azure'da Sanal Makine Ölçek Kümeleri için Orchesration modları.

Uygulamalarınızın yaşam döngüsü boyunca Sanal Makine Ölçek Kümenizi değiştirmeniz veya güncelleştirmeniz gerekebilir. Bu güncelleştirmeler, ölçek kümesinin yapılandırmasını güncelleştirmeyi veya uygulama yapılandırmasını değiştirmeyi içerebilir. Bu makalede REST API'leri, Azure PowerShell veya Azure CLI ile mevcut bir ölçek kümesinin nasıl değiştirileceği açıklanır.

Temel kavramlar

Ölçek kümesi modeli

Ölçek kümesinin, ölçek kümesinin istenen durumunu bir bütün olarak yakalayan bir "ölçek kümesi modeli" vardır. Bir ölçek kümesinin modelini sorgulamak için

  • İşlem/virtualmachinescalesets/get ile REST API aşağıdaki gibi:

    GET https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/myResourceGroup/providers/Microsoft.Compute/virtualMachineScaleSets/myScaleSet?api-version={apiVersion}
    
  • Get-AzVmss ile Azure PowerShell:

    Get-AzVmss -ResourceGroupName "myResourceGroup" -VMScaleSetName "myScaleSet"
    
  • az vmss ile Azure CLI şu değerleri gösterir:

    az vmss show --resource-group myResourceGroup --name myScaleSet
    
  • resources.azure.com veya dile özgü Azure SDK'larını da kullanabilirsiniz.

Çıkışın tam sunumu, komuta sağladığınız seçeneklere bağlıdır. Aşağıdaki örnekte Azure CLI'dan yoğunlaştırılmış örnek çıktısı gösterilmektedir:

az vmss show --resource-group myResourceGroup --name myScaleSet
{
  "location": "westus",
  "overprovision": true,
  "plan": null,
  "singlePlacementGroup": true,
  "sku": {
    "additionalProperties": {},
    "capacity": 1,
    "name": "Standard_D2_v2",
    "tier": "Standard"
  },
}

Bu özellikler ölçek kümesine bir bütün olarak uygulanır.

Ölçek kümesi örneği görünümü

Ölçek kümesinin, ölçek kümesinin geçerli çalışma zamanı durumunu bir bütün olarak yakalayan bir "ölçek kümesi örnek görünümü" de vardır. Ölçek kümesinin örnek görünümünü sorgulamak için şunları kullanabilirsiniz:

  • İşlem/virtualmachinescalesets/getinstanceview ile REST API aşağıdaki gibi:

    GET https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/myResourceGroup/providers/Microsoft.Compute/virtualMachineScaleSets/myScaleSet/instanceView?api-version={apiVersion}
    
  • Get-AzVmss ile Azure PowerShell:

    Get-AzVmss -ResourceGroupName "myResourceGroup" -VMScaleSetName "myScaleSet" -InstanceView
    
  • az vmss get-instance-view ile Azure CLI:

    az vmss get-instance-view --resource-group myResourceGroup --name myScaleSet
    
  • resources.azure.com veya dile özgü Azure SDK'larını da kullanabilirsiniz

Çıkışın tam sunumu, komuta sağladığınız seçeneklere bağlıdır. Aşağıdaki örnekte Azure CLI'dan yoğunlaştırılmış örnek çıktısı gösterilmektedir:

$ az vmss get-instance-view --resource-group myResourceGroup --name myScaleSet
{
  "statuses": [
    {
      "additionalProperties": {},
      "code": "ProvisioningState/succeeded",
      "displayStatus": "Provisioning succeeded",
      "level": "Info",
      "message": null,
      "time": "{time}"
    }
  ],
  "virtualMachine": {
    "additionalProperties": {},
    "statusesSummary": [
      {
        "additionalProperties": {},
        "code": "ProvisioningState/succeeded",
        "count": 1
      }
    ]
  }
}

Bu özellikler ölçek kümesindeki VM'lerin geçerli çalışma zamanı durumunun bir özetini sağlar; örneğin ölçek kümesine uygulanan uzantıların durumu.

Ölçek kümesi VM modeli görünümü

Ölçek kümesinin model görünümüne sahip olmasına benzer şekilde, ölçek kümesindeki her VM örneğinin kendi model görünümü vardır. Ölçek kümesindeki belirli bir VM örneğinin model görünümünü sorgulamak için şunları kullanabilirsiniz:

  • İşlem/virtualmachinescalesetvms/get ile REST API aşağıdaki gibi:

    GET https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/myResourceGroup/providers/Microsoft.Compute/virtualMachineScaleSets/myScaleSet/virtualmachines/instanceId?api-version={apiVersion}
    
  • Get-AzVmssVm ile Azure PowerShell:

    Get-AzVmssVm -ResourceGroupName "myResourceGroup" -VMScaleSetName "myScaleSet" -InstanceId instanceId
    
  • az vmss ile Azure CLI şu değerleri gösterir:

    az vmss show --resource-group myResourceGroup --name myScaleSet --instance-id instanceId
    
  • resources.azure.com veya Azure SDK'larını da kullanabilirsiniz.

Çıkışın tam sunumu, komuta sağladığınız seçeneklere bağlıdır. Aşağıdaki örnekte Azure CLI'dan yoğunlaştırılmış örnek çıktısı gösterilmektedir:

$ az vmss show --resource-group myResourceGroup --name myScaleSet
{
  "location": "westus",
  "name": "{name}",
  "sku": {
    "name": "Standard_D2_v2",
    "tier": "Standard"
  },
}

Bu özellikler, ölçek kümesinin bir bütün olarak yapılandırılmasını değil, ölçek kümesi içindeki bir VM örneğinin yapılandırmasını açıklar. Örneğin, ölçek kümesi modelinin bir özelliği vardır overprovision , ancak ölçek kümesi içindeki bir VM örneğinin modeli özelliği yoktur. Bu farkın nedeni, fazla sağlamanın ölçek kümesindeki tek tek VM örnekleri için değil ölçek kümesinin bir bütün olarak bir özelliği olmasıdır (fazla sağlama hakkında daha fazla bilgi için bkz . Ölçek kümeleri için tasarım konuları).

Ölçek kümesi VM örneği görünümü

Ölçek kümesinin örnek görünümüne sahip olmasına benzer şekilde, ölçek kümesindeki her VM örneğinin kendi örnek görünümü vardır. Ölçek kümesi içindeki belirli bir VM örneğinin örnek görünümünü sorgulamak için şunları kullanabilirsiniz:

  • İşlem/virtualmachinescalesetvms/getinstanceview ile REST API aşağıdaki gibi:

    GET https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/myResourceGroup/providers/Microsoft.Compute/virtualMachineScaleSets/myScaleSet/virtualmachines/instanceId/instanceView?api-version={apiVersion}
    
  • Get-AzVmssVm ile Azure PowerShell:

    Get-AzVmssVm -ResourceGroupName "myResourceGroup" -VMScaleSetName "myScaleSet" -InstanceId instanceId -InstanceView
    
  • az vmss get-instance-view ile Azure CLI

    az vmss get-instance-view --resource-group myResourceGroup --name myScaleSet --instance-id instanceId
    
  • resources.azure.com veya Azure SDK'larını da kullanabilirsiniz

Çıkışın tam sunumu, komuta sağladığınız seçeneklere bağlıdır. Aşağıdaki örnekte Azure CLI'dan yoğunlaştırılmış örnek çıktısı gösterilmektedir:

$ az vmss get-instance-view --resource-group myResourceGroup --name myScaleSet --instance-id instanceId
{
  "additionalProperties": {
    "osName": "ubuntu",
    "osVersion": "16.04"
  },
  "disks": [
    {
      "name": "{name}",
      "statuses": [
        {
          "additionalProperties": {},
          "code": "ProvisioningState/succeeded",
          "displayStatus": "Provisioning succeeded",
          "time": "{time}"
        }
      ]
    }
  ],
  "statuses": [
    {
      "additionalProperties": {},
      "code": "ProvisioningState/succeeded",
      "displayStatus": "Provisioning succeeded",
      "time": "{time}"
    },
    {
      "additionalProperties": {},
      "code": "PowerState/running",
      "displayStatus": "VM running"
    }
  ],
  "vmAgent": {
    "statuses": [
      {
        "additionalProperties": {},
        "code": "ProvisioningState/succeeded",
        "displayStatus": "Ready",
        "level": "Info",
        "message": "Guest Agent is running",
        "time": "{time}"
      }
    ],
    "vmAgentVersion": "{version}"
  },
}

Bu özellikler, ölçek kümesine uygulanan uzantıları içeren bir ölçek kümesi içindeki vm örneğinin geçerli çalışma zamanı durumunu açıklar.

Genel ölçek kümesi özelliklerini güncelleştirme

Genel ölçek kümesi özelliğini güncelleştirmek için ölçek kümesi modelindeki özelliği güncelleştirmeniz gerekir. Bu güncelleştirmeyi şu şekilde yapabilirsiniz:

  • İşlem/virtualmachinescalesets/createorupdate ile REST API aşağıdaki gibi:

    PUT https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/myResourceGroup/providers/Microsoft.Compute/virtualMachineScaleSets/myScaleSet?api-version={apiVersion}
    
  • Genel ölçek kümesi özelliklerini güncelleştirmek için REST API'den özellikleri içeren bir Resource Manager şablonu dağıtabilirsiniz.

  • Update-AzVmss ile Azure PowerShell:

    Update-AzVmss -ResourceGroupName "myResourceGroup" -VMScaleSetName "myScaleSet" -VirtualMachineScaleSet {scaleSetConfigPowershellObject}
    
  • az vmss update ile Azure CLI:

    • Bir özelliği değiştirmek için:

      az vmss update --set {propertyPath}={value}
      
    • Ölçek kümesindeki bir liste özelliğine nesne eklemek için:

      az vmss update --add {propertyPath} {JSONObjectToAdd}
      
    • Ölçek kümesindeki bir liste özelliğinden nesne kaldırmak için:

      az vmss update --remove {propertyPath} {indexToRemove}
      
    • Daha önce ölçek kümesini komutuyla az vmss create dağıttıysanız, ölçek kümesini güncelleştirmek için komutunu yeniden çalıştırabilirsiniz az vmss create . Değiştirmek istediğiniz özellikler dışında, komuttaki az vmss create tüm özelliklerin öncekiyle aynı olduğundan emin olun.

  • resources.azure.com veya Azure SDK'larını da kullanabilirsiniz.

Ölçek kümesi modeli güncelleştirildikten sonra, yeni yapılandırma ölçek kümesinde oluşturulan tüm yeni VM'ler için geçerlidir. Ancak ölçek kümesindeki mevcut VM'lerin modelleri yine de en son genel ölçek kümesi modeliyle güncel hale getirilmelidir. Her VM'nin modelinde, VM'nin en son genel ölçek kümesi modeliyle güncel olup olmadığını belirten adlı latestModelApplied boole özelliği vardır (true VM'nin en son modelle güncel olduğu anlamına gelir).

Değişiklik kısıtlamaları olan özellikler

Oluşturma zamanı özellikleri

Bazı özellikler yalnızca ölçek kümesini oluşturduğunuzda ayarlanabilir. Bazı örnekler yönetilen işletim sistemi disk depolama hesabı türü ve hata etki alanlarıdır.

Yalnızca geçerli değere göre değiştirilebilen özellikler

Bazı özellikler, geçerli değere bağlı olarak özel durumlar ile değiştirilebilir. Bu özellikler şunlardır:

  • singlePlacementGroup
  • alt ağ
  • imageReferenceSku
  • imageReferenceOffer
  • Bölge

Örnek 1

Ölçek kümenizi farklı bir işletim sistemi sürümü kullanacak şekilde güncelleştirmek için tüm güncelleştirilmiş özellikleri tek bir çağrıda ayarlamanız gerekir. Bu örnekte Unbuntu Server 20.04'ten 22.04'e geçiş yapıyoruz.

az vmss update \
--resource-group myResourceGroup \
--name myScaleSet \
--set virtualMachineProfile.storageProfile.imageReference.offer=0001-com-ubuntu-server-jammy \
--set virtualMachineProfile.storageProfile.imageReference.publisher=Canonical \
--set virtualMachineProfile.storageProfile.imageReference.sku=22_04-lts-gen2 \
--set virtualMachineProfile.storageProfile.imageReference.version=latest

Örnek 2

Ölçek kümenizi farklı bir işletim sistemi sürümü kullanacak şekilde güncelleştirmek için tüm güncelleştirilmiş özellikleri tek bir çağrıda ayarlamanız gerekir. Bu örnekte, Windows Server 2016'dan Windows Server 2019'a geçiş yapıyoruz.

$VMSS = Get-AzVmss -ResourceGroupName "myResourceGroup" -VMScaleSetName "myScaleSet"

Set-AzVmssStorageProfile $vmss `
    -OsDiskCreateOption "FromImage" `
    -ImageReferencePublisher "MicrosoftWindowsServer" `
    -ImageReferenceOffer "WindowsServer" `
    -ImageReferenceSku "2019-datacenter" `
    -ImageReferenceVersion "latest"

Update-AzVmss -ResourceGroupName "myResourceGroup" -Name "myScaleSet" -VirtualMachineScaleSet $VMSS

Değiştirilmesi için serbest bırakma gerektiren özellikler

Bazı özellikler yalnızca ölçek kümesindeki VM'ler serbest bırakıldığında belirli değerlerle değiştirilebilir. Bu özellikler şunlardır:

  • SKU Adı- Ölçek kümesinin şu anda açık olduğu donanımda yeni VM SKU'su desteklenmiyorsa, SKU adını değiştirmeden önce ölçek kümesindeki VM'leri serbest bırakmanız gerekir. Daha fazla bilgi için bkz . Azure VM'yi yeniden boyutlandırma.

VM'ye özgü güncelleştirmeler

Bazı değişiklikler genel ölçek kümesi özellikleri yerine belirli VM'lere uygulanabilir. Şu anda desteklenen VM'ye özgü tek güncelleştirme, ölçek kümesindeki VM'lere veri diskleri eklemek/kaldırmaktır. Bu özellik, önizleme aşamasındadır.

Senaryolar

Uygulama güncelleştirmeleri

Bir uygulama uzantılar aracılığıyla bir ölçek kümesine dağıtılırsa, uzantı yapılandırmasına yönelik bir güncelleştirme, uygulamanın yükseltme ilkesine uygun olarak güncelleştirilebilir. Örneğin, Özel Betik Uzantısında çalıştırılacak yeni bir betik sürümünüz varsa fileUris özelliğini yeni betiği işaret eden şekilde güncelleştirebilirsiniz. Bazı durumlarda, uzantı yapılandırması değişmemiş olsa bile bir güncelleştirmeyi zorlamak isteyebilirsiniz (örneğin, betiğin URI'sinde değişiklik yapmadan betiği güncelleştirmiş olabilirsiniz). Bu gibi durumlarda, forceUpdateTag'ı güncelleştirmeyi zorlamak için değiştirebilirsiniz. Azure platformu bu özelliği yorumlamaz. Değeri değiştirirseniz, uzantının nasıl çalıştığı üzerinde hiçbir etkisi olmaz. Değişiklik basitçe uzantıyı yeniden çalıştırmaya zorlar. forceUpdateTag hakkında daha fazla bilgi için uzantılar için REST API belgelerine bakın. forceUpdateTag öğesinin yalnızca özel betik uzantısıyla değil tüm uzantılarla kullanılabileceğini unutmayın.

Uygulamaların özel görüntü aracılığıyla dağıtılması da yaygındır. Bu senaryo aşağıdaki bölümde ele alınmıştır.

İşletim Sistemi Güncelleştirmeleri

Azure platform görüntülerini kullanıyorsanız imageReference dosyasını değiştirerek görüntüyü güncelleştirebilirsiniz (daha fazla bilgi için REST API belgelerine bakın).

Not

Platform görüntüleriyle, görüntü başvuru sürümü için "en son" belirtmek yaygın bir durumdur. Vm'leri oluşturduğunuzda, ölçeği genişlettiğiniz ve yeniden oluşturduğunuz zaman en son kullanılabilir sürümle oluşturulur. Ancak, yeni görüntü sürümleri yayımlandıkçe işletim sistemi görüntüsünün zaman içinde otomatik olarak güncelleştirildiği anlamına gelmez . Ayrı bir özellik otomatik işletim sistemi yükseltmeleri sağlar. Daha fazla bilgi için Otomatik İşletim Sistemi Yükseltmeleri belgelerine bakın.

Özel görüntüler kullanıyorsanız imageReference Kimliğini güncelleştirerek görüntüyü güncelleştirebilirsiniz (daha fazla bilgi için REST API belgelerine bakın).

Örnekler

Ölçek kümeniz için işletim sistemi görüntüsünü güncelleştirme

Ubuntu LTS 16.04'ün eski bir sürümünü çalıştıran bir ölçek kümeniz olabilir. Ubuntu LTS 16.04'ün 16.04.201801090 gibi daha yeni bir sürümüne güncelleştirmek istiyorsunuz. Görüntü başvuru sürümü özelliği listenin bir parçası olmadığından, bu özellikleri aşağıdaki komutlardan biriyle doğrudan değiştirebilirsiniz:

  • Update-AzVmss ile Azure PowerShell aşağıdaki gibi:

    Update-AzVmss -ResourceGroupName "myResourceGroup" -VMScaleSetName "myScaleSet" -ImageReferenceVersion 16.04.201801090
    
  • az vmss update ile Azure CLI:

    az vmss update --resource-group myResourceGroup --name myScaleSet --set virtualMachineProfile.storageProfile.imageReference.version=16.04.201801090
    

Alternatif olarak, ölçek kümenizin kullandığı görüntüyü değiştirmek isteyebilirsiniz. Örneğin, ölçek kümeniz tarafından kullanılan özel bir görüntüyü güncelleştirmek veya değiştirmek isteyebilirsiniz. Görüntü başvuru kimliği özelliğini güncelleştirerek ölçek kümenizin kullandığı görüntüyü değiştirebilirsiniz. Görüntü başvuru kimliği özelliği listenin bir parçası olmadığından, bu özelliği aşağıdaki komutlardan biriyle doğrudan değiştirebilirsiniz:

  • Update-AzVmss ile Azure PowerShell aşağıdaki gibi:

    Update-AzVmss `
        -ResourceGroupName "myResourceGroup" `
        -VMScaleSetName "myScaleSet" `
        -ImageReferenceId /subscriptions/{subscriptionID}/resourceGroups/myResourceGroup/providers/Microsoft.Compute/images/myNewImage
    
  • az vmss update ile Azure CLI:

    az vmss update \
        --resource-group myResourceGroup \
        --name myScaleSet \
        --set virtualMachineProfile.storageProfile.imageReference.id=/subscriptions/{subscriptionID}/resourceGroups/myResourceGroup/providers/Microsoft.Compute/images/myNewImage
    

Ölçek kümeniz için yük dengeleyiciyi güncelleştirme

Azure Load Balancer ile bir ölçek kümeniz olduğunu ve Azure Load Balancer'ı Azure Uygulaması lication Gateway ile değiştirmek istediğinizi varsayalım. Ölçek kümesinin yük dengeleyici ve Application Gateway özellikleri listenin bir parçasıdır, bu nedenle komutları kullanarak özellikleri doğrudan değiştirmek yerine liste öğelerini kaldırabilir veya ekleyebilirsiniz:

  • Azure PowerShell:

    # Get the current model of the scale set and store it in a local PowerShell object named $vmss
    $vmss=Get-AzVmss -ResourceGroupName "myResourceGroup" -Name "myScaleSet"
    
    # Create a local PowerShell object for the new desired IP configuration, which includes the reference to the application gateway
    $ipconf = New-AzVmssIPConfig -ApplicationGatewayBackendAddressPoolsId /subscriptions/{subscriptionId}/resourceGroups/myResourceGroup/providers/Microsoft.Network/applicationGateways/{applicationGatewayName}/backendAddressPools/{applicationGatewayBackendAddressPoolName} -SubnetId $vmss.VirtualMachineProfile.NetworkProfile.NetworkInterfaceConfigurations[0].IpConfigurations[0].Subnet.Id -Name $vmss.VirtualMachineProfile.NetworkProfile.NetworkInterfaceConfigurations[0].IpConfigurations[0].Name
    
    # Replace the existing IP configuration in the local PowerShell object (which contains the references to the current Azure Load Balancer) with the new IP configuration
    $vmss.VirtualMachineProfile.NetworkProfile.NetworkInterfaceConfigurations[0].IpConfigurations[0] = $ipconf
    
    # Update the model of the scale set with the new configuration in the local PowerShell object
    Update-AzVmss -ResourceGroupName "myResourceGroup" -Name "myScaleSet" -virtualMachineScaleSet $vmss
    
  • Azure CLI:

    # Remove the load balancer backend pool from the scale set model
    az vmss update --resource-group myResourceGroup --name myScaleSet --remove virtualMachineProfile.networkProfile.networkInterfaceConfigurations[0].ipConfigurations[0].loadBalancerBackendAddressPools 0
    
    # Remove the load balancer backend pool from the scale set model; only necessary if you have NAT pools configured on the scale set
    az vmss update --resource-group myResourceGroup --name myScaleSet --remove virtualMachineProfile.networkProfile.networkInterfaceConfigurations[0].ipConfigurations[0].loadBalancerInboundNatPools 0
    
    # Add the application gateway backend pool to the scale set model
    az vmss update --resource-group myResourceGroup --name myScaleSet --add virtualMachineProfile.networkProfile.networkInterfaceConfigurations[0].ipConfigurations[0].ApplicationGatewayBackendAddressPools '{"id": "/subscriptions/{subscriptionId}/resourceGroups/myResourceGroup/providers/Microsoft.Network/applicationGateways/{applicationGatewayName}/backendAddressPools/{applicationGatewayBackendPoolName}"}'
    

Not

Bu komutlar, ölçek kümesinde yalnızca bir IP yapılandırması ve yük dengeleyici olduğunu varsayar. Birden çok tane varsa, 0 dışında bir liste dizini kullanmanız gerekebilir.

Sonraki adımlar

Azure CLI veya Azure PowerShell ile ölçek kümelerinde ortak yönetim görevleri de gerçekleştirebilirsiniz.