Aracılığıyla paylaş


Öğretici: Azure CLI kullanarak sanal makine ölçek kümesini değiştirme

Uygulamalarınızın yaşam döngüsü boyunca Sanal Makine Ölçek Kümenizi değiştirmeniz veya güncelleştirmeniz gerekebilir. Bu güncelleştirmeler, ölçek kümesinin yapılandırmasını güncelleştirmeyi veya uygulama yapılandırmasını değiştirmeyi içerebilir. Bu makalede, Azure CLI kullanılarak mevcut bir ölçek kümesinin nasıl değiştirileceği açıklanır.

Ölçek kümesi modelini güncelleştirme

Ölçek kümesinin, ölçek kümesinin istenen durumunu bir bütün olarak yakalayan bir "ölçek kümesi modeli" vardır. Ölçek kümesinin modelini sorgulamak için az vmss show komutunu kullanabilirsiniz:

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

Çıkışın tam sunumu, komuta sağladığınız seçeneklere bağlıdır. Aşağıdaki örnekte Azure CLI'dan yoğunlaştırılmış örnek çıktısı gösterilmektedir:

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

Ölçek kümenizin çeşitli özelliklerini güncelleştirmek için az vmss update komutunu kullanabilirsiniz. Örneğin, lisans türünüzü veya bir VM örneği koruma ilkesini güncelleştirme.

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

Ayrıca, daha önce ölçek kümesini komutuyla az vmss create dağıttıysanız, ölçek kümesini güncelleştirmek için komutunu yeniden çalıştırabilirsiniz az vmss create . Değiştirmek istediğiniz özellikler dışında, komuttaki az vmss create tüm özelliklerin öncekiyle aynı olduğundan emin olun. Örneğin, aşağıda örnek sayısını beşe çıkarıyoruz.

Önemli

Kasım 2023'den itibaren, düzenleme modu belirtilmezse PowerShell ve Azure CLI kullanılarak oluşturulan VM ölçek kümeleri varsayılan olarak Esnek Düzenleme Modu olarak ayarlanır. Bu değişiklik ve gerçekleştirmeniz gereken eylemler hakkında daha fazla bilgi için BKZ. VMSS PowerShell/CLI Müşterileri için Yeni Değişiklik - 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

Ölçek kümesindeki tek tek VM örneklerini güncelleştirme

Ölçek kümesinin model görünümüne sahip olmasına benzer şekilde, ölçek kümesindeki her VM örneğinin kendi model görünümü vardır. Ölçek kümesindeki belirli bir VM örneğinin model görünümünü sorgulamak için az vm show komutunu kullanabilirsiniz.

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

Çıkışın tam sunumu, komuta sağladığınız seçeneklere bağlıdır. Aşağıdaki örnekte Azure CLI'dan yoğunlaştırılmış örnek çıktısı gösterilmektedir:

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

Bu özellikler, ölçek kümesinin bir bütün olarak yapılandırılmasını değil, ölçek kümesi içindeki bir VM örneğinin yapılandırmasını açıklar.

Tek başına VM'lerde yaptığınız gibi ölçek kümesindeki tek tek VM örneklerine yönelik güncelleştirmeler gerçekleştirebilirsiniz. Örneğin, 1. örneğe yeni bir veri diski ekleme:

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

az vm show komutunu yeniden çalıştırdığınızda artık VM örneğinde yeni diskin eklendiğini göreceğiz.

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

Ölçek kümenize örnek ekleme

Ölçek kümenize yeni bir VM eklemek ancak ölçek kümesi modelinde listelenenden farklı yapılandırma seçenekleri kullanmak isteyebileceğiniz zamanlar olabilir. VM'ler oluşturma sırasında az vm create komutu kullanılarak ve örneğin eklenmesini istediğiniz ölçek kümesi adı belirtilerek ölçek kümesine eklenebilir.

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

Daha sonra ölçek kümemizi denetlersek yeni örneğin eklendiğini görürüz.

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

En son ölçek kümesi modeliyle VM'leri güncel hale getirme

Dekont

Yükseltme modları şu anda Esnek düzenleme modu kullanılarak Sanal Makine Ölçek Kümeleri desteklenmez.

Ölçek kümeleri, VM'lerin en son ölçek kümesi modeliyle nasıl güncel hale getirildiğini belirleyen bir "yükseltme ilkesine" sahiptir. Yükseltme ilkesi için üç mod şunlardır:

  • Otomatik - Bu modda ölçek kümesi, indirilmekte olan VM'lerin sırası hakkında hiçbir garanti vermemektedir. Ölçek kümesi tüm VM'leri aynı anda düşürebilir.
  • Sıralı - Bu modda ölçek kümesi, toplu işlemler arasında isteğe bağlı bir duraklatma süresiyle güncelleştirmeyi toplu olarak kullanıma hazırlar.
  • El ile - Bu modda, ölçek kümesi modelini güncelleştirdiğinizde, el ile güncelleştirme tetiklenene kadar mevcut VM'lere hiçbir şey olmaz.

