تعديل مجموعة مقياس الجهاز الظاهري

إشعار

تنطبق العديد من الخطوات المدرجة في هذا المستند على مجموعات مقياس الجهاز الظاهري باستخدام وضع التنسيق الموحد. نوصي باستخدام التنسيق المرن لأحمال العمل الجديدة. لمزيد من المعلومات، راجع أوضاع التحجيم لمجموعات مقياس الجهاز الظاهري في Azure.

طوال دورة حياة التطبيقات الخاصة بك، قد تحتاج إلى تعديل أو تحديث مجموعة مقياس الجهاز الظاهري. قد تتضمن هذه التحديثات كيفية تحديث تكوين مجموعة المقاييس أو تغيير تكوين التطبيق. توضح هذه المقالة كيفية تعديل مجموعة مقياس موجود باستخدام واجهات برمجة تطبيقات REST أو Azure PowerShell أو Azure CLI.

المفاهيم الأساسية

نموذج مجموعة المقاييس

تحتوي مجموعة المقاييس على "نموذج مجموعة مقياس" يلتقط الحالة المطلوبة لمجموعة المقياس ككل. للاستعلام عن النموذج لمجموعة مقياس، يمكنك استخدام

  • REST API مع compute/virtualmachinescalesets/get على النحو التالي:

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

    Get-AzVmss -ResourceGroupName "myResourceGroup" -VMScaleSetName "myScaleSet"
    
  • Azure CLI مع az vmss show:

    az vmss show --resource-group myResourceGroup --name myScaleSet
    
  • يمكنك أيضاً استخدام resources.azure.com أو Azure SDKs الخاصة باللغة.

يعتمد العرض الدقيق للإخراج على الخيارات التي توفرها للأمر. يوضح المثال التالي إخراج عينة مكثف من Azure CLI:

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

تنطبق هذه الخصائص على مجموعة المقياس ككل.

طريقة عرض مثيل مجموعة المقياس

تحتوي مجموعة المقياس أيضاً على "طريقة عرض مثيل مجموعة المقياس" التي تلتقط حالة وقت التشغيل الحالية لمجموعة المقياس ككل. للاستعلام عن طريقة عرض المثيل لمجموعة مقياس، يمكنك استخدام:

  • واجهة برمجة تطبيقات REST مع compute/virtualmachinescalesets/getinstanceview على النحو التالي:

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

    Get-AzVmss -ResourceGroupName "myResourceGroup" -VMScaleSetName "myScaleSet" -InstanceView
    
  • Azure CLI مع az vmss get-instance-view:

    az vmss get-instance-view --resource-group myResourceGroup --name myScaleSet
    
  • يمكنك أيضاً استخدام resources.azure.com أو Azure SDKs الخاصة باللغة

يعتمد العرض الدقيق للإخراج على الخيارات التي توفرها للأمر. يوضح المثال التالي إخراج عينة مكثف من Azure CLI:

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

توفر هذه الخصائص ملخصاً لحالة وقت التشغيل الحالية للأجهزة الظاهرية في مجموعة المقاييس، مثل حالة الملحقات المطبقة على مجموعة المقاييس.

طريقة عرض نموذج مجموعة مقاييس الجهاز الظاهري

على غرار الطريقة التي تحتوي بها مجموعة المقياس على طريقة عرض نموذج، فإن لكل مثيل جهاز ظاهري في مجموعة المقياس طريقة عرض النموذج الخاصة به. للاستعلام عن طريقة عرض النموذج لمثيل جهاز ظاهري معين في مجموعة مقياس، يمكنك استخدام:

  • REST API مع compute/virtualmachinescalesetvms/get على النحو التالي:

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

    Get-AzVmssVm -ResourceGroupName "myResourceGroup" -VMScaleSetName "myScaleSet" -InstanceId instanceId
    
  • Azure CLI مع az vmss show:

    az vmss show --resource-group myResourceGroup --name myScaleSet --instance-id instanceId
    
  • يمكنك أيضاً استخدام resources.azure.com أو Azure SDKs.

