Kurz: Úprava škálovací sady virtuálních počítačů pomocí Azure CLI

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í Azure CLI.

Aktualizace modelu š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 příkaz az vmss show:

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

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:

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

Pomocí příkazu az vmss update můžete aktualizovat různé vlastnosti škálovací sady. Například aktualizace typu licence nebo zásad ochrany instancí virtuálních počítačů.

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

Pokud jste dříve škálovací sadu nasadili 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. Například níže zvyšujeme počet instancí na pět.

Důležité

Od listopadu 2023 se škálovací sady virtuálních počítačů vytvořené pomocí PowerShellu a Azure CLI ve výchozím nastavení nastaví do flexibilního režimu orchestrace, pokud není zadaný žádný režim orchestrace. Další informace o této změně a akcích, které byste měli provést, najdete v tématu Zásadní změna pro zákazníky PowerShellu nebo rozhraní příkazového řádku VMSS – 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

Aktualizace jednotlivých instancí virtuálních počítačů ve škálovací sadě

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. Pokud chcete dotazovat zobrazení modelu pro konkrétní instanci virtuálního počítače ve škálovací sadě, můžete použít příkaz az vm show.

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

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:

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

Tyto vlastnosti popisují konfiguraci instance virtuálního počítače ve škálovací sadě, nikoli konfiguraci škálovací sady jako celku.

Aktualizace jednotlivých instancí virtuálních počítačů ve škálovací sadě můžete provádět stejně jako samostatný virtuální počítač. Například připojení nového datového disku k instanci 1:

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

Když spustíte příkaz az vm show znovu, uvidíme, že instance virtuálního počítače má připojený nový disk.

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

Přidání instance do škálovací sady

Někdy můžete chtít do škálovací sady přidat nový virtuální počítač, ale chcete jiné možnosti konfigurace než pak uvedené v modelu škálovací sady. Virtuální počítače je možné přidat do škálovací sady během vytváření pomocí příkazu az vm create a zadáním názvu škálovací sady, do které chcete instanci přidat.

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": ""

Pokud pak zkontrolujeme naši škálovací sadu, uvidíme přidanou novou instanci.

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

Aktualizace virtuálních počítačů pomocí nejnovějšího modelu škálovací sady

Poznámka:

Režimy upgradu se v současné době nepodporují ve škálovacích sadách virtuálních počítačů pomocí flexibilního režimu orchestrace.

Škálovací sady mají zásadu upgradu, která určuje, jak se virtuální počítače aktualizují pomocí nejnovějšího modelu škálovací sady. Pro zásady upgradu existují tři režimy:

  • Automaticky – V tomto režimu škálovací sada neposkytuje žádné záruky týkající se pořadí vysílaných virtuálních počítačů. Škálovací sada může současně snížit všechny virtuální počítače.
  • Rolling – V tomto režimu škálovací sada zavádí aktualizaci v dávkách s volitelným časem pozastavení mezi dávkami.
  • Ruční – V tomto režimu se při aktualizaci modelu škálovací sady nic nestane s existujícími virtuálními počítači, dokud se neaktivuje ruční aktualizace.

Pokud je vaše škálovací sada nastavená na ruční upgrady, můžete aktivovat ruční upgrade pomocí příkazu az vmss update.

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

Poznámka:

Clustery Service Fabric můžou používat pouze automatický režim, ale aktualizace se zpracovává jinak. Další informace najdete v tématu Upgrady aplikací Service Fabric.

Opětovné vytvoření škálovací sady

Škálovací sady virtuálních počítačů vygenerují jedinečný název pro každý virtuální počítač ve škálovací sadě. Zásady vytváření názvů se liší podle režimu orchestrace:

  • Flexibilní režim orchestrace: {scale-set-name}_{8-char-guid}
  • Jednotný režim orchestrace: {scale-set-name}_{instance-id}

V případech, kdy potřebujete znovu vytvořit konkrétní instanci, použijte příkaz az vmss reimage a zadejte názvy instancí.

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

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

Možná máte škálovací sadu, na které běží stará verze Ubuntu. Chcete aktualizovat na novější verzi Ubuntu, například na verzi 22.04.202204200. Vlastnost referenční verze image není součástí seznamu, takže tyto vlastnosti můžete přímo upravit pomocí příkazu az vmss update.

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

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 pomocí příkazu 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

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).

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í.

# 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

V tomto kurzu jste se dozvěděli, jak upravit různé aspekty škálovací sady a jednotlivých instancí.

  • Aktualizace modelu škálovací sady
  • Aktualizace jednotlivých instancí virtuálního počítače ve škálovací sadě
  • Přidání instance do škálovací sady
  • Aktualizace virtuálních počítačů pomocí nejnovějšího modelu škálovací sady
  • Opětovné vytvoření škálovací sady
  • Aktualizace image operačního systému pro škálovací sadu
  • Aktualizace nástroje pro vyrovnávání zatížení pro škálovací sadu