Ölçek kümeniz el ile yükseltmeler olarak ayarlandıysa az vmss update kullanarak el ile yükseltme tetikleyebilirsiniz.

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

Dekont

Service Fabric kümeleri yalnızca Otomatik modu kullanabilir, ancak güncelleştirme farklı işlenir. Daha fazla bilgi için bkz . Service Fabric uygulama yükseltmeleri.

Ölçek kümesini yeniden oluşturma

Sanal Makine Ölçek Kümeleri, ölçek kümesindeki her vm için benzersiz bir ad oluşturur. Adlandırma kuralı düzenleme moduna göre farklılık gösterir:

  • Esnek düzenleme modu: {scale-set-name}_{8-char-guid}
  • Tekdüzen düzenleme modu: {scale-set-name}_{instance-id}

Belirli bir örneği yeniden oluşturmanız gereken durumlarda az vmss reimage kullanın ve örnek adlarını belirtin.

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

Ölçek kümeniz için işletim sistemi görüntüsünü güncelleştirme

Ubuntu'nun eski bir sürümünü çalıştıran bir ölçek kümeniz olabilir. Ubuntu'nun 22.04.202204200 gibi daha yeni bir sürümüne güncelleştirmek istiyorsunuz. Görüntü başvuru sürümü özelliği listenin bir parçası olmadığından az vmss update kullanarak bu özellikleri doğrudan değiştirebilirsiniz.

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

Alternatif olarak, ölçek kümenizin kullandığı görüntüyü değiştirmek isteyebilirsiniz. Örneğin, ölçek kümeniz tarafından kullanılan özel bir görüntüyü güncelleştirmek veya değiştirmek isteyebilirsiniz. Görüntü başvuru kimliği özelliğini güncelleştirerek ölçek kümenizin kullandığı görüntüyü değiştirebilirsiniz. Görüntü başvuru kimliği özelliği listenin bir parçası olmadığından az vmss update kullanarak bu özelliği doğrudan değiştirebilirsiniz.

az vmss update \
--resource-group myResourceGroup \
--name myScaleSet \
--set virtualMachineProfile.storageProfile.imageReference.id=/subscriptions/{subscriptionID}/resourceGroups/myResourceGroup/providers/Microsoft.Compute/images/myNewImage

Azure platform görüntülerini kullanıyorsanız imageReference dosyasını değiştirerek görüntüyü güncelleştirebilirsiniz (daha fazla bilgi için REST API belgelerine bakın).

Dekont

Platform görüntüleriyle, görüntü başvuru sürümü için "en son" belirtmek yaygın bir durumdur. Vm'leri oluşturduğunuzda, ölçeği genişlettiğiniz ve yeniden oluşturduğunuz zaman en son kullanılabilir sürümle oluşturulur. Ancak, yeni görüntü sürümleri yayımlandıkçe işletim sistemi görüntüsünün zaman içinde otomatik olarak güncelleştirildiği anlamına gelmez . Ayrı bir özellik otomatik işletim sistemi yükseltmeleri sağlar. Daha fazla bilgi için Otomatik İşletim Sistemi Yükseltmeleri belgelerine bakın.

Özel görüntüler kullanıyorsanız imageReference Kimliğini güncelleştirerek görüntüyü güncelleştirebilirsiniz (daha fazla bilgi için REST API belgelerine bakın).

Ölçek kümeniz için yük dengeleyiciyi güncelleştirme

Azure Load Balancer ile bir ölçek kümeniz olduğunu ve Azure Load Balancer'ı Azure Uygulaması lication Gateway ile değiştirmek istediğinizi varsayalım. Ölçek kümesinin yük dengeleyici ve Application Gateway özellikleri listenin bir parçasıdır, bu nedenle komutları kullanarak özellikleri doğrudan değiştirmek yerine liste öğelerini kaldırabilir veya ekleyebilirsiniz.

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

Dekont

Bu komutlar, ölçek kümesinde yalnızca bir IP yapılandırması ve yük dengeleyici olduğunu varsayar. Birden çok tane varsa, 0 dışında bir liste dizini kullanmanız gerekebilir.

Sonraki adımlar

Bu öğreticide ölçek kümenizin çeşitli yönlerini ve tek tek örnekleri değiştirmeyi öğrendiniz.

  • Ölçek kümesi modelini güncelleştirme
  • Ölçek kümesindeki tek bir VM örneğini güncelleştirme
  • Ölçek kümenize örnek ekleme
  • En son ölçek kümesi modeliyle VM'leri güncel hale getirme
  • Ölçek kümesini yeniden oluşturma
  • Ölçek kümeniz için işletim sistemi görüntüsünü güncelleştirme
  • Ölçek kümeniz için yük dengeleyiciyi güncelleştirme