يعتمد العرض الدقيق للإخراج على الخيارات التي توفرها للأمر. يوضح المثال التالي إخراج عينة مكثف من Azure CLI:

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

تصف هذه الخصائص تكوين مثيل الجهاز الظاهري ضمن مجموعة مقياس، وليس تكوين مجموعة المقياس ككل. على سبيل المثال، يحتوي نموذج مجموعة المقاييس على overprovision كخاصية، بينما لا يحتوي نموذج مثيل الجهاز الظاهري ضمن مجموعة مقياس على ذلك. يرجع هذا الاختلاف إلى أن التوفير الزائد هو خاصية لمجموعة المقياس ككل، وليس مثيلات الجهاز الظاهري الفردية في مجموعة المقاييس (ولمزيدٍ من المعلومات عن التوفير الزائد، راجع اعتبارات التصميم لمجموعات المقاييس).

طريقة عرض مثيل مجموعة قياس الجهاز الظاهري

على غرار الطريقة التي تحتوي بها مجموعة المقياس على طريقة عرض مثيل، فإن لكل مثيل جهاز ظاهري في مجموعة المقياس طريقة عرض المثيل الخاص به. للاستعلام عن طريقة عرض المثيل لمثيل جهاز ظاهري معين داخل مجموعة مقياس، يمكنك استخدام:

  • واجهة برمجة تطبيقات REST مع compute/virtualmachinescalesetvms/getinstanceview على النحو التالي:

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

    Get-AzVmssVm -ResourceGroupName "myResourceGroup" -VMScaleSetName "myScaleSet" -InstanceId instanceId -InstanceView
    
  • Azure CLI مع az vmss get-instance-view

    az vmss get-instance-view --resource-group myResourceGroup --name myScaleSet --instance-id instanceId
    
  • يمكنك أيضاً استخدام resources.azure.com أو Azure SDKs

يعتمد العرض الدقيق للإخراج على الخيارات التي توفرها للأمر. يوضح المثال التالي إخراج عينة مكثف من Azure CLI:

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

تصف هذه الخصائص حالة وقت التشغيل الحالية لمثيل الجهاز الظاهري ضمن مجموعة مقياس، والتي تتضمن أي ملحقات مطبقة على مجموعة المقياس.

كيفية تحديث خصائص مجموعة المقياس العمومي

لتحديث خاصية مجموعة مقياس عمومي، يجب تحديث الخاصية في نموذج مجموعة المقياس. يمكنك القيام بهذا التحديث من خلال:

  • REST API مع compute/virtualmachinescalesets/createorupdate على النحو التالي:

    PUT https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/myResourceGroup/providers/Microsoft.Compute/virtualMachineScaleSets/myScaleSet?api-version={apiVersion}
    
  • يمكنك نشر قالب Resource Manager مع الخصائص من REST API لتحديث خصائص مجموعة المقياس العمومي.

  • Azure PowerShell مع Update-AzVmss:

    Update-AzVmss -ResourceGroupName "myResourceGroup" -VMScaleSetName "myScaleSet" -VirtualMachineScaleSet {scaleSetConfigPowershellObject}
    
  • Azure CLI مع az vmss update:

    • لتعديل خاصية:

      az vmss update --set {propertyPath}={value}
      
    • لإضافة كائن إلى خاصية موجودة في مجموعة مقياس:

      az vmss update --add {propertyPath} {JSONObjectToAdd}
      
    • لإزالة كائن من خاصية موجودة في مجموعة مقياس:

      az vmss update --remove {propertyPath} {indexToRemove}
      
    • إذا قمت مسبقاً بنشر مجموعة المقياس باستخدام الأمر az vmss create، يمكنك تشغيل الأمر az vmss create مرة أخرى لتحديث مجموعة المقياس. تأكد من أن جميع الخصائص في الأمر az vmss create هي نفسها كما كانت من قبل، باستثناء الخصائص التي ترغب في تعديلها.

  • يمكنك أيضاً استخدام resources.azure.com أو Azure SDKs.

