تكوين التحجيم التلقائي باستخدام PowerShell

يضمن التحجيم التلقائي أن لديك الكمية المناسبة من الموارد قيد التشغيل للتعامل مع الحمل المتقلب للتطبيق الخاص بك. يمكنك تكوين التحجيم التلقائي باستخدام مدخل Microsoft Azure أو Azure CLI أو PowerShell أو قوالب ARM أو Bicep.

توضح هذه المقالة كيفية تكوين التحجيم التلقائي لمجموعة مقياس الجهاز الظاهري باستخدام PowerShell. تستخدم التكوينات الخطوات التالية:

  • إنشاء مجموعة تحجيم يمكنك تحجيمها تلقائيا
  • إنشاء قواعد لتوسيع نطاقها وتوسيع نطاقها
  • إنشاء ملف تعريف يستخدم القواعد الخاصة بك
  • تطبيق إعدادات التحجيم التلقائي
  • تحديث إعدادات التحجيم التلقائي باستخدام الإعلامات

المتطلبات الأساسية

لتكوين التحجيم التلقائي باستخدام PowerShell، تحتاج إلى حساب Azure مع اشتراك نشط. يمكنك إنشاء حساب مجانًا.

إعداد بيئتك

#Set the subscription Id, VMSS name, and resource group name
$subscriptionId = (Get-AzContext).Subscription.Id
$resourceGroupName="rg-powershell-autoscale"
$vmssName="vmss-001"

إنشاء مجموعة مقياس آلة افتراضية

إنشاء مجموعة مقياس باستخدام cmdlets التالية. $resourceGroupName قم بتعيين المتغيرين و $vmssName لتقسيم بيئتك.

# create a new resource group
New-AzResourceGroup -ResourceGroupName $resourceGroupName -Location "EastUS"

# Create login credentials for the VMSS
$Cred = Get-Credential
$vmCred = New-Object System.Management.Automation.PSCredential($Cred.UserName, $Cred.Password)


New-AzVmss `
 -ResourceGroupName $resourceGroupName `
 -Location "EastUS" `
 -VMScaleSetName $vmssName `
 -Credential $vmCred `
 -VirtualNetworkName "myVnet" `
 -SubnetName "mySubnet" `
 -PublicIpAddressName "myPublicIPAddress" `
 -LoadBalancerName "myLoadBalancer" `
 -OrchestrationMode "Flexible"

إنشاء إعدادات التحجيم التلقائي

لإنشاء إعداد التحجيم التلقائي باستخدام PowerShell، اتبع التسلسل أدناه:

  1. إنشاء قواعد باستخدام New-AzAutoscaleScaleRuleObject
  2. إنشاء ملف تعريف باستخدام New-AzAutoscaleProfileObject
  3. إنشاء إعدادات التحجيم التلقائي باستخدام New-AzAutoscaleSetting
  4. تحديث الإعدادات باستخدام Update-AzAutoscaleSetting

إنشاء قواعد

قم بإنشاء قواعد التحجيم والتوسيع ثم ربطها بملف تعريف. يتم إنشاء القواعد باستخدام New-AzAutoscaleScaleRuleObject.

ينشئ البرنامج النصي PowerShell التالي قاعدتين.

  • توسيع النطاق عندما تتجاوز النسبة المئوية لوحدة المعالجة المركزية 70٪
  • تغيير الحجم عندما تكون النسبة المئوية لوحدة المعالجة المركزية أقل من 30٪

$rule1=New-AzAutoscaleScaleRuleObject `
    -MetricTriggerMetricName "Percentage CPU" `
    -MetricTriggerMetricResourceUri "/subscriptions/$subscriptionId/resourceGroups/$resourceGroupName/providers/Microsoft.Compute/virtualMachineScaleSets/$vmssName"  `
    -MetricTriggerTimeGrain ([System.TimeSpan]::New(0,1,0)) `
    -MetricTriggerStatistic "Average" `
    -MetricTriggerTimeWindow ([System.TimeSpan]::New(0,5,0)) `
    -MetricTriggerTimeAggregation "Average" `
    -MetricTriggerOperator "GreaterThan" `
    -MetricTriggerThreshold 70 `
    -MetricTriggerDividePerInstance $false `
    -ScaleActionDirection "Increase" `
    -ScaleActionType "ChangeCount" `
    -ScaleActionValue 1 `
    -ScaleActionCooldown ([System.TimeSpan]::New(0,5,0))


