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

Poznámka

Mnoho kroků uvedených v tomto dokumentu platí pro Virtual Machine Scale Sets s použitím režimu jednotné orchestrace. Pro nové úlohy doporučujeme používat flexibilní orchestraci. Další informace najdete v tématu Režimy orchesration pro Virtual Machine Scale Sets 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 aktualizaci konfigurace škálovací sady nebo změnu konfigurace aplikace. Tento článek popisuje, jak upravit existující škálovací sadu pomocí rozhraní REST API, Azure PowerShell 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 na škálovací sadu můžete použít

Přesná prezentace výstupu závisí na možnostech, které příkazu poskytnete. 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:

Přesná prezentace výstupu závisí na možnostech, které příkazu poskytnete. 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 na škálovací sadu.

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

Podobně jako má škálovací sada zobrazení modelu, má každá instance virtuálního počítače ve škálovací sadě 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 compute/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 pomocí rutiny 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é příkazu poskytnete. 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 pro instanci virtuálního počítače ve škálovací sadě ne. Tento rozdíl je ten, že nadměrné zřizování je vlastnost pro škálovací sadu jako celek, nikoli pro jednotlivé instance 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 škálovací sady virtuálních počítačů

Podobně jako má škálovací sada zobrazení instance, má každá instance virtuálního počítače ve škálovací sadě 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:

Přesná prezentace výstupu závisí na možnostech, které příkazu poskytnete. 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á pro škálovací sadu.

Postup aktualizace vlastností globální škálovací sady

Pokud chcete 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, sadami virtualmachinescalesets nebo createorupdate :

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

  • Azure PowerShell s 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 ji aktualizovat opětovným az vmss create spuštěním příkazu. 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 použije 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 s názvem 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 úprav

Vlastnosti při vytváření

Některé vlastnosti je možné nastavit pouze při vytváření škálovací sady. Mezi tyto vlastnosti patří:

  • Zóny dostupnosti
  • Vydavatel odkazu na obrázek
  • Referenční nabídka obrázku
  • Typ účtu úložiště disku spravovaného operačního systému
  • 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 – pokud má singlePlacementGroup hodnotu true, může být změněna na hodnotu false. Pokud je však hodnota singlePlacementGroup false, nemusí být změněna na hodnotu true.
  • podsíť – Podsíť škálovací sady se může změnit, pokud jsou původní i nová podsíť ve stejné virtuální síti.
  • imageReferenceSku – referenční skladovou položku image je možné aktualizovat pro schválené distribuce Linuxu, image serveru/klienta Windows a image bez informací o plánu.

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

Některé vlastnosti je možné změnit na určité hodnoty pouze v případě, že jsou virtuální počítače ve škálovací sadě uvolněné. Mezi tyto vlastnosti patří:

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

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

Určité úpravy je možné použít u konkrétních virtuálních počítačů místo vlastností globální škálovací sady. V současné době se podporuje pouze aktualizace specifická pro virtuální počítače, která je 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 nasazena do škálovací sady prostřednictvím rozšíření, aktualizace konfigurace rozšíření způsobí aktualizaci aplikace v souladu se zásadami upgradu. Pokud například máte novou verzi skriptu, který se má spustit v rozšíření vlastních skriptů, můžete aktualizovat vlastnost fileUris tak, aby odkazovat 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 úpravou forceUpdateTag vynutit aktualizaci. Platforma Azure tuto vlastnost neinterpretuje. Pokud hodnotu změníte, nebude to mít žádný vliv na to, jak rozšíření běží. 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 je možné použít se všemi rozšířeními, nejen s rozšířením vlastních skriptů.

Je také běžné, že se aplikace nasazují 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ší" pro referenční verzi image. Když vytvoříte, škálujete na více instancí a obnovíte image, virtuální počítače 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 image 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, ve 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 verze odkazu na image není součástí seznamu, takže tyto vlastnosti můžete přímo upravit jedním z následujících příkazů:

  • Azure PowerShell rutinou Update-AzVmss následujícím způsobem:

    Update-AzVmss -ResourceGroupName "myResourceGroup" -VMScaleSetName "myScaleSet" -ImageReferenceVersion 16.04.201801090
    
  • Azure CLI s příkazem 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 ji můžete přímo upravit jedním z následujících příkazů:

  • Azure PowerShell rutinou 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 příkazem 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 Azure Load Balancer a chcete Azure Load Balancer nahradit Azure Application Gateway. Nástroj pro vyrovnávání zatížení a vlastnosti Application Gateway pro škálovací sadu jsou součástí seznamu, takže k odebrání nebo přidání prvků seznamu můžete použít příkazy místo úprav vlastností přímo:

  • 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 IP adresy a nástroj pro vyrovnávání zatížení. Pokud jich je 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 PowerShell.