إشعار
يتطلب الوصول إلى هذه الصفحة تخويلاً. يمكنك محاولة تسجيل الدخول أو تغيير الدلائل.
يتطلب الوصول إلى هذه الصفحة تخويلاً. يمكنك محاولة تغيير الدلائل.
طوال دورة حياة التطبيقات الخاصة بك، قد تحتاج إلى تعديل أو تحديث مجموعة مقياس الجهاز الظاهري. قد تتضمن هذه التحديثات كيفية تحديث تكوين مجموعة المقاييس أو تغيير تكوين التطبيق. توضح هذه المقالة كيفية تعديل مجموعة مقياس موجودة باستخدام Azure CLI.
أدناه، نعلن عن متغيرات البيئة التي سيتم استخدامها في جميع أنحاء هذا المستند. يتم إلحاق لاحقة عشوائية بأسماء الموارد التي يجب أن تكون فريدة لكل عملية نشر.
REGION تم تعيين إلى WestUS2.
إعداد مجموعة الموارد
قبل المتابعة، تأكد من وجود مجموعة الموارد. تنشئ هذه الخطوة مجموعة الموارد إذا لم تكن موجودة بالفعل.
export RANDOM_SUFFIX=$(openssl rand -hex 3)
export MY_RESOURCE_GROUP_NAME="myResourceGroup$RANDOM_SUFFIX"
export REGION="WestUS2"
az group create --name $MY_RESOURCE_GROUP_NAME --location $REGION
{
"id": "/subscriptions/xxxxx/resourceGroups/myResourceGroupxxx",
"location": "WestUS2",
"managedBy": null,
"name": "myResourceGroupxxx",
"properties": {
"provisioningState": "Succeeded"
},
"tags": null,
"type": "Microsoft.Resources/resourceGroups"
}
إنشاء مجموعة مقياس الجهاز الظاهري
للتأكد من أن أوامر التحديث والاستعلام اللاحقة لها مورد صالح للعمل عليه، قم بإنشاء مجموعة مقياس الجهاز الظاهري. في هذه الخطوة، نقوم بنشر مجموعة مقياس أساسية باستخدام صورة صالحة (Ubuntu2204) وتعيين عدد المثيلات إلى 5 بحيث يمكن للتحديثات الخاصة بالمثيل استهداف معرف مثيل موجود.
export SCALE_SET_NAME="myScaleSet$RANDOM_SUFFIX"
az vmss create \
--resource-group $MY_RESOURCE_GROUP_NAME \
--name $SCALE_SET_NAME \
--image Ubuntu2204 \
--upgrade-policy-mode manual \
--instance-count 5 \
--admin-username azureuser \
--generate-ssh-keys
{
"id": "/subscriptions/xxxxx/resourceGroups/myResourceGroupxxx/providers/Microsoft.Compute/virtualMachineScaleSets/myScaleSetxxx",
"location": "WestUS2",
"name": "myScaleSetxxx",
"provisioningState": "Succeeded"
}
تحديث نموذج مجموعة المقياس
تحتوي مجموعة المقاييس على "نموذج مجموعة مقياس" يلتقط الحالة المطلوبة لمجموعة المقياس ككل. للاستعلام عن النموذج لمجموعة مقياس، يمكنك استخدام az vmss show:
az vmss show --resource-group $MY_RESOURCE_GROUP_NAME --name $SCALE_SET_NAME
يعتمد العرض الدقيق للإخراج على الخيارات التي توفرها للأمر. يوضح المثال التالي إخراج عينة مكثف من Azure CLI:
{
"id": "/subscriptions/xxxxx/resourceGroups/myResourceGroupxxx/providers/Microsoft.Compute/virtualMachineScaleSets/myScaleSetxxx",
"location": "WestUS2",
"name": "myScaleSetxxx",
"orchestrationMode": "Flexible",
"platformFaultDomainCount": 1,
"resourceGroup": "myResourceGroupxxx",
"sku": {
"capacity": 5,
"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/xxxxx/resourceGroups/myResourceGroupxxx/providers/Microsoft.Network/loadBalancers/myScaleSetLB/backendAddressPools/myScaleSetLBBEPool",
"resourceGroup": "myResourceGroupxxx"
}
],
"name": "mysca2215IPConfig",
"privateIpAddressVersion": "IPv4",
"subnet": {
"id": "/subscriptions/xxxxx/resourceGroups/myResourceGroupxxx/providers/Microsoft.Network/virtualNetworks/myScaleSetVNET/subnets/myScaleSetSubnet",
"resourceGroup": "myResourceGroupxxx"
}
}
],
"name": "mysca2215Nic",
"networkSecurityGroup": {
"id": "/subscriptions/xxxxx/resourceGroups/myResourceGroupxxx/providers/Microsoft.Network/networkSecurityGroups/myScaleSetNSG",
"resourceGroup": "myResourceGroupxxx"
},
"primary": true
}
]
},
"osProfile": {
"allowExtensionOperations": true,
"computerNamePrefix": "myScaleS",
"linuxConfiguration": {
"disablePasswordAuthentication": true,
"enableVmAgentPlatformUpdates": false,
"patchSettings": {
"assessmentMode": "ImageDefault",
"patchMode": "ImageDefault"
},
"provisionVmAgent": true
}
},
"storageProfile": {
"imageReference": {
"offer": "UbuntuServer",
"publisher": "Canonical",
"sku": "22_04-lts",
"version": "latest"
},
"osDisk": {
"caching": "ReadWrite",
"createOption": "FromImage",
"deleteOption": "Delete",
"diskSizeGb": 30,
"managedDisk": {
"storageAccountType": "Premium_LRS"
},
"osType": "Linux"
}
}
}
يمكنك استخدام تحديث az vmss لتحديث خصائص مختلفة لمجموعة المقياس الخاصة بك. على سبيل المثال، تحديث نوع الترخيص أو نهج حماية مثيل الجهاز الظاهري. لاحظ أن قيمة نوع الترخيص المسموح بها RHEL_BYOS بدلا من Windows_Server.
az vmss update --name $SCALE_SET_NAME --resource-group $MY_RESOURCE_GROUP_NAME --license-type RHEL_BYOS
export INSTANCE_ID=$(az vmss list-instances \
--resource-group $MY_RESOURCE_GROUP_NAME \
--name $SCALE_SET_NAME \
--query "[0].instanceId" \
-o tsv)
az vmss update \
--name $SCALE_SET_NAME \
--resource-group $MY_RESOURCE_GROUP_NAME \
--instance-id "$INSTANCE_ID" \
--protect-from-scale-set-actions False \
--protect-from-scale-in
بالإضافة إلى ذلك، إذا قمت مسبقا بنشر مجموعة المقياس باستخدام az vmss create الأمر ، يمكنك تشغيل az vmss create الأمر مرة أخرى لتحديث مجموعة المقياس. تأكد من أن جميع الخصائص في الأمر az vmss create هي نفسها كما كانت من قبل، باستثناء الخصائص التي ترغب في تعديلها. على سبيل المثال، نقوم أدناه بزيادة عدد المثيلات إلى خمسة.
هام
بدءا من نوفمبر 2023، سيتم تعيين مجموعات مقياس الجهاز الظاهري التي تم إنشاؤها باستخدام PowerShell وAzure CLI افتراضيا إلى وضع التنسيق المرن إذا لم يتم تحديد وضع التزامن. لمزيد من المعلومات حول هذا التغيير والإجراءات التي يجب اتخاذها، انتقل إلى كسر التغيير لعملاء VMSS PowerShell/CLI - مركز مجتمع Microsoft
az vmss create \
--resource-group $MY_RESOURCE_GROUP_NAME \
--name $SCALE_SET_NAME \
--orchestration-mode flexible \
--image RHELRaw8LVMGen2 \
--admin-username azureuser \
--generate-ssh-keys \
--instance-count 5 \
--os-disk-size-gb 64
تحديث مثيلات الجهاز الظاهري الفردية في مجموعة مقياس
على غرار الطريقة التي تحتوي بها مجموعة المقياس على طريقة عرض نموذج، فإن لكل مثيل جهاز ظاهري في مجموعة المقياس طريقة عرض النموذج الخاصة به. للاستعلام عن طريقة عرض النموذج لمثيل جهاز ظاهري معين في مجموعة مقياس، يمكنك استخدام az vm show.
export INSTANCE_NAME=$(az vmss list-instances \
--resource-group $MY_RESOURCE_GROUP_NAME \
--name $SCALE_SET_NAME \
--query "[0].name" \
-o tsv)
az vm show --resource-group $MY_RESOURCE_GROUP_NAME --name $INSTANCE_NAME
يعتمد العرض الدقيق للإخراج على الخيارات التي توفرها للأمر. يوضح المثال التالي إخراج عينة مكثف من Azure CLI:
{
"hardwareProfile": {
"vmSize": "Standard_DS1_v2"
},
"id": "/subscriptions/xxxxx/resourceGroups/myResourceGroupxxx/providers/Microsoft.Compute/virtualMachines/myScaleSet_Instance1",
"location": "WestUS2",
"name": "myScaleSet_Instance1",
"networkProfile": {
"networkInterfaces": [
{
"deleteOption": "Delete",
"id": "/subscriptions/xxxxx/resourceGroups/myResourceGroupxxx/providers/Microsoft.Network/networkInterfaces/mysca2215Nic-5cf164f7",
"primary": true,
"resourceGroup": "myResourceGroupxxx"
}
]
},
"osProfile": {
"allowExtensionOperations": true,
"computerName": "myScaleset_Computer1",
"linuxConfiguration": {
"disablePasswordAuthentication": true,
"enableVmAgentPlatformUpdates": false,
"patchSettings": {
"assessmentMode": "ImageDefault",
"patchMode": "ImageDefault"
},
"provisionVmAgent": true
}
},
"provisioningState": "Succeeded",
"resourceGroup": "myResourceGroupxxx",
"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/xxxxx/resourceGroups/myResourceGroupxxx/providers/Microsoft.Compute/disks/myScaleSet_Instance1_disk1_xxx",
"resourceGroup": "myResourceGroupxxx",
"storageAccountType": "Premium_LRS"
},
"name": "myScaleSet_Instance1_disk1_xxx",
"osType": "Linux"
}
},
"timeCreated": "2022-11-29T22:16:44.500895+00:00",
"type": "Microsoft.Compute/virtualMachines",
"virtualMachineScaleSet": {
"id": "/subscriptions/xxxxx/resourceGroups/myResourceGroupxxx/providers/Microsoft.Compute/virtualMachineScaleSets/myScaleSetxxx",
"resourceGroup": "myResourceGroupxxx"
}
}
تصف هذه الخصائص تكوين مثيل الجهاز الظاهري ضمن مجموعة مقياس، وليس تكوين مجموعة المقياس ككل.
يمكنك إجراء تحديثات لمثيلات الجهاز الظاهري الفردية في مجموعة مقياس تماما كما تفعل مع جهاز ظاهري مستقل. على سبيل المثال، إرفاق قرص بيانات جديد بالمثيل 1:
az vm disk attach --resource-group $MY_RESOURCE_GROUP_NAME --vm-name $INSTANCE_NAME --name disk_name1 --new
تشغيل az vm show مرة أخرى، سنرى الآن أن مثيل الجهاز الظاهري يحتوي على القرص الجديد المرفق.
{
"storageProfile": {
"dataDisks": [
{
"caching": "None",
"createOption": "Empty",
"deleteOption": "Detach",
"diskSizeGb": 1023,
"lun": 0,
"managedDisk": {
"id": "/subscriptions/xxxxx/resourceGroups/myResourceGroupxxx/providers/Microsoft.Compute/disks/disk_name1",
"resourceGroup": "myResourceGroupxxx",
"storageAccountType": "Premium_LRS"
},
"name": "disk_name1",
"toBeDetached": false
}
]
}
}
إضافة مثيل إلى مجموعة المقياس
هناك أوقات قد ترغب فيها في إضافة جهاز ظاهري جديد إلى مجموعة المقياس الخاصة بك ولكن تريد خيارات تكوين مختلفة عن تلك المدرجة في نموذج مجموعة المقياس. يمكن إضافة الأجهزة الظاهرية إلى مجموعة تحجيم أثناء الإنشاء باستخدام الأمر az vm create وتحديد اسم مجموعة المقياس الذي تريد إضافة المثيل إليه.
export NEW_INSTANCE_NAME="myNewInstance$RANDOM_SUFFIX"
az vm create --name $NEW_INSTANCE_NAME --resource-group $MY_RESOURCE_GROUP_NAME --vmss $SCALE_SET_NAME --image RHELRaw8LVMGen2
{
"fqdns": "",
"id": "/subscriptions/xxxxx/resourceGroups/myResourceGroupxxx/providers/Microsoft.Compute/virtualMachines/myNewInstancexxx",
"location": "WestUS2",
"macAddress": "60-45-BD-D7-13-DD",
"powerState": "VM running",
"privateIpAddress": "10.0.0.6",
"publicIpAddress": "20.172.144.96",
"resourceGroup": "myResourceGroupxxx",
"zones": ""
}
إذا تحققنا بعد ذلك من مجموعة المقياس الخاصة بنا، فسنرى المثيل الجديد مضافا.
az vm list --resource-group $MY_RESOURCE_GROUP_NAME --output table
Name ResourceGroup Location
-------------------- --------------- ----------
myNewInstancexxx myResourceGroupxxx WestUS2
myScaleSet_Instance1 myResourceGroupxxx WestUS2
myScaleSet_Instance1 myResourceGroupxxx WestUS2
إحضار الأجهزة الظاهرية up-to-date مع أحدث نموذج لمجموعة التحجيم
إشعار
أوضاع الترقية غير مدعومة حاليا على مجموعات مقياس الجهاز الظاهري باستخدام وضع التنسيق المرن.
تحتوي مجموعات المقياس على "نهج ترقية" يحدد كيفية إحضار الأجهزة الظاهرية up-to-date مع أحدث نموذج لمجموعة التحجيم. الأوضاع الثلاثة لنهج الترقية هي:
- تلقائي - في هذا الوضع، لا تقدم مجموعة المقياس أي ضمانات حول ترتيب الأجهزة الظاهرية التي يتم إسقاطها. قد تنزل مجموعة التحجيم جميع الأجهزة الظاهرية في نفس الوقت.
- المتداول - في هذا الوضع، تقوم مجموعة المقياس بطرح التحديث على دفعات مع وقت إيقاف مؤقت اختياري بين الدفعات.
- يدوي - في هذا الوضع، عند تحديث نموذج مجموعة التحجيم، لا يحدث أي شيء للأجهزة الظاهرية الموجودة حتى يتم تشغيل تحديث يدوي.
إذا تم تعيين مجموعة المقياس إلى ترقيات يدوية، يمكنك تشغيل ترقية يدوية باستخدام تحديث az vmss.
az vmss update --resource-group $MY_RESOURCE_GROUP_NAME --name $SCALE_SET_NAME
إشعار
يمكن لمجموعات Service Fabric استخدام الوضع التلقائي فقط، ولكن تتم معالجة التحديث بشكل مختلف. لمزيدٍ من المعلومات، راجع ترقيات تطبيق Service Fabric.
إعادة تعيين مجموعة تحجيم
ستنشئ مجموعات مقياس الجهاز الظاهري اسما فريدا لكل جهاز ظاهري في مجموعة التحجيم. يختلف اصطلاح التسمية حسب وضع التنسيق:
- وضع التزامن المرن: {scale-set-name}_{8-char-guid}
- وضع التنسيق الموحد: {scale-set-name}_{instance-id}
في الحالات التي تحتاج فيها إلى إعادة تعيين مثيل معين، استخدم az vmss reimage وحدد معرف المثيل. خيار آخر هو استخدام إعادة توزيع az vm لإعادة تعيين الجهاز الظاهري مباشرة. هذا الأمر مفيد إذا كنت تريد إعادة تعيين جهاز ظاهري دون الحاجة إلى تحديد معرف المثيل.
# Get the VM name first
VM_NAME=$(az vmss list-instances \
--resource-group $MY_RESOURCE_GROUP_NAME \
--name $SCALE_SET_NAME \
--query "[0].name" \
-o tsv)
# Reimage the VM directly
az vm redeploy \
--resource-group $MY_RESOURCE_GROUP_NAME \
--name $VM_NAME
تحديث صورة نظام التشغيل لمجموعة المقاييس
قد يكون لديك مجموعة مقياس تقوم بتشغيل إصدار قديم من Ubuntu. تريد التحديث إلى إصدار أحدث من Ubuntu، مثل أحدث إصدار. لا تعد خاصية إصدار مرجع الصورة جزءا من قائمة، لذا يمكنك تعديل هذه الخصائص مباشرة باستخدام تحديث az vmss.
az vmss update --resource-group $MY_RESOURCE_GROUP_NAME --name $SCALE_SET_NAME --set virtualMachineProfile.storageProfile.imageReference.version=latest
بدلاً من ذلك، قد ترغب في تغيير الصورة التي تستخدمها مجموعة المقياس الخاصة بك. على سبيل المثال، قد ترغب في تحديث أو تغيير صورة مخصصة مستخدمة بواسطة مجموعة المقاييس الخاصة بك. يمكنك تغيير الصورة التي تستخدمها مجموعة المقياس الخاصة بك عن طريق تحديث خاصية المعرف المرجعي للصورة. خاصية معرف مرجع الصورة ليست جزءا من قائمة، لذلك يمكنك تعديل هذه الخاصية مباشرة باستخدام تحديث az vmss.
إذا كنت تستخدم صور نظام Azure الأساسي، يمكنك تحديث الصورة عن طريق تعديل imageReference (لمزيدٍ من المعلومات، فراجع وثائق REST API).
إشعار
باستخدام صور النظام الأساسي، من الشائع تحديد "الأحدث" للإصدار المرجعي للصورة. عند إنشاء الأجهزة الظاهرية وتوسيع نطاقها وإعادة تعيينها، يتم إنشاء الأجهزة الظاهرية باستخدام أحدث إصدار متوفر. ومع ذلك، هذا لا يعني أنه يتم تحديث صورة نظام التشغيل تلقائياً بمرور الوقت مع إطلاق إصدارات صور جديدة. توفر ميزة منفصلة ترقيات تلقائية لنظام التشغيل. لمزيدٍ من المعلومات، راجع وثائق الترقيات التلقائية لنظام التشغيل.
إذا كنت تستخدم صوراً مخصصة، يمكنك تحديث الصورة عن طريق تحديث معرف imageReference (ولمزيدٍ من المعلومات، راجع وثائق REST API).
تحديث موازن تحميل لمجموعة المقياس
لنفترض أن لديك مجموعة مقاييس مع موازن تحميل Azure، وتريد استبدال موازن تحميل Azure ببوابة تطبيق Azure. تعد خصائص موازن التحميل وبوابة التطبيق لمجموعة مقياس جزءا من قائمة، بحيث يمكنك استخدام الأوامر لإزالة عناصر القائمة أو إضافتها بدلا من تعديل الخصائص مباشرة.
# Remove the load balancer backend pool from the scale set model
az vmss update --resource-group $MY_RESOURCE_GROUP_NAME --name $SCALE_SET_NAME --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 $MY_RESOURCE_GROUP_NAME --name $SCALE_SET_NAME --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 $MY_RESOURCE_GROUP_NAME --name $SCALE_SET_NAME --add virtualMachineProfile.networkProfile.networkInterfaceConfigurations[0].ipConfigurations[0].ApplicationGatewayBackendAddressPools '{"id": "/subscriptions/xxxxx/resourceGroups/'$MY_RESOURCE_GROUP_NAME'/providers/Microsoft.Network/applicationGateways/{applicationGatewayName}/backendAddressPools/{applicationGatewayBackendPoolName}"}'
إشعار
تفترض هذه الأوامر وجود تكوين IP واحد فقط وموازن تحميل على مجموعة المقياس. إذا كانت هناك مضاعفات، فقد تحتاج إلى استخدام فهرس قائمة آخر بخلاف 0.
الخطوات التالية
في هذا البرنامج التعليمي، تعلمت كيفية تعديل جوانب مختلفة من مجموعة المقياس والمثيلات الفردية.
- تحديث نموذج مجموعة المقياس
- تحديث مثيل جهاز ظاهري فردي في مجموعة مقياس
- إضافة مثيل إلى مجموعة المقياس
- إحضار الأجهزة الظاهرية up-to-date مع أحدث نموذج لمجموعة التحجيم
- إعادة تعيين مجموعة تحجيم
- تحديث صورة نظام التشغيل لمجموعة المقاييس
- تحديث موازن تحميل لمجموعة المقياس