$rule2=New-AzAutoscaleScaleRuleObject `
    -MetricTriggerMetricName "Percentage CPU" `
    -MetricTriggerMetricResourceUri "/subscriptions/$subscriptionId/resourceGroups/$resourceGroupName/providers/Microsoft.Compute/virtualMachineScaleSets/$vmssName"  `
    -MetricTriggerTimeGrain ([System.TimeSpan]::New(0,1,0)) `
    -MetricTriggerStatistic "Average" `
    -MetricTriggerTimeWindow ([System.TimeSpan]::New(0,5,0)) `
    -MetricTriggerTimeAggregation "Average" `
    -MetricTriggerOperator "LessThan" `
    -MetricTriggerThreshold 30 `
    -MetricTriggerDividePerInstance $false `
    -ScaleActionDirection "Decrease" `
    -ScaleActionType "ChangeCount" `
    -ScaleActionValue 1 `
    -ScaleActionCooldown ([System.TimeSpan]::New(0,5,0))

يصف الجدول أدناه المعلمات المستخدمة في New-AzAutoscaleScaleRuleObject cmdlet.

المعلمة ‏‏الوصف‬
MetricTriggerMetricName تعيين مقياس مشغل التحجيم التلقائي
MetricTriggerMetricResourceUri تحديد المورد الذي ينتمي إليه المقياس MetricTriggerMetricName . MetricTriggerMetricResourceUri يمكن أن يكون أي مورد وليس فقط المورد الذي يتم تحجيمه. على سبيل المثال، يمكنك توسيع نطاق مجموعات مقياس الجهاز الظاهري استنادا إلى المقاييس التي تم إنشاؤها بواسطة موازن التحميل أو قاعدة البيانات أو مجموعة المقياس نفسها. MetricTriggerMetricName يجب أن يكون موجودا ل MetricTriggerMetricResourceUriالمحدد .
MetricTriggerTimeGrain تكرار أخذ العينات للمقياس الذي تراقبه القاعدة. MetricTriggerTimeGrain يجب أن تكون إحدى القيم المعرفة مسبقا للمقياس المحدد ويجب أن تتراوح بين 12 ساعة ودقيقة واحدة. على سبيل المثال، MetricTriggerTimeGrain = PT1M"* يعني أن المقاييس يتم أخذ عينات منها كل دقيقة واحدة وتجميعها باستخدام أسلوب التجميع المحدد في .MetricTriggerStatistic
MetricTriggerTimeAggregation أسلوب التجميع ضمن الفترة timeGrain. على سبيل المثال، تعني الإحصائية = "المتوسط" و timeGrain = "PT1M" أن المقاييس يتم تجميعها كل دقيقة واحدة عن طريق أخذ المتوسط.
MetricTriggerStatistic أسلوب التجميع المستخدم لتجميع المقاييس التي تم أخذ عينات منها. على سبيل المثال، يجمع TimeAggregation = "Average" المقاييس العينة عن طريق أخذ المتوسط.
MetricTriggerTimeWindow مقدار الوقت الذي يبحث فيه محرك التحجيم التلقائي مرة أخرى لتجميع المقياس. يجب أن تكون هذه القيمة أكبر من التأخير في مجموعة المقاييس، والتي تختلف حسب المورد. يجب أن يتراوح بين 5 دقائق و12 ساعة. على سبيل المثال، تعني 10 دقائق أنه في كل مرة يتم فيها تشغيل التحجيم التلقائي، فإنه يستعلم عن مقاييس للدقائق العشر الماضية. تسمح هذه الميزة لمقاييسك بالاستقرار وتتجنب التفاعل مع الارتفاعات العابرة.
MetricTriggerThreshold يحدد قيمة المقياس الذي يؤدي إلى حدث مقياس.
MetricTriggerOperator تحديد التشغيل المقارن المنطقي لاستخدامه عند تقييم قيمة المقياس.
MetricTriggerDividePerInstance عند التعيين إلى true يقسم مقياس المشغل على العدد الإجمالي للمثيلات. على سبيل المثال، إذا كان عدد الرسائل 300 وكان هناك 5 مثيلات قيد التشغيل، فإن قيمة المقياس المحسوبة هي 60 رسالة لكل مثيل. هذه الخاصية غير قابلة للتطبيق على جميع المقاييس.
ScaleActionDirection تحديد التحجيم أو التحجيم. القيم الصالحة هي Increase و Decrease.
ScaleActionType التحجيم حسب عدد معين من المثيلات، أو التحجيم إلى عدد مثيلات معين، أو التحجيم حسب النسبة المئوية لعدد المثيلات الحالية. تتضمن ChangeCountالقيم الصالحة و ExactCountو.PercentChangeCount
ScaleActionCooldown الحد الأدنى من الوقت للانتظار بين عمليات المقياس. هذا للسماح للمقاييس بالاستقرار وتجنب الخفقان. على سبيل المثال، إذا كانت ScaleActionCooldown 10 دقائق وحدثت عملية تغيير الحجم للتو، فلن يحاول التحجيم التلقائي تغيير الحجم مرة أخرى لمدة 10 دقائق.

إنشاء ملف تعريف تحجيم تلقائي افتراضي وإقران القواعد

بعد تحديد قواعد المقياس، قم بإنشاء ملف تعريف. يحدد ملف التعريف حدود عدد المثيلات الافتراضية والعليا والدنيا والأوقات التي يمكن فيها تطبيق القواعد المقترنة. New-AzAutoscaleProfileObject استخدم cmdlet لإنشاء ملف تعريف مقياس تلقائي جديد. نظرا لأن هذا ملف تعريف افتراضي، فإنه لا يحتوي على أي معلمات جدول. يكون ملف التعريف الافتراضي نشطا في بعض الأحيان حيث لا توجد ملفات تعريف أخرى نشطة

$defaultProfile=New-AzAutoscaleProfileObject `
    -Name "default" `
    -CapacityDefault 1 `
    -CapacityMaximum 10 `
    -CapacityMinimum 1 `
    -Rule $rule1, $rule2

