Úprava škálovací sady virtuálních počítačů

Poznámka:

Mnoho kroků uvedených v tomto dokumentu platí pro škálovací sady virtuálních počítačů pomocí režimu Uniform Orchestraation. Pro nové úlohy doporučujeme používat flexibilní orchestraci. Další informace najdete v tématu Režimy orchesration pro škálovací sady virtuálních počítačů v Azure.

V průběhu životního cyklu vašich aplikací možná budete muset upravit nebo aktualizovat škálovací sadu virtuálních počítačů. Tyto aktualizace můžou zahrnovat, jak aktualizovat konfiguraci škálovací sady nebo změnit konfiguraci aplikace. Tento článek popisuje, jak upravit existující škálovací sadu pomocí rozhraní REST API, Azure PowerShellu nebo Azure CLI.

Základní koncepce

Model škálovací sady

Škálovací sada má "model škálovací sady", který zachycuje požadovaný stav škálovací sady jako celku. K dotazování modelu pro škálovací sadu můžete použít

  • Rozhraní REST API s výpočetními /virtualmachinescalesets/get následujícím způsobem:

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

    Get-AzVmss -ResourceGroupName "myResourceGroup" -VMScaleSetName "myScaleSet"
    
  • Azure CLI s az vmss show:

    az vmss show --resource-group myResourceGroup --name myScaleSet
    
  • Můžete také použít resources.azure.com nebo sady Azure SDK specifické pro konkrétní jazyk.

Přesná prezentace výstupu závisí na možnostech, které zadáte příkazu. Následující příklad ukazuje zhuštěný ukázkový výstup z Azure CLI:

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"
  },
}

Tyto vlastnosti platí pro škálovací sadu jako celek.

Zobrazení instance škálovací sady

Škálovací sada má také zobrazení instance škálovací sady, které zachycuje aktuální stav modulu runtime škálovací sady jako celku. K dotazování zobrazení instance pro škálovací sadu můžete použít:

  • Rozhraní REST API s výpočetními objekty /virtualmachinescalesets/getinstanceview následujícím způsobem:

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

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

    az vmss get-instance-view --resource-group myResourceGroup --name myScaleSet
    
  • Můžete také použít resources.azure.com nebo sady Azure SDK specifické pro jazyk .

Přesná prezentace výstupu závisí na možnostech, které zadáte příkazu. Následující příklad ukazuje zhuštěný ukázkový výstup z Azure CLI:

$ 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
      }
    ]
  }
}

Tyto vlastnosti poskytují souhrn aktuálního stavu modulu runtime virtuálních počítačů ve škálovací sadě, například stav rozšíření použitých ve škálovací sadě.

Zobrazení modelu virtuálních počítačů škálovací sady

Podobně jako má škálovací sada zobrazení modelu, každá instance virtuálního počítače ve škálovací sadě má vlastní zobrazení modelu. K dotazování zobrazení modelu pro konkrétní instanci virtuálního počítače ve škálovací sadě můžete použít:

  • Rozhraní REST API s výpočetními prostředky/virtualmachinescalesetvms/get následujícím způsobem:

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

    Get-AzVmssVm -ResourceGroupName "myResourceGroup" -VMScaleSetName "myScaleSet" -InstanceId instanceId
    
  • Azure CLI s az vmss show:

    az vmss show --resource-group myResourceGroup --name myScaleSet --instance-id instanceId
    
  • Můžete také použít resources.azure.com nebo sady Azure SDK.

Přesná prezentace výstupu závisí na možnostech, které zadáte příkazu. Následující příklad ukazuje zhuštěný ukázkový výstup z Azure CLI:

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

Tyto vlastnosti popisují konfiguraci instance virtuálního počítače ve škálovací sadě, nikoli konfiguraci škálovací sady jako celku. Model škálovací sady má overprovision například vlastnost, zatímco model instance virtuálního počítače ve škálovací sadě ne. Tento rozdíl spočívá v tom, že nadměrné zřízení je vlastností škálovací sady jako celku, nikoli jednotlivých instancí virtuálních počítačů ve škálovací sadě (další informace o nadměrném zřízení najdete v tématu Aspekty návrhu pro škálovací sady).

Zobrazení instance virtuálních počítačů škálovací sady

