Udostępnij za pośrednictwem


Samouczek: modyfikowanie zestawu skalowania maszyn wirtualnych przy użyciu interfejsu wiersza polecenia platformy Azure

W całym cyklu życia aplikacji może być konieczne zmodyfikowanie lub zaktualizowanie zestawu skalowania maszyn wirtualnych. Te aktualizacje mogą obejmować sposób aktualizowania konfiguracji zestawu skalowania lub zmiany konfiguracji aplikacji. W tym artykule opisano sposób modyfikowania istniejącego zestawu skalowania przy użyciu interfejsu wiersza polecenia platformy Azure.

Aktualizowanie modelu zestawu skalowania

Zestaw skalowania ma "model zestawu skalowania", który przechwytuje żądany stan zestawu skalowania jako całości. Aby wykonać zapytanie dotyczące modelu dla zestawu skalowania, możesz użyć polecenia az vmss show:

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

Dokładna prezentacja danych wyjściowych zależy od opcji, które podajesz do polecenia. W poniższym przykładzie przedstawiono skrócone przykładowe dane wyjściowe z interfejsu wiersza polecenia platformy Azure:

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

Aby zaktualizować różne właściwości zestawu skalowania, możesz użyć polecenia az vmss update . Na przykład zaktualizowanie typu licencji lub zasad ochrony wystąpienia maszyn wirtualnych.

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

Ponadto jeśli wcześniej wdrożono zestaw skalowania za pomocą az vmss create polecenia , możesz uruchomić az vmss create polecenie ponownie, aby zaktualizować zestaw skalowania. Upewnij się, że wszystkie właściwości w poleceniu az vmss create są takie same jak poprzednio, z wyjątkiem właściwości, które chcesz zmodyfikować. Na przykład poniżej zwiększamy liczbę wystąpień do pięciu.

Ważne

Od listopada 2023 r. zestawy skalowania maszyn wirtualnych utworzone przy użyciu programu PowerShell i interfejsu wiersza polecenia platformy Azure będą domyślnie ustawiać tryb elastycznej orkiestracji, jeśli nie określono trybu aranżacji. Aby uzyskać więcej informacji na temat tej zmiany i akcji, które należy wykonać, zobacz Zmiana powodująca niezgodność dla klientów programu PowerShell/interfejsu wiersza polecenia usługi 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

Aktualizowanie poszczególnych wystąpień maszyn wirtualnych w zestawie skalowania

Podobnie jak w przypadku widoku modelu zestaw skalowania, każde wystąpienie maszyny wirtualnej w zestawie skalowania ma własny widok modelu. Aby wykonać zapytanie dotyczące widoku modelu dla określonego wystąpienia maszyny wirtualnej w zestawie skalowania, możesz użyć polecenia az vm show.

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

Dokładna prezentacja danych wyjściowych zależy od opcji, które podajesz do polecenia. W poniższym przykładzie przedstawiono skrócone przykładowe dane wyjściowe z interfejsu wiersza polecenia platformy Azure:

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

Te właściwości opisują konfigurację wystąpienia maszyny wirtualnej w zestawie skalowania, a nie konfigurację zestawu skalowania jako całości.

Aktualizacje poszczególnych wystąpień maszyn wirtualnych można wykonywać w zestawie skalowania tak samo jak w przypadku autonomicznej maszyny wirtualnej. Na przykład dołączenie nowego dysku danych do wystąpienia 1:

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

Ponownie uruchomiono polecenie az vm show , zobaczymy, że wystąpienie maszyny wirtualnej ma dołączony nowy dysk.

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

Dodawanie wystąpienia do zestawu skalowania

Czasami możesz dodać nową maszynę wirtualną do zestawu skalowania, ale chcesz użyć różnych opcji konfiguracji niż wtedy w modelu zestawu skalowania. Maszyny wirtualne można dodać do zestawu skalowania podczas tworzenia za pomocą polecenia az vm create i określić nazwę zestawu skalowania, do którego ma zostać dodane wystąpienie.

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

Jeśli sprawdzimy nasz zestaw skalowania, zobaczymy dodane nowe wystąpienie.

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

Aktualizowanie maszyn wirtualnych przy użyciu najnowszego modelu zestawu skalowania

Uwaga

Tryby uaktualniania nie są obecnie obsługiwane w zestawach skalowania maszyn wirtualnych przy użyciu trybu elastycznej aranżacji.

Zestawy skalowania mają "zasady uaktualniania", które określają, w jaki sposób maszyny wirtualne są wprowadzane na bieżąco z najnowszym modelem zestawu skalowania. Trzy tryby zasad uaktualniania to:

  • Automatyczne — w tym trybie zestaw skalowania nie gwarantuje, że kolejność maszyn wirtualnych zostanie wyłączona. Zestaw skalowania może jednocześnie zdjąć wszystkie maszyny wirtualne.
  • Stopniowe — w tym trybie zestaw skalowania wdraża aktualizację w partiach z opcjonalnym czasem wstrzymania między partiami.
  • Ręczne — w tym trybie po zaktualizowaniu modelu zestawu skalowania nic się nie dzieje z istniejącymi maszynami wirtualnymi do momentu wyzwolenia ręcznej aktualizacji.