بمجرد تحديث نموذج مجموعة المقياس، ينطبق التكوين الجديد على أي أجهزة ظاهرية جديدة تم إنشاؤها في مجموعة المقياس. ومع ذلك، لا يزال من الضروري تحديث نماذج الأجهزة الظاهرية الموجودة في مجموعة المقياس مع أحدث نموذج مجموعة مقياس شامل. في النموذج الخاص بكل جهاز ظاهري، توجد خاصية منطقية تسمى latestModelApplied تشير إلى ما إذا كان الجهاز الظاهري محدثاً بأحدث نموذج مجموعة مقياس شامل (true يعني أن الجهاز الظاهري محدث بأحدث نموذج).

الخصائص مع قيود على التعديل

خصائص وقت الإنشاء

لا يمكن تعيين بعض الخصائص إلا عند إنشاء مجموعة المقياس. تتضمن بعض الأمثلة نوع حساب تخزين قرص نظام التشغيل المدار ومجالات الخطأ.

الخصائص التي لا يمكن تغييرها إلا بناءً على القيمة الحالية

قد يتم تغيير بعض الخصائص، مع بعص الاستثناءات اعتماداً على القيمة الحالية. وتشمل هذه الخصائص ما يلي:

  • singlePlacementGroup
  • الشبكه الفرعيه
  • imageReferenceSku
  • imageReferenceOffer
  • مناطق التوفر (معاينة)

المثال 1

لتحديث مجموعة المقياس لاستخدام إصدار نظام تشغيل مختلف، تحتاج إلى تعيين جميع الخصائص المحدثة في مكالمة واحدة. في هذا المثال، نحن نتغير من Unbuntu Server 20.04 إلى 22.04.

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

لتحديث مجموعة المقياس لاستخدام إصدار نظام تشغيل مختلف، تحتاج إلى تعيين جميع الخصائص المحدثة في مكالمة واحدة. في هذا المثال، نقوم بتغيير من Windows Server 2016 إلى Windows Server 2019.

$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

الخصائص التي تتطلب إلغاء التخصيص لتغييرها

قد يتم تغيير بعض الخصائص إلى قيم معينة فقط إذا تم إلغاء تخصيص الأجهزة الظاهرية في مجموعة المقاييس. وتشمل هذه الخصائص ما يلي:

  • اسم SKU - إذا كان VM SKU الجديد غير مدعوم على الأجهزة التي تعمل بها مجموعة المقاييس حالياً، فأنت بحاجة إلى إلغاء تخصيص الأجهزة الظاهرية في مجموعة المقياس قبل تعديل اسم SKU. لمزيدٍ من المعلومات، راجع كيفية تغيير حجم جهاز Azure الظاهري.

تحديثات خاصة بالجهاز الظاهري

يمكن تطبيق تعديلات معينة على أجهزة ظاهرية معينة بدلاً من خصائص مجموعة المقياس العمومي. حالياً، التحديث الوحيد الخاص بالجهاز الظاهري المعتمد هو إرفاق/فصل أقراص البيانات من/إلى الأجهزة الظاهرية في مجموعة المقياس. توجد هذه الميزة في وضع المعاينة. لمزيدٍ من المعلومات، راجع وثائق المعاينة.

السيناريوهات

تحديثات التطبيق

إذا تم نشر تطبيق على مجموعة مقياس من خلال الملحقات، فإن تحديث تكوين الملحق يؤدي إلى تحديث التطبيق وفقاً لنهج الترقية. على سبيل المثال، إذا كان لديك إصدار جديد من برنامج نصي لتشغيله في ملحق برنامج نصي مخصص، يمكنك تحديث خاصية fileUris للإشارة إلى البرنامج النصي الجديد. في بعض الحالات، قد ترغب في فرض تحديث على الرغم من عدم تغيير تكوين الملحق (على سبيل المثال، قمت بتحديث البرنامج النصي دون تغيير في URI للبرنامج النصي). في هذه الحالات، يمكنك تعديل forceUpdateTag لفرض تحديث. لا يفسر نظام Azure الأساسي هذه الخاصية. إذا قمت بتغيير القيمة، فلن يكون هناك تأثير على كيفية تشغيل الملحق. يؤدي التغيير ببساطة إلى إعادة تشغيل الملحق. لمزيدٍ من المعلومات عن forceUpdateTag، راجع وثائق REST API للملحقات. لاحظ أنه يمكن استخدام forceUpdateTag مع جميع الملحقات، وليس فقط ملحق البرنامج النصي المخصص.

