Virtuálisgép-méretezési csoport módosítása

Feljegyzés

A dokumentumban felsorolt lépések nagy része egységes vezénylési módot használó virtuálisgép-méretezési csoportokra vonatkozik. Javasoljuk, hogy rugalmas vezénylést használjunk az új számítási feladatokhoz. További információ: Orchesration modes for Virtual Machine Scale Sets in Azure.

Előfordulhat, hogy az alkalmazások teljes életciklusa során módosítania vagy frissítenie kell a virtuálisgép-méretezési csoportot. Ezek a frissítések magukban foglalhatják a méretezési csoport konfigurációjának frissítését vagy az alkalmazás konfigurációjának módosítását. Ez a cikk azt ismerteti, hogyan módosíthatja a meglévő méretezési csoportokat a REST API-k, az Azure PowerShell vagy az Azure CLI használatával.

Alapfogalmak

A méretezési csoport modellje

A méretezési csoportok olyan "méretezési csoportmodellel" rendelkeznek, amely a méretezési csoport kívánt állapotát rögzíti egészként. A méretezési csoport modelljének lekérdezéséhez használhatja a

  • REST API számítási/virtualmachinescalesetekkel/get a következőképpen:

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

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

    az vmss show --resource-group myResourceGroup --name myScaleSet
    
  • A resources.azure.com vagy a nyelvspecifikus Azure SDK-k is használhatók.

A kimenet pontos megjelenítése a parancshoz megadott beállításoktól függ. Az alábbi példa az Azure CLI sűrített mintakimenetét mutatja be:

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

Ezek a tulajdonságok a méretezési csoport egészére vonatkoznak.

A méretezési csoport példánynézete

A méretezési csoportok egy "méretezési csoport példánynézetével" is rendelkezik, amely a méretezési csoport aktuális futtatókörnyezeti állapotát rögzíti egészként. A méretezési csoport példánynézetének lekérdezéséhez a következőt használhatja:

  • REST API compute /virtualmachinescalesets/getinstanceview használatával az alábbiak szerint:

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

    Get-AzVmss -ResourceGroupName "myResourceGroup" -VMScaleSetName "myScaleSet" -InstanceView
    
  • Azure CLI az vmss get-instance-view használatával:

    az vmss get-instance-view --resource-group myResourceGroup --name myScaleSet
    
  • A resources.azure.com vagy a nyelvspecifikus Azure SDK-k is használhatók

A kimenet pontos megjelenítése a parancshoz megadott beállításoktól függ. Az alábbi példa az Azure CLI sűrített mintakimenetét mutatja be:

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

Ezek a tulajdonságok összefoglalják a méretezési csoportban lévő virtuális gépek aktuális futtatókörnyezeti állapotát, például a méretezési csoportra alkalmazott bővítmények állapotát.

A méretezési csoport virtuálisgép-modell nézete

A méretezési csoport modellnézetéhez hasonlóan a méretezési csoport minden virtuálisgép-példánya saját modellnézettel rendelkezik. Ha egy méretezési csoportban egy adott virtuálisgép-példány modellnézetét szeretné lekérdezni, a következőket használhatja:

  • REST API számítási/virtualmachinescalesetvms/get a következőképpen:

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

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

    az vmss show --resource-group myResourceGroup --name myScaleSet --instance-id instanceId
    
  • A resources.azure.com vagy az Azure SDK-k is használhatók.

A kimenet pontos megjelenítése a parancshoz megadott beállításoktól függ. Az alábbi példa az Azure CLI sűrített mintakimenetét mutatja be:

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

Ezek a tulajdonságok a méretezési csoportban lévő virtuálisgép-példány konfigurációját írják le, nem pedig a méretezési csoport egészének konfigurációját. A méretezési csoport modellje például tulajdonságként van overprovision megadva, míg a méretezési csoporton belüli virtuálisgép-példány modellje nem. Ez a különbség azért van, mert a túlterjedés a méretezési csoport egészének tulajdonsága, nem pedig a méretezési csoportban lévő egyes virtuálisgép-példányok (a túlterjedéssel kapcsolatos további információkért lásd a méretezési csoportok tervezési szempontjait).

A méretezési csoport virtuálisgép-példányának nézete

A méretezési csoport példánynézetéhez hasonlóan a méretezési csoport minden virtuálisgép-példánya saját példánynézettel rendelkezik. Ha le szeretné kérdezni egy adott virtuálisgép-példány példánynézetét egy méretezési csoportban, a következőket használhatja:

A kimenet pontos megjelenítése a parancshoz megadott beállításoktól függ. Az alábbi példa az Azure CLI sűrített mintakimenetét mutatja be:

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

