Delen via


Zelfstudie: Een virtuele-machineschaalset wijzigen met behulp van Azure CLI

Tijdens de levenscyclus van uw toepassingen moet u mogelijk uw virtuele-machineschaalset wijzigen of bijwerken. Deze updates kunnen omvatten hoe u de configuratie van de schaalset bijwerkt of de toepassingsconfiguratie wijzigt. In dit artikel wordt beschreven hoe u een bestaande schaalset wijzigt met behulp van de Azure CLI.

Het schaalsetmodel bijwerken

Een schaalset heeft een 'schaalsetmodel' waarmee de gewenste status van de schaalset als geheel wordt vastgelegd. Als u een query wilt uitvoeren op het model voor een schaalset, kunt u az vmss show gebruiken:

az vmss show --resource-group myResourceGroup --name myScaleSet

De exacte presentatie van de uitvoer is afhankelijk van de opties die u aan de opdracht geeft. In het volgende voorbeeld ziet u verkorte voorbeelduitvoer van de Azure CLI:

{
  "id": "/subscriptions/resourceGroups/myResourceGroup/providers/Microsoft.Compute/virtualMachineScaleSets/myScaleSet",
  "location": "eastus",
  "name": "myScaleSet",
  "orchestrationMode": "Flexible",
  "platformFaultDomainCount": 1,
  "resourceGroup": "myResourceGroup",
  "sku": {
    "capacity": 2,
    "name": "Standard_DS1_v2",
    "tier": "Standard"
  },
  "timeCreated": "2022-11-29T22:16:43.250912+00:00",
  "type": "Microsoft.Compute/virtualMachineScaleSets",
    "networkProfile": {
      "networkApiVersion": "2020-11-01",
      "networkInterfaceConfigurations": [
        {
          "deleteOption": "Delete",
          "disableTcpStateTracking": false,
          "dnsSettings": {
            "dnsServers": []
          },
          "enableIpForwarding": false,
          "ipConfigurations": [
            {
              "applicationGatewayBackendAddressPools": [],
              "applicationSecurityGroups": [],
              "loadBalancerBackendAddressPools": [
                {
                  "id": "/subscriptions/resourceGroups/myResourceGroup/providers/Microsoft.Network/loadBalancers/myScaleSetLB/backendAddressPools/myScaleSetLBBEPool",
                  "resourceGroup": "myResourceGroup"
                }
              ],
              "name": "mysca2215IPConfig",
              "privateIpAddressVersion": "IPv4",
              "subnet": {
                "id": "/subscriptions/resourceGroups/myResourceGroup/providers/Microsoft.Network/virtualNetworks/myScaleSetVNET/subnets/myScaleSetSubnet",
                "resourceGroup": "myResourceGroup"
              }
            }
          ],
          "name": "mysca2215Nic",
          "networkSecurityGroup": {
            "id": "/subscriptions/resourceGroups/myResourceGroup/providers/Microsoft.Network/networkSecurityGroups/myScaleSetNSG",
            "resourceGroup": "myResourceGroup"
          },
          "primary": true
        }
      ]
    },
    "osProfile": {
      "allowExtensionOperations": true,
      "computerNamePrefix": "myScaleS",
      "linuxConfiguration": {
        "disablePasswordAuthentication": true,
        "enableVmAgentPlatformUpdates": false,
        "patchSettings": {
          "assessmentMode": "ImageDefault",
          "patchMode": "ImageDefault"
        },
        "provisionVmAgent": true,
      },
    },
    "storageProfile": {
      "imageReference": {
        "offer": "0001-com-ubuntu-server-jammy",
        "publisher": "Canonical",
        "sku": "22_04-lts",
        "version": "latest"
      },
      "osDisk": {
        "caching": "ReadWrite",
        "createOption": "FromImage",
        "deleteOption": "Delete",
        "diskSizeGb": 30,
        "managedDisk": {
          "storageAccountType": "Premium_LRS"
        },
        "osType": "Linux",
      }
    },
  },
}

U kunt az vmss update gebruiken om verschillende eigenschappen van uw schaalset bij te werken. Bijvoorbeeld het bijwerken van uw licentietype of een beveiligingsbeleid voor vm-exemplaren.