يصف الجدول أدناه المعلمات المستخدمة في New-AzAutoscaleProfileObject cmdlet.

المعلمة ‏‏الوصف‬
CapacityDefault عدد المثيلات التي تكون إذا لم تكن المقاييس متاحة للتقييم. يتم استخدام الافتراضي فقط إذا كان عدد المثيلات الحالي أقل من الافتراضي.
CapacityMaximum الحد الأقصى لعدد مثيلات المورد. الحد الأقصى لعدد المثيلات مقيد بشكل أكبر بعدد الذاكرات الأساسية المتوفرة في الاشتراك.
CapacityMinimum الحد الأدنى لعدد مثيلات المورد.
FixedDateEnd وقت انتهاء ملف التعريف بتنسيق ISO 8601 ل.
FixedDateStart وقت البدء لملف التعريف بتنسيق ISO 8601.
Rule مجموعة من القواعد التي توفر المشغلات والمعلمات لإجراء التحجيم عندما يكون ملف التعريف هذا نشطا. يمكن تحديد 10 قواعد مفصولة بفواصل كحد أقصى.
RecurrenceFrequency عدد المرات التي يدخل فيها ملف التعريف المجدول حيز التنفيذ. يجب أن تكون weekهذه القيمة .
ScheduleDay مجموعة من الأيام التي يسري عليها ملف التعريف عند تحديد جدول زمني متكرر. القيم المحتملة هي من الأحد إلى السبت. لمزيد من المعلومات حول الجداول الزمنية المتكررة، راجع إضافة ملف تعريف متكرر باستخدام CLI
ScheduleHour مجموعة من الساعات التي يسري عليها ملف التعريف. القيم المدعومة هي من 0 إلى 23.
ScheduleMinute مجموعة من الدقائق التي يسري فيها ملف التعريف.
ScheduleTimeZone المنطقة الزمنية لساعات ملف التعريف.