Podobně jako má škálovací sada zobrazení instance, každá instance virtuálního počítače ve škálovací sadě má vlastní zobrazení instance. K dotazování zobrazení instance pro konkrétní instanci virtuálního počítače ve škálovací sadě můžete použít:

  • Rozhraní REST API s výpočetními prostředky/virtualmachinescalesetvms/getinstanceview následujícím způsobem:

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

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

    az vmss get-instance-view --resource-group myResourceGroup --name myScaleSet --instance-id instanceId
    
  • Můžete také použít resources.azure.com nebo sady Azure SDK.

Přesná prezentace výstupu závisí na možnostech, které zadáte příkazu. Následující příklad ukazuje zhuštěný ukázkový výstup z Azure CLI:

$ 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}"
  },
}

Tyto vlastnosti popisují aktuální stav modulu runtime instance virtuálního počítače ve škálovací sadě, která zahrnuje všechna rozšíření použitá ve škálovací sadě.

Aktualizace vlastností globální škálovací sady

Chcete-li aktualizovat vlastnost globální škálovací sady, musíte aktualizovat vlastnost v modelu škálovací sady. Tuto aktualizaci můžete provést prostřednictvím:

  • Rozhraní REST API s výpočetními prostředky/virtualmachinescalesets/createorupdate následujícím způsobem:

    PUT https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/myResourceGroup/providers/Microsoft.Compute/virtualMachineScaleSets/myScaleSet?api-version={apiVersion}
    
  • Šablonu Resource Manageru s vlastnostmi z rozhraní REST API můžete nasadit a aktualizovat vlastnosti globální škálovací sady.

  • Azure PowerShell s využitím Update-AzVmss:

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

    • Úprava vlastnosti:

      az vmss update --set {propertyPath}={value}
      
    • Přidání objektu do vlastnosti seznamu ve škálovací sadě:

      az vmss update --add {propertyPath} {JSONObjectToAdd}
      
    • Odebrání objektu z vlastnosti seznamu ve škálovací sadě:

      az vmss update --remove {propertyPath} {indexToRemove}
      
    • Pokud jste dříve nasadili škálovací sadu pomocí az vmss create příkazu, můžete příkaz spustit az vmss create znovu a aktualizovat škálovací sadu. Ujistěte se, že všechny vlastnosti v az vmss create příkazu jsou stejné jako předtím, s výjimkou vlastností, které chcete upravit.

  • Můžete také použít resources.azure.com nebo sady Azure SDK.

Po aktualizaci modelu škálovací sady se nová konfigurace vztahuje na všechny nové virtuální počítače vytvořené ve škálovací sadě. Modely stávajících virtuálních počítačů ve škálovací sadě ale musí být stále aktuální s nejnovějším celkovým modelem škálovací sady. V modelu pro každý virtuální počítač je logická vlastnost, latestModelApplied která označuje, jestli je virtuální počítač aktuální s nejnovějším celkovým modelem škálovací sady (true znamená, že virtuální počítač je aktuální s nejnovějším modelem).

Vlastnosti s omezeními pro úpravy

Vlastnosti vytvoření času

Některé vlastnosti je možné nastavit pouze při vytváření škálovací sady. Mezi příklady patří typ účtu úložiště spravovaného disku s operačním systémem a domény selhání.

Vlastnosti, které lze změnit pouze na základě aktuální hodnoty

Některé vlastnosti mohou být změněny, s výjimkami v závislosti na aktuální hodnotě. Mezi tyto vlastnosti patří:

  • singlePlacementGroup
  • podsíť
  • imageReferenceSku
  • imageReferenceOffer
  • Zóny dostupnosti (Preview)

Příklad 1

Pokud chcete škálovací sadu aktualizovat tak, aby používala jinou verzi operačního systému, musíte nastavit všechny aktualizované vlastnosti v jednom volání. V tomto příkladu měníme z Unbuntu Server 20.04 na 22.04.

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

Příklad 2

Pokud chcete škálovací sadu aktualizovat tak, aby používala jinou verzi operačního systému, musíte nastavit všechny aktualizované vlastnosti v jednom volání. V tomto příkladu se měníme z Windows Serveru 2016 na Windows Server 2019.

$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

Vlastnosti, které vyžadují změnu přidělení

Některé vlastnosti se můžou změnit jenom na určité hodnoty, pokud jsou virtuální počítače ve škálovací sadě uvolněné. Mezi tyto vlastnosti patří:

  • Název skladové položky – Pokud nová skladová položka virtuálního počítače není na hardwaru, ve které je škálovací sada aktuálně zapnutá, musíte virtuální počítače ve škálovací sadě uvolnit před úpravou názvu skladové položky. Další informace najdete v tématu změna velikosti virtuálního počítače Azure.