Ezek a tulajdonságok egy méretezési csoportban lévő virtuálisgép-példány aktuális futtatókörnyezeti állapotát írják le, amely magában foglalja a méretezési csoportra alkalmazott bővítményeket is.

Globális méretezési csoport tulajdonságainak frissítése

A globális méretezési csoport tulajdonságának frissítéséhez frissítenie kell a tulajdonságot a méretezési csoport modelljében. Ezt a frissítést a következő módon végezheti el:

  • REST API számítási/virtualmachinescalesets/createorupdate használatával az alábbiak szerint:

    PUT https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/myResourceGroup/providers/Microsoft.Compute/virtualMachineScaleSets/myScaleSet?api-version={apiVersion}
    
  • A globális méretezési csoport tulajdonságainak frissítéséhez a REST API-ból származó tulajdonságokat tartalmazó Resource Manager-sablont helyezhet üzembe.

  • Azure PowerShell az Update-AzVmss használatával:

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

    • Tulajdonság módosítása:

      az vmss update --set {propertyPath}={value}
      
    • Objektum hozzáadása egy méretezési csoport listatulajdonságához:

      az vmss update --add {propertyPath} {JSONObjectToAdd}
      
    • Objektum eltávolítása egy méretezési csoport listatulajdonságából:

      az vmss update --remove {propertyPath} {indexToRemove}
      
    • Ha korábban telepítette a méretezési csoportot a az vmss create paranccsal, újra futtathatja a az vmss create parancsot a méretezési csoport frissítéséhez. Győződjön meg arról, hogy a az vmss create parancs összes tulajdonsága megegyezik a korábbiakéval, kivéve a módosítani kívánt tulajdonságokat.

  • A resources.azure.com vagy az Azure SDK-k is használhatók.

A méretezési csoport modelljének frissítése után az új konfiguráció a méretezési csoportban létrehozott összes új virtuális gépre érvényes. A méretezési csoportban lévő meglévő virtuális gépek modelljeit azonban továbbra is naprakészen kell létrehozni a legújabb teljes méretezési csoport modelljével. Az egyes virtuális gépek modelljében egy logikai tulajdonság található, amelynek a neve latestModelApplied azt jelzi, hogy a virtuális gép naprakész-e a legújabb teljes méretezési csoport modelljével (true ez azt jelenti, hogy a virtuális gép naprakész a legújabb modellel).

Módosítási korlátozásokkal rendelkező tulajdonságok

Létrehozási idő tulajdonságai

Egyes tulajdonságok csak a méretezési csoport létrehozásakor állíthatók be. Ilyenek például a felügyelt operációsrendszer-lemez tárfióktípusa és a tartalék tartományok.

Tulajdonságok, amelyek csak az aktuális érték alapján módosíthatók

Egyes tulajdonságok módosíthatók, az aktuális értéktől függően kivételekkel. Ezek a tulajdonságok a következők:

  • singlePlacementGroup
  • alhálózat
  • imageReferenceSku
  • imageReferenceOffer
  • Rendelkezésre állási zónák (előzetes verzió)

1. példa

Ha a méretezési csoportot egy másik operációsrendszer-verzió használatára szeretné frissíteni, egyetlen hívásban kell beállítania az összes frissített tulajdonságot. Ebben a példában az Unbuntu Server 20.04-ről 22.04-re változunk.

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

2. példa

Ha a méretezési csoportot egy másik operációsrendszer-verzió használatára szeretné frissíteni, egyetlen hívásban kell beállítania az összes frissített tulajdonságot. Ebben a példában Windows Server 2016-ról Windows Server 2019-re váltunk.

$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

A felszabadítást igénylő tulajdonságok módosítása

Egyes tulajdonságok csak bizonyos értékekre módosíthatók, ha a méretezési csoportban lévő virtuális gépek felszabadítva vannak. Ezek a tulajdonságok a következők:

  • Termékváltozat neve – Ha az új virtuálisgép-termékváltozat nem támogatott azon a hardveren, amelyen a méretezési csoport jelenleg működik, a termékváltozat nevének módosítása előtt fel kell szabadítania a méretezési csoportban lévő virtuális gépeket. További információkért tekintse meg az Azure-beli virtuális gépek átméretezését.

Virtuálisgép-specifikus frissítések

Bizonyos módosítások bizonyos virtuális gépekre alkalmazhatók a globális méretezési csoport tulajdonságai helyett. Jelenleg az egyetlen támogatott virtuálisgép-specifikus frissítés az adatlemezek csatlakoztatása/leválasztása a méretezési csoportban lévő virtuális gépekhez vagy azokról. Ez a funkció előzetes verzióban érhető el. További információkért tekintse meg az előzetes verzió dokumentációját.

Forgatókönyvek