تطبيق إعدادات التحجيم التلقائي

بعد تحديد القواعد وملف التعريف، قم بتطبيق إعدادات التحجيم التلقائي باستخدام New-AzAutoscaleSetting. لتحديث استخدام إعداد التحجيم التلقائي الموجود Update-AzAutoscaleSetting

New-AzAutoscaleSetting `
    -Name vmss-autoscalesetting1 `
    -ResourceGroupName $resourceGroupName `
    -Location eastus `
    -Profile $defaultProfile `
    -Enabled `
    -PropertiesName "vmss-autoscalesetting1" `
    -TargetResourceUri "/subscriptions/$subscriptionId/resourceGroups/$resourceGroupName/providers/Microsoft.Compute/virtualMachineScaleSets/$vmssName"

إضافة إعلامات إلى إعدادات التحجيم التلقائي

أضف إعلامات إلى إعداد البيع لتشغيل إخطار على الويب أو إرسال إعلامات بالبريد الإلكتروني عند حدوث حدث تغيير الحجم. لمزيد من المعلومات حول إعلامات خطاف الويب، راجع New-AzAutoscaleWebhookNotificationObject

تعيين إخطار على الويب باستخدام cmdlet التالي؛


  $webhook1=New-AzAutoscaleWebhookNotificationObject -Property @{} -ServiceUri "http://contoso.com/webhook1"

تكوين الإعلام باستخدام الإخطار على الويب وإعداد إعلام البريد الإلكتروني باستخدام New-AzAutoscaleNotificationObject cmdlet:


    $notification1=New-AzAutoscaleNotificationObject `
    -EmailCustomEmail "jason@contoso.com" `
    -EmailSendToSubscriptionAdministrator $true `
    -EmailSendToSubscriptionCoAdministrator $true `
    -Webhook $webhook1

تحديث إعدادات التحجيم التلقائي لتطبيق الإعلام


Update-AzAutoscaleSetting  `
    -Name vmss-autoscalesetting1 `
    -ResourceGroupName $resourceGroupName `
    -Profile $defaultProfile `
    -Notification $notification1 `
    -TargetResourceUri "/subscriptions/$subscriptionId/resourceGroups/$resourceGroupName/providers/Microsoft.Compute/virtualMachineScaleSets/$vmssName"  

مراجعة إعدادات التحجيم التلقائي

لمراجعة إعدادات التحجيم التلقائي، قم بتحميل الإعدادات في متغير باستخدام Get-AzAutoscaleSetting ثم إخراج المتغير كما يلي:

    $autoscaleSetting=Get-AzAutoscaleSetting  -ResourceGroupName $resourceGroupName -Name vmss-autoscalesetting1 
    $autoscaleSetting | Select-Object -Property *

الحصول على محفوظات التحجيم التلقائي باستخدام AzAutoscaleHistory

Get-AzAutoscaleHistory -ResourceId  /subscriptions/<subscriptionId/resourceGroups/$resourceGroupName/providers/Microsoft.Compute/virtualMachineScaleSets/$vmssName

ملفات التعريف المجدولة والمتكررة

إضافة ملف تعريف مجدول لحدث خاص

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