az vmss update --name MyScaleSet --resource-group MyResourceGroup --license-type windows_server
az vmss update --name MyScaleSet --resource-group MyResourceGroup --instance-id 4 --protect-from-scale-set-actions False --protect-from-scale-in

Als u de schaalset eerder met de az vmss create opdracht hebt geïmplementeerd, kunt u de az vmss create opdracht ook opnieuw uitvoeren om de schaalset bij te werken. Zorg ervoor dat alle eigenschappen in de az vmss create opdracht hetzelfde zijn als voorheen, met uitzondering van de eigenschappen die u wilt wijzigen. Hieronder verhogen we bijvoorbeeld het aantal exemplaren tot vijf.

Belangrijk

Vanaf november 2023 worden VM-schaalsets die zijn gemaakt met PowerShell en Azure CLI standaard ingesteld op de flexibele indelingsmodus als er geen indelingsmodus is opgegeven. Voor meer informatie over deze wijziging en welke acties u moet ondernemen, gaat u naar Belangrijke wijziging voor VMSS PowerShell/CLI-klanten - Microsoft Community Hub

az vmss create \
  --resource-group myResourceGroup \
  --name myScaleSet \
  --orchestration-mode flexible \
  --image RHELRaw8LVMGen2 \
  --admin-username azureuser \
  --generate-ssh-keys \
  --instance-count 5

Afzonderlijke VM-exemplaren in een schaalset bijwerken

Net als bij hoe een schaalset een modelweergave heeft, heeft elk VM-exemplaar in de schaalset een eigen modelweergave. Als u een query wilt uitvoeren op de modelweergave voor een bepaald VM-exemplaar in een schaalset, kunt u az vm show gebruiken.

az vm show --resource-group myResourceGroup --name myScaleSet_Instanace1

De exacte presentatie van de uitvoer is afhankelijk van de opties die u aan de opdracht geeft. In het volgende voorbeeld ziet u verkorte voorbeelduitvoer van de Azure CLI:

{
  "hardwareProfile": {
    "vmSize": "Standard_DS1_v2",
  },
  "id": "/subscriptions/resourceGroups/myResourceGroup/providers/Microsoft.Compute/virtualMachines/myScaleSet_Instance1",
  "location": "eastus",
  "name": "myScaleSet_Instance1",
  "networkProfile": {
    "networkInterfaces": [
      {
        "deleteOption": "Delete",
        "id": "/subscriptions/resourceGroups/myResourceGroup/providers/Microsoft.Network/networkInterfaces/mysca2215Nic-5cf164f7",
        "primary": true,
        "resourceGroup": "myResourceGroup"
      }
    ]
  },
  "osProfile": {
    "allowExtensionOperations": true,
    "computerName": "myScaleset_Computer1",
    "linuxConfiguration": {
      "disablePasswordAuthentication": true,
      "enableVmAgentPlatformUpdates": false,
      "patchSettings": {
        "assessmentMode": "ImageDefault",
        "patchMode": "ImageDefault"
      },
      "provisionVmAgent": true,
    },
  },
  "provisioningState": "Succeeded",
  "resourceGroup": "myResourceGroup",
  "storageProfile": {
    "dataDisks": [],
    "imageReference": {
      "exactVersion": "22.04.202204200",
      "offer": "0001-com-ubuntu-server-jammy",
      "publisher": "Canonical",
      "sku": "22_04-lts",
      "version": "latest"
    },
    "osDisk": {
      "caching": "ReadWrite",
      "createOption": "FromImage",
      "deleteOption": "Delete",
      "diskSizeGb": 30,
      "managedDisk": {
        "id": "/subscriptions/resourceGroups/myResourceGroup/providers/Microsoft.Compute/disks/myScaleSet_Instance1_disk1_e1a6c46a6b5f44d695fc9e38727267c2",
        "resourceGroup": "myResourceGroup",
        "storageAccountType": "Premium_LRS"
      },
      "name": "myScaleSet_Instance1_disk1_e1a6c46a6b5f44d695fc9e38727267c2",
      "osType": "Linux",
    }
  },
  "timeCreated": "2022-11-29T22:16:44.500895+00:00",
  "type": "Microsoft.Compute/virtualMachines",
  "virtualMachineScaleSet": {
    "id": "/subscriptions/resourceGroups/myResourceGroup/providers/Microsoft.Compute/virtualMachineScaleSets/myScaleSet",
    "resourceGroup": "myResourceGroup"
  },
}