من الشائع أيضاً نشر التطبيقات من خلال صورة مخصصة. يتم تغطية هذا السيناريو في القسم التالي.

تحديثات نظام التشغيل

إذا كنت تستخدم صور نظام Azure الأساسي، يمكنك تحديث الصورة عن طريق تعديل imageReference (لمزيدٍ من المعلومات، فراجع وثائق REST API).

إشعار

باستخدام صور النظام الأساسي، من الشائع تحديد "الأحدث" للإصدار المرجعي للصورة. عند إنشاء الأجهزة الظاهرية وتوسيع نطاقها وإعادة تعيينها، يتم إنشاء الأجهزة الظاهرية باستخدام أحدث إصدار متوفر. ومع ذلك، هذا لا يعني أنه يتم تحديث صورة نظام التشغيل تلقائياً بمرور الوقت مع إطلاق إصدارات صور جديدة. توفر ميزة منفصلة ترقيات تلقائية لنظام التشغيل. لمزيدٍ من المعلومات، راجع وثائق الترقيات التلقائية لنظام التشغيل.

إذا كنت تستخدم صوراً مخصصة، يمكنك تحديث الصورة عن طريق تحديث معرف imageReference (ولمزيدٍ من المعلومات، راجع وثائق REST API).

الأمثلة

تحديث صورة نظام التشغيل لمجموعة المقاييس

قد يكون لديك مجموعة مقياس تعمل بإصدار قديم من Ubuntu LTS 16.04. تريد التحديث إلى إصدار أحدث من Ubuntu LTS 16.04، مثل الإصدار 16.04.201801090. لا تعد خاصية إصدار مرجع الصورة جزءاً من القائمة، لذا يمكنك تعديل هذه الخصائص مباشرةً باستخدام أحد الأوامر التالية:

  • Azure PowerShell مع Update-AzVmss على النحو التالي:

    Update-AzVmss -ResourceGroupName "myResourceGroup" -VMScaleSetName "myScaleSet" -ImageReferenceVersion 16.04.201801090
    
  • Azure CLI مع az vmss update:

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

بدلاً من ذلك، قد ترغب في تغيير الصورة التي تستخدمها مجموعة المقياس الخاصة بك. على سبيل المثال، قد ترغب في تحديث أو تغيير صورة مخصصة مستخدمة بواسطة مجموعة المقاييس الخاصة بك. يمكنك تغيير الصورة التي تستخدمها مجموعة المقياس الخاصة بك عن طريق تحديث خاصية المعرف المرجعي للصورة. لا تعد خاصية معرف مرجع الصورة جزءاً من القائمة، لذا يمكنك تعديل هذه الخاصية مباشرةً باستخدام أحد الأوامر التالية:

  • Azure PowerShell مع Update-AzVmss على النحو التالي:

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

تحديث موازن تحميل لمجموعة المقياس

لنفترض أن لديك مجموعة مقاييس مع موازن تحميل Azure، وتريد استبدال موازن تحميل Azure ببوابة تطبيق Azure. تعد خصائص موازن التحميل وبوابة التطبيق لمجموعة مقياس جزءاً من قائمة، بحيث يمكنك استخدام الأوامر لإزالة عناصر القائمة أو إضافتها بدلاً من تعديل الخصائص مباشرة:

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

إشعار

تفترض هذه الأوامر وجود تكوين IP واحد فقط وموازن تحميل على مجموعة المقياس. إذا كانت هناك مضاعفات، فقد تحتاج إلى استخدام فهرس قائمة آخر بخلاف 0.

الخطوات التالية

يمكنك أيضاً تنفيذ مهام الإدارة العامة على مجموعات المقاييس باستخدام Azure CLI أو Azure PowerShell.