يستخدم المثال التالي نفس القواعد مثل ملف التعريف الافتراضي المحدد أعلاه، ولكنه يعين حدود مثيل جديدة لتاريخ معين. يمكنك أيضا تكوين قواعد مختلفة لاستخدامها مع ملف التعريف الجديد.

$highDemandDay=New-AzAutoscaleProfileObject `
    -Name "High-demand-day" `
    -CapacityDefault 7 `
    -CapacityMaximum 30 `
    -CapacityMinimum 5 `
    -FixedDateEnd ([System.DateTime]::Parse("2023-12-31T14:00:00Z")) `
    -FixedDateStart ([System.DateTime]::Parse("2023-12-31T13:00:00Z")) `
    -FixedDateTimeZone "UTC" `
    -Rule $rule1, $rule2

Update-AzAutoscaleSetting  `
    -Name vmss-autoscalesetting1 `
    -ResourceGroupName $resourceGroupName `
    -Profile $defaultProfile, $highDemandDay `
    -Notification $notification1 `
    -TargetResourceUri "/subscriptions/$subscriptionId/resourceGroups/$resourceGroupName/providers/Microsoft.Compute/virtualMachineScaleSets/$vmssName"  

إضافة ملف تعريف مجدول متكرر

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

في حين أن ملفات التعريف المجدولة لها تاريخ بدء وانتهاء، فإن ملفات التعريف المتكررة ليس لها وقت انتهاء. يظل ملف التعريف نشطا حتى وقت بدء ملف التعريف التالي. لذلك، عند إنشاء ملف تعريف متكرر، يجب إنشاء ملف تعريف افتراضي متكرر يبدأ عندما تريد انتهاء ملف التعريف المتكرر السابق.

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

ينشئ البرنامج النصي التالي ملف تعريف نهاية الأسبوع وملف تعريف افتراضي إضافي لإنهاء ملف تعريف عطلة نهاية الأسبوع.

$fridayProfile=New-AzAutoscaleProfileObject `
    -Name "Weekend" `
    -CapacityDefault 1 `
    -CapacityMaximum 1 `
    -CapacityMinimum 1 `
    -RecurrenceFrequency week  `
    -ScheduleDay "Friday" `
    -ScheduleHour 22  `
    -ScheduleMinute 00  `
    -ScheduleTimeZone  "Pacific Standard Time" `
    -Rule $rule1, $rule2


$defaultRecurringProfile=New-AzAutoscaleProfileObject `
    -Name "default recurring profile" `
    -CapacityDefault 2 `
    -CapacityMaximum 10 `
    -CapacityMinimum 2 `
    -RecurrenceFrequency week  `
    -ScheduleDay "Monday" `
    -ScheduleHour 00  `
    -ScheduleMinute 00  `
    -ScheduleTimeZone  "Pacific Standard Time" `
    -Rule $rule1, $rule2

New-AzAutoscaleSetting  `
    -Location eastus `
    -Name vmss-autoscalesetting1 `
    -ResourceGroupName $resourceGroupName `
    -Profile $defaultRecurringProfile, $fridayProfile `
    -Notification $notification1 `
    -TargetResourceUri "/subscriptions/$subscriptionId/resourceGroups/$resourceGroupName/providers/Microsoft.Compute/virtualMachineScaleSets/$vmssName"  

لمزيد من المعلومات حول ملفات التعريف المجدولة، راجع التحجيم التلقائي مع ملفات تعريف متعددة

أوامر التحجيم التلقائي الأخرى

للحصول على قائمة كاملة ب PowerShell cmdlets للتحجيم التلقائي، راجع PowerShell Module Browser

تنظيف الموارد

لتنظيف الموارد التي قمت بإنشائها في هذا البرنامج التعليمي، احذف مجموعة الموارد التي قمت بإنشائها. يحذف cmdlet التالي مجموعة الموارد وجميع مواردها.


Remove-AzResourceGroup -Name $resourceGroupName