Deze eigenschappen beschrijven de configuratie van een VM-exemplaar in een schaalset, niet de configuratie van de schaalset als geheel.

U kunt updates uitvoeren voor afzonderlijke VM-exemplaren in een schaalset, net zoals u een zelfstandige VIRTUELE machine zou doen. Als u bijvoorbeeld een nieuwe gegevensschijf koppelt aan exemplaar 1:

az vm disk attach --resource-group myResourceGroup --vm-name myScaleSet_Instance1 --name disk_name1 --new

Als u az vm show opnieuw uitvoert , zien we nu dat de nieuwe schijf is gekoppeld aan het VM-exemplaar.

  "storageProfile": {
    "dataDisks": [
      {
        "caching": "None",
        "createOption": "Empty",
        "deleteOption": "Detach",
        "diskSizeGb": 1023,
        "lun": 0,
        "managedDisk": {
          "id": "/subscriptions/49d84582-7207-4a4f-824e-044e83c71887/resourceGroups/myResourceGroup/providers/Microsoft.Compute/disks/disk_name1",
          "resourceGroup": "myResourceGroup",
          "storageAccountType": "Premium_LRS"
        },
        "name": "disk_name1",
        "toBeDetached": false,
      }
    ],

Een exemplaar toevoegen aan uw schaalset

Het kan voorkomen dat u een nieuwe VIRTUELE machine aan uw schaalset wilt toevoegen, maar andere configuratieopties wilt gebruiken dan in het schaalsetmodel wordt vermeld. Vm's kunnen tijdens het maken aan een schaalset worden toegevoegd met behulp van de opdracht az vm create en de naam van de schaalset opgeven waaraan u het exemplaar wilt toevoegen.

az vm create --name myNewInstance --resource-group myResourceGroup --vmss myScaleSet --image RHELRaw8LVMGen2
{
  "fqdns": "",
  "id": "/subscriptions/resourceGroups/myResourceGroup/providers/Microsoft.Compute/virtualMachines/myNewInstance",
  "location": "eastus",
  "macAddress": "60-45-BD-D7-13-DD",
  "powerState": "VM running",
  "privateIpAddress": "10.0.0.6",
  "publicIpAddress": "20.172.144.96",
  "resourceGroup": "myResourceGroup",
  "zones": ""

Als we vervolgens onze schaalset controleren, zien we dat het nieuwe exemplaar is toegevoegd.

az vm list --resource-group myResourceGroup --output table
Name                 ResourceGroup    Location
-------------------  ---------------  ----------
myNewInstance         myResourceGroup  eastus
myScaleSet_Instance1  myResourceGroup  eastus
myScaleSet_Instance1  myResourceGroup  eastus

Vm's up-to-date brengen met het meest recente schaalsetmodel

Notitie

Upgrademodi worden momenteel niet ondersteund op virtuele-machineschaalsets met de flexibele indelingsmodus.

Schaalsets hebben een upgradebeleid waarmee wordt bepaald hoe VM's up-to-date worden gebracht met het nieuwste schaalsetmodel. De drie modi voor het upgradebeleid zijn:

  • Automatisch : in deze modus biedt de schaalset geen garanties over de volgorde van vm's die worden neergezet. De schaalset kan alle VM's tegelijkertijd uitschakelen.
  • Rolling : in deze modus wordt de update in batches met een optionele onderbrekingstijd tussen batches uitgerold door de schaalset.
  • Handmatig: wanneer u het schaalsetmodel bijwerkt, gebeurt er in deze modus niets met bestaande VM's totdat een handmatige update wordt geactiveerd.

Als uw schaalset is ingesteld op handmatige upgrades, kunt u een handmatige upgrade activeren met behulp van az vmss update.

az vmss update --resource-group myResourceGroup --name myScaleSet

Notitie

Service Fabric-clusters kunnen alleen de automatische modus gebruiken, maar de update wordt anders verwerkt. Zie Service Fabric-toepassingsupgrades voor meer informatie.

Een schaalset opnieuw instellen

Virtuele-machineschaalsets genereren een unieke naam voor elke virtuele machine in de schaalset. De naamconventie verschilt per indelingsmodus:

  • Flexibele indelingsmodus: {scale-set-name}_{8-char-guid}
  • Uniforme indelingsmodus: {scale-set-name}_{instance-id}

Gebruik az vmss reimage en geef de exemplaarnamen op in de gevallen waarin u de installatiekopie van een specifiek exemplaar opnieuw moet instellen.

az vmss reimage --resource-group myResourceGroup --name myScaleSet --instance-id myScaleSet_Instance1

De installatiekopieën van het besturingssysteem voor uw schaalset bijwerken

Mogelijk hebt u een schaalset waarop een oude versie van Ubuntu wordt uitgevoerd. U wilt bijwerken naar een nieuwere versie van Ubuntu, zoals versie 22.04.202204200. De eigenschap image reference version maakt geen deel uit van een lijst, dus u kunt deze eigenschappen rechtstreeks wijzigen met behulp van az vmss update.

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

U kunt ook de installatiekopieën wijzigen die door uw schaalset worden gebruikt. U kunt bijvoorbeeld een aangepaste installatiekopieën bijwerken of wijzigen die door uw schaalset worden gebruikt. U kunt de afbeelding wijzigen die door de schaalset wordt gebruikt door de eigenschap afbeeldingsreferentie-id bij te werken. De eigenschap image reference ID maakt geen deel uit van een lijst, dus u kunt deze eigenschap rechtstreeks wijzigen met behulp van 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

Als u Azure-platforminstallatiekopieën gebruikt, kunt u de installatiekopie bijwerken door de imageReference te wijzigen (zie de REST API-documentatie voor meer informatie).

Notitie

Met platforminstallatiekopieën is het gebruikelijk om 'nieuwste' op te geven voor de referentieversie van de installatiekopieën. Wanneer u vm's maakt, uitschaalt en opnieuw maakt, worden vm's gemaakt met de nieuwste beschikbare versie. Het betekent echter niet dat de installatiekopieën van het besturingssysteem na verloop van tijd automatisch worden bijgewerkt wanneer nieuwe installatiekopieën worden uitgebracht. Een afzonderlijke functie biedt automatische upgrades van het besturingssysteem. Zie de documentatie voor automatische besturingssysteemupgrades voor meer informatie.

Als u aangepaste installatiekopieën gebruikt, kunt u de installatiekopie bijwerken door de imageReference-id bij te werken (zie de REST API-documentatie voor meer informatie).

De load balancer voor uw schaalset bijwerken

Stel dat u een schaalset hebt met een Azure Load Balancer en u de Azure Load Balancer wilt vervangen door een Azure-toepassing Gateway. De eigenschappen van de load balancer en Application Gateway voor een schaalset maken deel uit van een lijst, zodat u de opdrachten kunt gebruiken om lijstelementen te verwijderen of toe te voegen in plaats van de eigenschappen rechtstreeks te wijzigen.

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

Notitie

Bij deze opdrachten wordt ervan uitgegaan dat er slechts één IP-configuratie en load balancer aanwezig is in de schaalset. Als er meerdere zijn, moet u mogelijk een andere lijstindex dan 0 gebruiken.

Volgende stappen

In deze zelfstudie hebt u geleerd hoe u verschillende aspecten van uw schaalset en afzonderlijke exemplaren kunt wijzigen.

  • Het schaalsetmodel bijwerken
  • Een afzonderlijk VM-exemplaar in een schaalset bijwerken
  • Een exemplaar toevoegen aan uw schaalset
  • Vm's up-to-date brengen met het meest recente schaalsetmodel
  • Een schaalset opnieuw instellen
  • De installatiekopieën van het besturingssysteem voor uw schaalset bijwerken
  • De load balancer voor uw schaalset bijwerken