Jeśli zestaw skalowania jest ustawiony na uaktualnienia ręczne, możesz wyzwolić uaktualnienie ręczne przy użyciu polecenia az vmss update.

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

Uwaga

Klastry usługi Service Fabric mogą używać tylko trybu automatycznego , ale aktualizacja jest obsługiwana inaczej. Aby uzyskać więcej informacji, zobacz Uaktualnianie aplikacji usługi Service Fabric.

Ponowne tworzenie obrazu zestawu skalowania

Zestawy skalowania maszyn wirtualnych wygenerują unikatową nazwę dla każdej maszyny wirtualnej w zestawie skalowania. Konwencja nazewnictwa różni się w zależności od trybu aranżacji:

  • Tryb elastycznej aranżacji: {scale-set-name}_{8-char-guid}
  • Jednolity tryb aranżacji: {scale-set-name}_{instance-id}

W przypadkach, w których trzeba odtworzyć określone wystąpienie, użyj polecenia az vmss reimage i określ nazwy wystąpień.

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

Aktualizowanie obrazu systemu operacyjnego dla zestawu skalowania

Być może masz zestaw skalowania z starą wersją systemu Ubuntu. Chcesz zaktualizować do nowszej wersji systemu Ubuntu, takiej jak wersja 22.04.20204200. Właściwość wersji odwołania do obrazu nie jest częścią listy, więc można bezpośrednio modyfikować te właściwości przy użyciu polecenia az vmss update.

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

Alternatywnie możesz zmienić obraz używany przez zestaw skalowania. Na przykład możesz zaktualizować lub zmienić obraz niestandardowy używany przez zestaw skalowania. Obraz używany przez zestaw skalowania można zmienić, aktualizując właściwość identyfikatora odwołania do obrazu. Właściwość identyfikatora odwołania do obrazu nie jest częścią listy, więc możesz bezpośrednio zmodyfikować tę właściwość przy użyciu polecenia 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

Jeśli używasz obrazów platformy Azure, możesz zaktualizować obraz, modyfikując obrazReference (więcej informacji można znaleźć w dokumentacji interfejsu API REST).

Uwaga

W przypadku obrazów platformy często określa się "najnowszą" wersję referencyjną obrazu. Podczas tworzenia, skalowania w poziomie i ponownego obrazu maszyny wirtualne są tworzone przy użyciu najnowszej dostępnej wersji. Nie oznacza to jednak, że obraz systemu operacyjnego jest automatycznie aktualizowany wraz z upływem czasu w miarę wydawania nowych wersji obrazów. Osobna funkcja zapewnia automatyczne uaktualnienia systemu operacyjnego. Aby uzyskać więcej informacji, zobacz dokumentację dotyczącą automatycznych uaktualnień systemu operacyjnego.

Jeśli używasz obrazów niestandardowych, możesz zaktualizować obraz, aktualizując identyfikator imageReference (więcej informacji można znaleźć w dokumentacji interfejsu API REST).

Aktualizowanie modułu równoważenia obciążenia dla zestawu skalowania

Załóżmy, że masz zestaw skalowania z usługą Azure Load Balancer i chcesz zamienić usługę Azure Load Balancer na bramę aplikacja systemu Azure. Właściwości modułu równoważenia obciążenia i usługi Application Gateway dla zestawu skalowania są częścią listy, dlatego możesz użyć poleceń do usunięcia lub dodania elementów listy zamiast bezpośrednio modyfikować właściwości.

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

Uwaga

Te polecenia zakładają, że w zestawie skalowania istnieje tylko jedna konfiguracja adresu IP i moduł równoważenia obciążenia. Jeśli istnieje wiele, może być konieczne użycie indeksu listy innego niż 0.

Następne kroki

W tym samouczku przedstawiono sposób modyfikowania różnych aspektów zestawu skalowania i poszczególnych wystąpień.

  • Aktualizowanie modelu zestawu skalowania
  • Aktualizowanie pojedynczego wystąpienia maszyny wirtualnej w zestawie skalowania
  • Dodawanie wystąpienia do zestawu skalowania
  • Aktualizowanie maszyn wirtualnych przy użyciu najnowszego modelu zestawu skalowania
  • Ponowne tworzenie obrazu zestawu skalowania
  • Aktualizowanie obrazu systemu operacyjnego dla zestawu skalowania
  • Aktualizowanie modułu równoważenia obciążenia dla zestawu skalowania