Aktualizace specifické pro virtuální počítače

Některé úpravy se můžou použít u konkrétních virtuálních počítačů místo vlastností globální škálovací sady. V současné době je jedinou podporovanou aktualizací konkrétního virtuálního počítače připojení nebo odpojení datových disků k virtuálním počítačům ve škálovací sadě. Tato funkce je ve verzi Preview. Další informace najdete v dokumentaci k verzi Preview.

Scénáře

Aktualizace aplikací

Pokud je aplikace nasazená do škálovací sady prostřednictvím rozšíření, aktualizace konfigurace rozšíření způsobí aktualizaci aplikace v souladu se zásadami upgradu. Pokud máte například novou verzi skriptu ke spuštění v rozšíření vlastních skriptů, můžete aktualizovat vlastnost identifikátoru fileUris tak, aby odkazovaly na nový skript. V některých případech můžete chtít vynutit aktualizaci, i když se konfigurace rozšíření nezmění (například jste aktualizovali skript bez změny identifikátoru URI skriptu). V těchto případech můžete změnit forceUpdateTag tak, aby vynutil aktualizaci. Platforma Azure tuto vlastnost interpretuje. Pokud hodnotu změníte, neexistuje žádný vliv na to, jak se rozšíření spustí. Změna jednoduše vynutí opětovné spuštění rozšíření. Další informace o forceUpdateTag najdete v dokumentaci k rozhraní REST API pro rozšíření. Všimněte si, že forceUpdateTag lze použít se všemi rozšířeními, nejen s rozšířením vlastních skriptů.

Je také běžné, že aplikace se nasadí prostřednictvím vlastní image. Tento scénář je popsaný v následující části.

Aktualizace operačního systému

Pokud používáte image platformy Azure, můžete image aktualizovat úpravou imageReference (další informace najdete v dokumentaci k rozhraní REST API).

Poznámka:

U imagí platformy je běžné zadat nejnovější verzi pro referenční verzi image. Při vytváření, horizontálním navýšení kapacity a opětovném vytváření virtuálních počítačů se vytvoří s nejnovější dostupnou verzí. Neznamená to ale, že se image operačního systému automaticky aktualizuje v průběhu času při vydání nových verzí imagí. Samostatná funkce poskytuje automatické upgrady operačního systému. Další informace najdete v dokumentaci k automatickým upgradům operačního systému.

Pokud používáte vlastní image, můžete ji aktualizovat aktualizací ID imageReference (další informace najdete v dokumentaci k rozhraní REST API).

Příklady

Aktualizace image operačního systému pro škálovací sadu

Možná máte škálovací sadu, na které běží stará verze Ubuntu LTS 16.04. Chcete aktualizovat na novější verzi Ubuntu LTS 16.04, například na verzi 16.04.201801090. Vlastnost referenční verze obrázku není součástí seznamu, takže tyto vlastnosti můžete přímo upravit pomocí jednoho z následujících příkazů:

  • Azure PowerShell s update-AzVmss následujícím způsobem:

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

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

Případně můžete chtít změnit image, kterou vaše škálovací sada používá. Můžete například chtít aktualizovat nebo změnit vlastní image používanou škálovací sadou. Image, kterou vaše škálovací sada používá, můžete změnit aktualizací vlastnosti ID odkazu na image. Vlastnost ID odkazu na obrázek není součástí seznamu, takže tuto vlastnost můžete přímo upravit jedním z následujících příkazů:

  • Azure PowerShell s update-AzVmss následujícím způsobem:

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

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

Aktualizace nástroje pro vyrovnávání zatížení pro škálovací sadu

Řekněme, že máte škálovací sadu s Nástrojem pro vyrovnávání zatížení Azure a chcete nahradit Azure Load Balancer službou Aplikace Azure Gateway. Vlastnosti nástroje pro vyrovnávání zatížení a služby Application Gateway pro škálovací sadu jsou součástí seznamu, takže pomocí příkazů můžete odebrat nebo přidat prvky seznamu místo přímé úpravy vlastností:

  • 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}"}'
    

Poznámka:

Tyto příkazy předpokládají, že ve škálovací sadě existuje pouze jedna konfigurace PROTOKOLU IP a nástroj pro vyrovnávání zatížení. Pokud existuje více, možná budete muset použít jiný index seznamu než 0.

Další kroky

Běžné úlohy správy můžete provádět také ve škálovacích sadách pomocí Azure CLI nebo Azure PowerShellu.