تكوين التحجيم التلقائي باستخدام 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، اتبع التسلسل أدناه:
- إنشاء قواعد باستخدام
New-AzAutoscaleScaleRuleObject
- إنشاء ملف تعريف باستخدام
New-AzAutoscaleProfileObject
- إنشاء إعدادات التحجيم التلقائي باستخدام
New-AzAutoscaleSetting
- تحديث الإعدادات باستخدام
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.
إنشاء ملف تعريف تحجيم تلقائي افتراضي وإقران القواعد
بعد تحديد قواعد المقياس، قم بإنشاء ملف تعريف. يحدد ملف التعريف حدود عدد المثيلات الافتراضية والعليا والدنيا والأوقات التي يمكن فيها تطبيق القواعد المقترنة. 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