Alkalmazásfrissítések

Ha egy alkalmazás bővítményeken keresztül van üzembe helyezve egy méretezési csoportban, a bővítménykonfiguráció frissítése miatt az alkalmazás a frissítési szabályzatnak megfelelően frissül. Ha például egy egyéni szkriptbővítményben futtatandó szkript új verziójával rendelkezik, frissítheti a fileUris tulajdonságot, hogy az az új szkriptre mutasson. Bizonyos esetekben előfordulhat, hogy a bővítménykonfiguráció változatlansága ellenére is szeretné kényszeríteni a frissítést (például a szkriptet a szkript URI-jának módosítása nélkül frissítette). Ezekben az esetekben a forceUpdateTag módosításával kényszerítheti a frissítést. Az Azure-platform nem értelmezi ezt a tulajdonságot. Ha módosítja az értéket, nincs hatással a bővítmény működésére. A módosítás egyszerűen kényszeríti a bővítmény újrafuttatását. A forceUpdateTagről további információt a bővítmények REST API-dokumentációjában talál. Vegye figyelembe, hogy a forceUpdateTag az összes bővítményhez használható, nem csak az egyéni szkriptbővítményhez.

Az is gyakori, hogy az alkalmazások egyéni rendszerképen keresztül lesznek üzembe helyezve. Ezt a forgatókönyvet a következő szakasz ismerteti.

Operációs rendszer Frissítések

Ha Azure-platformrendszerképeket használ, az imageReference módosításával frissítheti a rendszerképet (további információkért tekintse meg a REST API dokumentációját).

Feljegyzés

A platformrendszerképek esetében gyakori, hogy a rendszerkép referenciaverziójának "legújabb" elemét adja meg. A virtuális gépek létrehozása, vertikális felskálázása és újraimázásakor a rendszer a legújabb elérhető verzióval hozza létre a virtuális gépeket. Ez azonban nem jelenti azt, hogy az operációsrendszer-rendszerkép automatikusan frissül az új rendszerképverziók megjelenésekor. Egy külön funkció automatikus operációsrendszer-frissítéseket biztosít. További információkért tekintse meg az automatikus operációsrendszer-frissítések dokumentációját.

Egyéni rendszerképek használata esetén az imageReference azonosítójának frissítésével frissítheti a képet (további információ: REST API-dokumentáció).

Példák

A méretezési csoport operációsrendszer-lemezképének frissítése

Előfordulhat, hogy olyan méretezési csoport van, amely az Ubuntu LTS 16.04 régi verzióját futtatja. Frissíteni szeretne az Ubuntu LTS 16.04 újabb verziójára, például a 16.04.201801090-es verzióra. A képhivatkozás verziótulajdonsága nem része a listáknak, így közvetlenül módosíthatja ezeket a tulajdonságokat az alábbi parancsok egyikével:

  • Az Azure PowerShell és az Update-AzVmss az alábbiak szerint történik:

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

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

Másik lehetőségként módosíthatja a méretezési csoport által használt képet. Előfordulhat például, hogy frissíteni vagy módosítani szeretné a méretezési csoport által használt egyéni rendszerképet. A méretezési csoport által használt lemezképet a rendszerkép referencia-azonosító tulajdonságának frissítésével módosíthatja. A képhivatkozás azonosító tulajdonsága nem része a listáknak, így közvetlenül módosíthatja ezt a tulajdonságot az alábbi parancsok egyikével:

  • Az Azure PowerShell és az Update-AzVmss az alábbiak szerint történik:

    Update-AzVmss `
        -ResourceGroupName "myResourceGroup" `
        -VMScaleSetName "myScaleSet" `
        -ImageReferenceId /subscriptions/{subscriptionID}/resourceGroups/myResourceGroup/providers/Microsoft.Compute/images/myNewImage
    
  • Az Azure CLI és az 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
    

A méretezési csoport terheléselosztójának frissítése

Tegyük fel, hogy rendelkezik egy méretezési csoporttal egy Azure Load Balancerrel, és az Azure Load Balancert egy Azure-alkalmazás-átjáróra szeretné cserélni. A méretezési csoportok terheléselosztójának és Application Gateway-tulajdonságai egy lista részei, így a parancsokkal eltávolíthatja vagy hozzáadhat listaelemeket a tulajdonságok közvetlen módosítása helyett:

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

Feljegyzés

Ezek a parancsok feltételezik, hogy a méretezési csoportban csak egy IP-konfiguráció és terheléselosztó található. Ha több van, előfordulhat, hogy nem 0 listaindexet kell használnia.

Következő lépések

Az Azure CLI-vel vagy az Azure PowerShell-lel közös felügyeleti feladatokat is végrehajthat méretezési csoportokon.