إشعار
يتطلب الوصول إلى هذه الصفحة تخويلاً. يمكنك محاولة تسجيل الدخول أو تغيير الدلائل.
يتطلب الوصول إلى هذه الصفحة تخويلاً. يمكنك محاولة تغيير الدلائل.
يضمن التحجيم التلقائي أن لديك الكمية المناسبة من الموارد قيد التشغيل للتعامل مع الحمل المتقلب للتطبيق الخاص بك. يمكنك تكوين التحجيم التلقائي باستخدام مدخل Azure أو Azure CLI أو Azure PowerShell أو قوالب ARM أو Bicep.
توضح هذه المقالة كيفية تكوين التحجيم التلقائي لمجموعة مقياس الجهاز الظاهري باستخدام PowerShell. تستخدم التكوينات الخطوات التالية:
- إنشاء مجموعة مقياس يمكنك تحجيمها تلقائيا.
- إنشاء قواعد لتوسيع نطاقها وتوسيع نطاقها.
- إنشاء ملف تعريف يستخدم القواعد الخاصة بك.
- تطبيق إعدادات التحجيم التلقائي.
- قم بتحديث إعدادات التحجيم التلقائي باستخدام الإعلامات.
المتطلبات الأساسية
لتكوين التحجيم التلقائي باستخدام PowerShell، تحتاج إلى حساب Azure مع اشتراك نشط. يمكنك إنشاء حساب مجانًا.
إعداد بيئتك
- Azure Cloud Shell
- PowerShell المحلي
استخدم PowerShell في Azure Cloud Shell.
ملحوظة
قم بتشغيل الأمثلة في نفس جلسة عمل PowerShell مع تحديد اشتراكك المقصود.
# Set variables
$resourceGroupName = "<ResourceGroupName>"
$vmssName = "<VirtualMachineScaleSetName>"
$autoscaleName = "<AutoscaleSettingName>"
$azureRegion = "<AzureRegion>"
$virtualNetworkName = "<VirtualNetworkName>"
$subnetName = "<SubnetName>"
$publicIpAddressName = "<PublicIpAddressName>"
$loadBalancerName = "<LoadBalancerName>"
# Get the subscription ID from the current Azure PowerShell context
$subscriptionId = (Get-AzContext).Subscription.Id
# Build virtual machine scale set resource ID
$vmssPath = "/subscriptions/$subscriptionId/resourceGroups/$resourceGroupName"
$vmssProvider = "Microsoft.Compute/virtualMachineScaleSets/$vmssName"
$vmssResourceId = "$vmssPath/providers/$vmssProvider"
إنشاء مجموعة مقياس آلة افتراضية
يستخدم New-AzResourceGroup المثال Azure PowerShell التالي cmdlets وNew-AzVmss.
ملحوظة
استخدم مجموعة موارد مخصصة لهذا المثال بحيث يمكنك حذف مواردها عند الانتهاء.
ينشئ المثال عنوان IP عاما. للوصول إلى الإدارة، استخدم Azure Bastion بدلا من تعريض منافذ RDP أو SSH إلى الإنترنت.
# Create the resource group
New-AzResourceGroup -ResourceGroupName $resourceGroupName -Location $azureRegion
# Get credentials for the virtual machine scale set
$vmCredential = Get-Credential
# Define parameters for New-AzVmss
$newAzVmssParams = @{
ResourceGroupName = $resourceGroupName
Location = $azureRegion
VMScaleSetName = $vmssName
Credential = $vmCredential
VirtualNetworkName = $virtualNetworkName
SubnetName = $subnetName
PublicIpAddressName = $publicIpAddressName
LoadBalancerName = $loadBalancerName
OrchestrationMode = "Flexible"
}
# Create the virtual machine scale set
New-AzVmss @newAzVmssParams
إنشاء إعدادات التحجيم التلقائي
لإنشاء إعداد التحجيم التلقائي باستخدام PowerShell، اتبع التسلسل أدناه:
- إنشاء قواعد باستخدام
New-AzAutoscaleScaleRuleObject. - إنشاء ملف تعريف باستخدام
New-AzAutoscaleProfileObject. - إنشاء إعدادات التحجيم التلقائي باستخدام
New-AzAutoscaleSetting. - تحديث الإعدادات باستخدام
Update-AzAutoscaleSetting.
إنشاء قواعد
إنشاء قواعد التوسيع والتوسيع، ثم إقرانها بملف تعريف.
يستخدم New-AzAutoscaleScaleRuleObject المثال Azure PowerShell التالي cmdlet.
ملحوظة
يقوم بإنشاء قاعدتين:
- توسيع النطاق عندما تتجاوز النسبة المئوية لوحدة المعالجة المركزية 70%.
- تحجيم عندما تكون النسبة المئوية لوحدة المعالجة المركزية أقل من 30%.
# Define parameters for New-AzAutoscaleScaleRuleObject
$newAzAutoscaleScaleRuleObjectParams = @{
MetricTriggerMetricName = "Percentage CPU"
MetricTriggerMetricResourceUri = $vmssResourceId
MetricTriggerTimeGrain = New-TimeSpan -Minutes 1
MetricTriggerStatistic = "Average"
MetricTriggerTimeWindow = New-TimeSpan -Minutes 5
MetricTriggerTimeAggregation = "Average"
MetricTriggerOperator = "GreaterThan"
MetricTriggerThreshold = 70
MetricTriggerDividePerInstance = $false
ScaleActionDirection = "Increase"
ScaleActionType = "ChangeCount"
ScaleActionValue = "1"
ScaleActionCooldown = New-TimeSpan -Minutes 5
}
$scaleOutRule = New-AzAutoscaleScaleRuleObject @newAzAutoscaleScaleRuleObjectParams
# Define parameters for New-AzAutoscaleScaleRuleObject
$newAzAutoscaleScaleRuleObjectParams = @{
MetricTriggerMetricName = "Percentage CPU"
MetricTriggerMetricResourceUri = $vmssResourceId
MetricTriggerTimeGrain = New-TimeSpan -Minutes 1
MetricTriggerStatistic = "Average"
MetricTriggerTimeWindow = New-TimeSpan -Minutes 5
MetricTriggerTimeAggregation = "Average"
MetricTriggerOperator = "LessThan"
MetricTriggerThreshold = 30
MetricTriggerDividePerInstance = $false
ScaleActionDirection = "Decrease"
ScaleActionType = "ChangeCount"
ScaleActionValue = "1"
ScaleActionCooldown = New-TimeSpan -Minutes 5
}
$scaleInRule = New-AzAutoscaleScaleRuleObject @newAzAutoscaleScaleRuleObjectParams
يصف الجدول أدناه المعلمات المستخدمة في 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 |
الحد الأدنى من الوقت بعد عملية المقياس التي يجب أن تمر قبل أن تكون هذه القاعدة مؤهلة لبدء إجراء مقياس آخر. يتحقق التحجيم التلقائي من تهدئة كل قاعدة بشكل مستقل. يسمح التهدئة للمقاييس بالاستقرار وتجنب الخفقان. |
إنشاء ملف تعريف تحجيم تلقائي افتراضي وإقران القواعد
بعد تحديد قواعد المقياس، قم بإنشاء ملف تعريف. يحدد ملف التعريف حدود عدد المثيلات الافتراضية والعليا والدنيا والأوقات التي يمكن فيها تطبيق القواعد المقترنة.
يستخدم New-AzAutoscaleProfileObject المثال Azure PowerShell التالي cmdlet.
ملحوظة
نظرا لأن ملف التعريف هذا هو ملف تعريف افتراضي، فإنه لا يحتوي على أي معلمات جدول. يكون ملف التعريف الافتراضي نشطا في بعض الأحيان حيث لا توجد ملفات تعريف أخرى نشطة.
# Define parameters for New-AzAutoscaleProfileObject
$newAzAutoscaleProfileObjectParams = @{
Name = "default"
CapacityDefault = "1"
CapacityMaximum = "10"
CapacityMinimum = "1"
Rule = @($scaleOutRule, $scaleInRule)
}
$defaultProfile = New-AzAutoscaleProfileObject @newAzAutoscaleProfileObjectParams
يصف الجدول أدناه المعلمات المستخدمة في New-AzAutoscaleProfileObject cmdlet.
| المعلمة | الوصف |
|---|---|
CapacityDefault |
عدد المثيلات التي تكون إذا لم تكن المقاييس متاحة للتقييم. يتم استخدام الافتراضي فقط إذا كان عدد المثيلات الحالي أقل من الافتراضي. |
CapacityMaximum |
الحد الأقصى لعدد مثيلات المورد. الحد الأقصى لعدد المثيلات مقيد بشكل أكبر بعدد الذاكرات الأساسية المتوفرة في الاشتراك. |
CapacityMinimum |
الحد الأدنى لعدد مثيلات المورد. |
FixedDateEnd |
وقت انتهاء ملف التعريف بتنسيق ISO 8601 ل. |
FixedDateStart |
وقت البدء لملف التعريف بتنسيق ISO 8601. |
Rule |
مجموعة من القواعد التي توفر المشغلات والمعلمات لإجراء التحجيم عندما يكون ملف التعريف هذا نشطا. يمكن تحديد 10 قواعد مفصولة بفواصل كحد أقصى. |
RecurrenceFrequency |
عدد المرات التي يدخل فيها ملف التعريف المجدول حيز التنفيذ. يجب أن تكون weekهذه القيمة . |
ScheduleDay |
مجموعة من الأيام التي يسري عليها ملف التعريف عند تحديد جدول زمني متكرر. القيم المحتملة هي من الأحد إلى السبت. لمزيد من المعلومات حول الجداول الزمنية المتكررة، راجع ملفات التعريف المتكررة باستخدام PowerShell. |
ScheduleHour |
مجموعة من الساعات التي يسري عليها ملف التعريف. القيم المدعومة هي من 0 إلى 23. |
ScheduleMinute |
مجموعة من الدقائق التي يسري فيها ملف التعريف. |
ScheduleTimeZone |
المنطقة الزمنية لساعات ملف التعريف. |
تطبيق إعدادات التحجيم التلقائي
بعد تحديد القواعد وملف التعريف، قم بتطبيق إعدادات التحجيم التلقائي. لتحديث إعداد مقياس تلقائي موجود، استخدم Update-AzAutoscaleSetting.
يستخدم New-AzAutoscaleSetting المثال Azure PowerShell التالي cmdlet.
# Define parameters for New-AzAutoscaleSetting
$newAzAutoscaleSettingParams = @{
Name = $autoscaleName
ResourceGroupName = $resourceGroupName
Location = $azureRegion
Profile = @($defaultProfile)
Enabled = $true
PropertiesName = $autoscaleName
TargetResourceUri = $vmssResourceId
}
# Create the autoscale setting
New-AzAutoscaleSetting @newAzAutoscaleSettingParams
إضافة إعلامات إلى إعدادات التحجيم التلقائي
أضف إعلامات إلى إعداد التحجيم التلقائي لتشغيل إخطار على الويب أو إرسال إعلامات بالبريد الإلكتروني عند حدوث حدث مقياس.
يستخدم New-AzAutoscaleWebhookNotificationObject المثال Azure PowerShell التالي cmdlet.
# Set variables
$webhookUri = "<WebhookUri>"
# Create the webhook notification
$webhook = New-AzAutoscaleWebhookNotificationObject -Property @{} -ServiceUri $webhookUri
يستخدم New-AzAutoscaleNotificationObject المثال Azure PowerShell التالي cmdlet لتكوين إخطارات الويب والبريد الإلكتروني.
ملحوظة
استخدم نقطة نهاية HTTPS لخطاف الويب.
# Set variables
$notificationEmail = "<NotificationEmail>"
# Define parameters for New-AzAutoscaleNotificationObject
$newAzAutoscaleNotificationObjectParams = @{
EmailCustomEmail = @($notificationEmail)
EmailSendToSubscriptionAdministrator = $true
EmailSendToSubscriptionCoAdministrator = $true
Webhook = @($webhook)
}
$notification = New-AzAutoscaleNotificationObject @newAzAutoscaleNotificationObjectParams
يستخدم Update-AzAutoscaleSetting المثال Azure PowerShell التالي cmdlet لتطبيق الإعلام.
# Define parameters for Update-AzAutoscaleSetting
$updateAzAutoscaleSettingParams = @{
Name = $autoscaleName
ResourceGroupName = $resourceGroupName
Notification = @($notification)
}
# Update the autoscale notification
Update-AzAutoscaleSetting @updateAzAutoscaleSettingParams
مراجعة إعدادات التحجيم التلقائي
يستخدم Get-AzAutoscaleSetting المثال Azure PowerShell التالي cmdlet لاسترداد إعداد التحجيم التلقائي.
# Define parameters for Get-AzAutoscaleSetting
$getAzAutoscaleSettingParams = @{
ResourceGroupName = $resourceGroupName
Name = $autoscaleName
}
$autoscaleSetting = Get-AzAutoscaleSetting @getAzAutoscaleSettingParams
$autoscaleSetting | Select-Object -Property *
يستخدم Get-AzAutoscaleHistory المثال Azure PowerShell التالي cmdlet.
ملحوظة
يستعلم عن محفوظات إعداد التحجيم التلقائي، وليس معرف مورد مجموعة المقياس.
# Build autoscale setting resource ID
$autoscalePath = "/subscriptions/$subscriptionId/resourceGroups/$resourceGroupName"
$autoscaleProvider = "Microsoft.Insights/autoscaleSettings/$autoscaleName"
$autoscaleResourceId = "$autoscalePath/providers/$autoscaleProvider"
# Retrieve the autoscale history
Get-AzAutoscaleHistory -ResourceId $autoscaleResourceId
ملفات التعريف المجدولة والمتكررة
ملحوظة
عند تحديث Profile، قم بتضمين كل ملف تعريف تريد الاحتفاظ به. تضيف الأمثلة التالية ملفات تعريف إلى الإعداد الذي تم إنشاؤه مسبقا في هذه المقالة. احتفظ بأي ملفات تعريف أخرى عند تكييفها مع إعداد مقياس تلقائي آخر.
إضافة ملف تعريف مجدول لحدث خاص
إعداد ملفات تعريف التحجيم التلقائي لتوسيع نطاقها بشكل مختلف لأحداث معينة. على سبيل المثال، ليوم يكون فيه الطلب أعلى من المعتاد، قم بإنشاء ملف تعريف بحد أقصى وحد أدنى للمثيلات.
يستخدم New-AzAutoscaleProfileObject المثال Azure PowerShell التالي cmdlets وUpdate-AzAutoscaleSetting.
ملحوظة
يستخدم المثال التالي نفس القواعد مثل ملف التعريف الافتراضي المحدد سابقا، ولكنه يعين حدود مثيل جديدة لتاريخ معين. يمكنك أيضا تكوين قواعد مختلفة لاستخدامها مع ملف التعريف الجديد. تستخدم قيم البدء والنهاية الطوابع الزمنية ISO 8601 في UTC.
# Set variables
$startTime = "<StartTime>"
$endTime = "<EndTime>"
# Define parameters for New-AzAutoscaleProfileObject
$newAzAutoscaleProfileObjectParams = @{
Name = "High-demand-day"
CapacityDefault = "7"
CapacityMaximum = "30"
CapacityMinimum = "5"
FixedDateEnd = [datetime]::Parse($endTime)
FixedDateStart = [datetime]::Parse($startTime)
FixedDateTimeZone = "UTC"
Rule = @($scaleOutRule, $scaleInRule)
}
$highDemandDay = New-AzAutoscaleProfileObject @newAzAutoscaleProfileObjectParams
# Define parameters for Update-AzAutoscaleSetting
$updateAzAutoscaleSettingParams = @{
Name = $autoscaleName
ResourceGroupName = $resourceGroupName
Profile = @($defaultProfile, $highDemandDay)
}
# Update the autoscale profiles
Update-AzAutoscaleSetting @updateAzAutoscaleSettingParams
إضافة ملف تعريف مجدول متكرر
تتيح لك ملفات التعريف المتكررة جدولة ملف تعريف تغيير الحجم الذي يتكرر كل أسبوع.
في حين أن ملفات التعريف المجدولة لها تاريخ بدء وانتهاء، فإن ملفات التعريف المتكررة ليس لها وقت انتهاء. يظل ملف التعريف نشطا حتى وقت بدء ملف التعريف التالي. لذلك، عند إنشاء ملف تعريف متكرر، يجب إنشاء ملف تعريف افتراضي متكرر يبدأ عندما تريد انتهاء ملف التعريف المتكرر السابق.
يستخدم New-AzAutoscaleProfileObject المثال Azure PowerShell التالي cmdlets وUpdate-AzAutoscaleSetting.
ملحوظة
على سبيل المثال، قم بالتحجيم إلى مثيل واحد في عطلة نهاية الأسبوع من ليلة الجمعة إلى صباح الاثنين. لتكوين ملف تعريف عطلة نهاية الأسبوع الذي يبدأ في ليالي الجمعة وينتهي في صباح يوم الاثنين، قم بإنشاء ملف تعريف يبدأ ليلة الجمعة، ثم أنشئ ملف تعريف متكرر بإعداداتك الافتراضية التي تبدأ صباح الاثنين.
يقوم بإنشاء ملف تعريف نهاية الأسبوع وملف تعريف افتراضي متكرر لإنهاء ملف تعريف عطلة نهاية الأسبوع، مع الاحتفاظ بملفات التعريف الافتراضية والتاريخ الثابت من الخطوات السابقة.
# Define parameters for New-AzAutoscaleProfileObject
$newAzAutoscaleProfileObjectParams = @{
Name = "Weekend"
CapacityDefault = "1"
CapacityMaximum = "1"
CapacityMinimum = "1"
RecurrenceFrequency = "Week"
ScheduleDay = @("Friday")
ScheduleHour = @(22)
ScheduleMinute = @(0)
ScheduleTimeZone = "Pacific Standard Time"
Rule = @($scaleOutRule, $scaleInRule)
}
$fridayProfile = New-AzAutoscaleProfileObject @newAzAutoscaleProfileObjectParams
# Define parameters for New-AzAutoscaleProfileObject
$newAzAutoscaleProfileObjectParams = @{
Name = "default recurring profile"
CapacityDefault = "2"
CapacityMaximum = "10"
CapacityMinimum = "2"
RecurrenceFrequency = "Week"
ScheduleDay = @("Monday")
ScheduleHour = @(0)
ScheduleMinute = @(0)
ScheduleTimeZone = "Pacific Standard Time"
Rule = @($scaleOutRule, $scaleInRule)
}
$defaultRecurringProfile = New-AzAutoscaleProfileObject @newAzAutoscaleProfileObjectParams
# Define parameters for Update-AzAutoscaleSetting
$updateAzAutoscaleSettingParams = @{
Name = $autoscaleName
ResourceGroupName = $resourceGroupName
Profile = @(
$defaultProfile
$highDemandDay
$defaultRecurringProfile
$fridayProfile
)
}
# Update the autoscale profiles
Update-AzAutoscaleSetting @updateAzAutoscaleSettingParams
لمزيد من المعلومات حول ملفات التعريف المجدولة، راجع التحجيم التلقائي مع ملفات تعريف متعددة.
أوامر التحجيم التلقائي الأخرى
للحصول على قائمة كاملة ب PowerShell cmdlets للتحجيم التلقائي، راجع PowerShell Module Browser.
تنظيف الموارد
لتنظيف الموارد التي أنشأتها في هذا البرنامج التعليمي، احذف مجموعة الموارد المخصصة التي قمت بإنشائها. يحذف cmdlet التالي مجموعة الموارد وجميع مواردها.
يستخدم Remove-AzResourceGroup المثال Azure PowerShell التالي cmdlet.
# Delete the example resource group
Remove-AzResourceGroup -Name $resourceGroupName