استخدام التحجيم التلقائي التنبؤي لتوسيع نطاقه قبل متطلبات التحميل في مجموعات مقياس الجهاز الظاهري
يستخدم التحجيم التلقائي التنبؤي التعلّم الآلي للمساعدة في إدارة مجموعات مقياس جهاز Azure الظاهري وتوسيعها باستخدام أنماط حِمل العمل الدورية. وهو يتنبأ بالحمل الكلي للمعالج إلى مجموعة مقياس الجهاز الظاهري، استناداً إلى أنماط استخدام المعالج المحفوظة الخاصة بك. يتنبأ بتحميل وحدة المعالجة المركزية الشاملة من خلال الملاحظة والتعلم من الاستخدام التاريخي. تضمن هذه العملية حدوث توسيع النطاق في الوقت المناسب لتلبية الطلب.
يحتاج التحجيم التلقائي التنبؤي إلى سبعة أيام كحد أدنى من التاريخ لتوفير التنبؤات. تأتي النتائج الأكثر دقة من 15 يومًا من البيانات التاريخية.
يلتزم التحجيم التلقائي التنبؤي بحدود التحجيم التي قمت بتعيينها لمجموعة مقياس الجهاز الظاهري. عندما يتنبأ النظام بأن النسبة المئوية لتحميل المعالج لمجموعة تحجيم الجهاز الظاهري ستتجاوز حد التوسيع الخاص بك، تُضاف مثيلات جديدة وفقاً لمواصفاتك. يمكنك أيضا تكوين مدى التقدم الذي تريد توفير مثيلات جديدة إليه، قبل ساعة واحدة من حدوث ارتفاع حمل العمل المتوقع.
تتيح لك التوقعاتالتنبؤ فقط عرض توقعات وحدة المعالجة المركزية الخاصة بك دون تشغيل إجراء القياس بناءً على التنبؤ. يمكنك بعد ذلك مقارنة التنبؤ بأنماط حمل العمل الفعلية لبناء الثقة في نماذج التنبؤ قبل تمكين ميزة التحجيم التلقائي التنبؤي.
عروض التحجيم التلقائي التنبؤية
- التحجيم التلقائي التنبؤي هو لأحمال العمل التي تعرض أنماط استخدام CPU الدورية.
- يتوفر الدعم فقط لمجموعات تحجيم الجهاز الظاهري.
- مقياس النسبة المئوية للمعالج مع نوع التجميع متوسط هو المقياس الوحيد المدعوم حالياً.
- يدعم التحجيم التلقائي التنبؤي التوسع فقط. تكوين التحجيم التلقائي القياسي للإدارة لتوسيع نطاق الإجراءات.
- لا يتوفر التحجيم التلقائي التنبؤي إلا لسحابة Azure Commercial. سحابات Azure Government غير مدعومة حاليا.
تمكين التحجيم التلقائي التنبؤي أو التنبؤ فقط باستخدام مدخل Microsoft Azure
انتقل إلى شاشة مجموعة مقياس الجهاز الظاهري وحدد تغيير الحجم.
ضمن قسم Custom autoscale، يظهر التحجيم التلقائي التنبؤي.
باستخدام تحديد القائمة المنسدلة، يمكنك:
- تعطيل التحجيم التلقائي التنبؤي. Disable هو التحديد الافتراضي عندما تهبط على الصفحة لأول مرة لمقياس تلقائي تنبؤي.
- تمكين وضع التنبؤ فقط.
- تمكين التحجيم التلقائي التنبؤي.
إشعار
قبل أن تتمكن من تمكين التحجيم التلقائي التنبؤي أو وضع التنبؤ فقط، يجب عليك إعداد شروط التحجيم التلقائي التفاعلي القياسية.
لتمكين وضع التنبؤ فقط، حدده من القائمة المنسدلة. حدد مشغل توسيع النطاق استنادا إلى النسبة المئوية لوحدة المعالجة المركزية. ثم حدد حفظ. تنطبق نفس العملية على تمكين التحجيم التلقائي التنبؤي. لتعطيل التحجيم التلقائي التنبؤي أو وضع التنبؤ فقط، حدد تعطيل من القائمة المنسدلة.
إذا رغبت في ذلك، حدد وقت بدء التشغيل المسبق بحيث يتم تشغيل المثيلات بشكل كامل قبل الحاجة إليها. يمكنك تشغيل المثيلات مسبقا بين 5 و60 دقيقة قبل وقت التنبؤ المطلوب.
بعد تمكين وضع التحجيم التلقائي التنبؤي أو التنبؤ فقط وحفظه، حدد المخططات التنبؤية.
ترى ثلاثة مخططات بيانية:
- يعرض المخطط العلوي مقارنة زائدة للنسبة المئوية الفعلية مقابل الإجمالي المتوقعة لوحدة المعالجة المركزية. الفترة الزمنية للرسم البياني المعروض هي من الأيام السبعة الأخيرة إلى ال 24 ساعة التالية.
- يعرض المخطط الأوسط الحد الأقصى لعدد المثيلات التي تم تشغيلها خلال الأيام السبعة الماضية.
- يعرض المخطط السفلي متوسط استخدام وحدة المعالجة المركزية الحالي خلال الأيام السبعة الماضية.
تمكين استخدام قالب Azure Resource Manager
استرداد معرّف مورد مجموعة مقياس الجهاز الظاهري ومجموعة الموارد لمجموعة تحجيم الجهاز الظاهري. على سبيل المثال: /subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/patest2/providers/Microsoft.Compute/virtualMachineScaleSets/patest2
قم بتحديث ملف autoscale_only_parameters بمعرف مورد مجموعة مقياس الجهاز الظاهري وأي معلمات إعداد مقياس تلقائي.
استخدم أمر PowerShell لنشر القالب الذي يحتوي على إعدادات التحجيم التلقائي. على سبيل المثال:
PS G:\works\kusto_onboard\test_arm_template> new-azurermresourcegroupdeployment -name binzAutoScaleDeploy -resourcegroupname cpatest2 -templatefile autoscale_only.json -templateparameterfile autoscale_only_parameters.json
PS C:\works\autoscale\predictive_autoscale\arm_template> new-azurermresourcegroupdeployment -name binzAutoScaleDeploy - resourcegroupname patest2 -templatefile autoscale_only_binz.json -templateparameterfile autoscale_only_parameters_binz.json
DeploymentName : binzAutoScaleDeploy
ResourceGroupName : patest2
ProvisioningState : Succeeded
Timestamp : 3/30/2021 10:11:02 PM
Mode : Incremental
TemplateLink
Parameters :
Name Type Value
================ ============================= ====================
targetVmssResourceld String /subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/patest2/providers/Microsoft.Compute/virtualMachineScaleSets/patest2
location String East US
minimumCapacity Int 1
maximumCapacity Int 4
defaultCapacity Int 4
metricThresholdToScaleOut Int 50
metricTimeWindowForScaleOut String PT5M
metricThresholdToScaleln Int 30
metricTimeWindowForScaleln String PT5M
changeCountScaleOut Int 1
changeCountScaleln Int 1
predictiveAutoscaleMode String Enabled
Outputs :
Name Type Value
================ ============================== ====================
targetVmssResourceld String /subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/patest2/providers/Microsoft.Compute/virtualMachineScaleSets/patest2
settingLocation String East US
predictiveAutoscaleMode String Enabled
DeloymentDebugLoglevel :
PS C:\works\autoscale\predictive_autoscale\arm_template>
autoscale_only.json
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"targetVmssResourceId": {
"type": "string"
},
"location": {
"type": "string"
},
"minimumCapacity": {
"type": "Int",
"defaultValue": 2,
"metadata": {
"description": "The minimum capacity. Autoscale engine will ensure the instance count is at least this value."
}
},
"maximumCapacity": {
"type": "Int",
"defaultValue": 5,
"metadata": {
"description": "The maximum capacity. Autoscale engine will ensure the instance count is not greater than this value."
}
},
"defaultCapacity": {
"type": "Int",
"defaultValue": 3,
"metadata": {
"description": "The default capacity. Autoscale engine will preventively set the instance count to be this value if it can not find any metric data."
}
},
"metricThresholdToScaleOut": {
"type": "Int",
"defaultValue": 30,
"metadata": {
"description": "The metric upper threshold. If the metric value is above this threshold then autoscale engine will initiate scale out action."
}
},
"metricTimeWindowForScaleOut": {
"type": "string",
"defaultValue": "PT5M",
"metadata": {
"description": "The metric look up time window."
}
},
"metricThresholdToScaleIn": {
"type": "Int",
"defaultValue": 20,
"metadata": {
"description": "The metric lower threshold. If the metric value is below this threshold then autoscale engine will initiate scale in action."
}
},
"metricTimeWindowForScaleIn": {
"type": "string",
"defaultValue": "PT5M",
"metadata": {
"description": "The metric look up time window."
}
},
"changeCountScaleOut": {
"type": "Int",
"defaultValue": 1,
"metadata": {
"description": "The instance count to increase when autoscale engine is initiating scale out action."
}
},
"changeCountScaleIn": {
"type": "Int",
"defaultValue": 1,
"metadata": {
"description": "The instance count to decrease the instance count when autoscale engine is initiating scale in action."
}
},
"predictiveAutoscaleMode": {
"type": "String",
"defaultValue": "ForecastOnly",
"metadata": {
"description": "The predictive Autoscale mode."
}
}
},
"variables": {
},
"resources": [{
"type": "Microsoft.Insights/autoscalesettings",
"name": "cpuPredictiveAutoscale",
"apiVersion": "2022-10-01",
"location": "[parameters('location')]",
"properties": {
"profiles": [{
"name": "DefaultAutoscaleProfile",
"capacity": {
"minimum": "[parameters('minimumCapacity')]",
"maximum": "[parameters('maximumCapacity')]",
"default": "[parameters('defaultCapacity')]"
},
"rules": [{
"metricTrigger": {
"metricName": "Percentage CPU",
"metricNamespace": "",
"metricResourceUri": "[parameters('targetVmssResourceId')]",
"timeGrain": "PT1M",
"statistic": "Average",
"timeWindow": "[parameters('metricTimeWindowForScaleOut')]",
"timeAggregation": "Average",
"operator": "GreaterThan",
"threshold": "[parameters('metricThresholdToScaleOut')]"
},
"scaleAction": {
"direction": "Increase",
"type": "ChangeCount",
"value": "[parameters('changeCountScaleOut')]",
"cooldown": "PT5M"
}
}, {
"metricTrigger": {
"metricName": "Percentage CPU",
"metricNamespace": "",
"metricResourceUri": "[parameters('targetVmssResourceId')]",
"timeGrain": "PT1M",
"statistic": "Average",
"timeWindow": "[parameters('metricTimeWindowForScaleIn')]",
"timeAggregation": "Average",
"operator": "LessThan",
"threshold": "[parameters('metricThresholdToScaleIn')]"
},
"scaleAction": {
"direction": "Decrease",
"type": "ChangeCount",
"value": "[parameters('changeCountScaleOut')]",
"cooldown": "PT5M"
}
}
]
}
],
"enabled": true,
"targetResourceUri": "[parameters('targetVmssResourceId')]",
"predictiveAutoscalePolicy": {
"scaleMode": "[parameters('predictiveAutoscaleMode')]"
}
}
}
],
"outputs": {
"targetVmssResourceId" : {
"type" : "string",
"value" : "[parameters('targetVmssResourceId')]"
},
"settingLocation" : {
"type" : "string",
"value" : "[parameters('location')]"
},
"predictiveAutoscaleMode" : {
"type" : "string",
"value" : "[parameters('predictiveAutoscaleMode')]"
}
}
}
autoscale_only_parameters.json
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"targetVmssResourceId": {
"value": "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/patest2/providers/Microsoft.Compute/virtualMachineScaleSets/patest2"
},
"location": {
"value": "East US"
},
"minimumCapacity": {
"value": 1
},
"maximumCapacity": {
"value": 4
},
"defaultCapacity": {
"value": 4
},
"metricThresholdToScaleOut": {
"value": 50
},
"metricTimeWindowForScaleOut": {
"value": "PT5M"
},
"metricThresholdToScaleIn": {
"value": 30
},
"metricTimeWindowForScaleIn": {
"value": "PT5M"
},
"changeCountScaleOut": {
"value": 1
},
"changeCountScaleIn": {
"value": 1
},
"predictiveAutoscaleMode": {
"value": "Enabled"
}
}
}
لمزيد من المعلومات حول قوالب Azure Resource Manager، راجع نظرة عامة على قالب Resource Manager.
الأسئلة الشائعة
يجيب هذا القسم على الأسئلة المتداولة.
لماذا تزيد النسبة المئوية لوحدة المعالجة المركزية عن 100 بالمائة على المخططات التنبؤية؟
يعرض المخطط التنبؤي الحمل التراكمي لجميع الأجهزة في مجموعة المقياس. إذا كانت لديك 5 أجهزة ظاهرية في مجموعة مقياس، فسيكون الحد الأقصى للتحميل التراكمي لجميع الأجهزة الظاهرية 500%، أي خمسة أضعاف الحد الأقصى لتحميل وحدة المعالجة المركزية بنسبة 100% لكل جهاز ظاهري.
ماذا يحدث بمرور الوقت عند تشغيل التحجيم التلقائي التنبؤي لمجموعة مقياس الجهاز الظاهري؟
يستخدم التحجيم التلقائي للتنبؤ محفوظات مجموعة مقياس الجهاز الظاهري قيد التشغيل. إذا كانت مجموعة التحجيم الخاصة بك تعمل لمدة أقل من سبعة أيام، فستتلقى رسالة تفيد بأنه يتم تدريب النموذج. لمزيد من المعلومات، راجع رسالة عدم وجود بيانات تنبؤية. تتحسن التنبؤات مع مرور الوقت وتحقيق أقصى دقة بعد 15 يومًا من إنشاء مجموعة مقياس الجهاز الظاهري.
في حالة حدوث تغييرات في نمط عبء العمل ولكنها تظل دورية، يتعرف النموذج على التغيير ويبدأ في ضبط التنبؤ. تتحسن التنبؤات مع مرور الوقت. يتم الوصول إلى الدقة القصوى بعد 15 يوماً من حدوث التغيير في نمط نسبة استخدام الشبكة. تذكر أن قواعد التحجيم التلقائي القياسية لا تزال سارية. إذا حدثت زيادة جديدة غير متوقعة في نسبة استخدام الشبكة، فستظل مجموعة تحجيم الجهاز الظاهري تتوسع لتلبية الطلب.
ماذا لو لم يعمل النموذج بشكل جيد بالنسبة لي؟
يعمل التصميم بشكل أفضل مع أحمال العمل التي تظهر دورية. نوصي بتقييم التنبؤات أولاً عن طريق تمكين "التنبؤ فقط"، والذي سيغطي الاستخدام المتوقع لوحدة المعالجة المركزية لمجموعة المقاييس مع الاستخدام الفعلي المرصود. بعد مقارنة النتائج وتقييمها، يمكنك بعد ذلك اختيار تمكين القياس بناءً على المقاييس المتوقعة إذا كانت تنبؤات النموذج قريبة بما يكفي للسيناريو الخاص بك.
لماذا أحتاج إلى تمكين مقياس تلقائي قياسي قبل تمكين مقياس تلقائي تنبؤي؟
يعد التحجيم التلقائي القياسي احتياطياً ضرورياً إذا لم يعمل النموذج التنبؤي بشكل جيد مع السيناريو الخاص بك. سيغطي المقياس التلقائي القياسي ارتفاعات الحمل غير المتوقعة، والتي لا تعد جزءًا من نمط تحميل وحدة المعالجة المركزية المعتاد. كما يوفر احتياطيًا في حالة حدوث خطأ في استرداد البيانات التنبؤية.
ما القاعدة التي تسري إذا تم تعيين كل من قواعد التحجيم التلقائي التنبؤية والقياسية؟
يتم استخدام قواعد التحجيم التلقائي القياسية إذا كان هناك ارتفاع غير متوقع في تحميل وحدة المعالجة المركزية، أو يحدث خطأ عند استرداد البيانات التنبؤية
نستخدم الحد المحدد في قواعد التحجيم التلقائي القياسية لفهم الوقت الذي ترغب في توسيع نطاقه وعدد المثيلات. إذا كنت تريد توسيع نطاق مجموعة تحجيم الجهاز الظاهري عندما يتجاوز استخدام وحدة المعالجة المركزية 70٪ وتظهر البيانات الفعلية أو المتوقعة أن استخدام وحدة المعالجة المركزية هو أو سيكون أكثر من 70٪، فسيحدث مقياس.
الأخطاء والتحذيرات
يعالج هذا القسم الأخطاء والتحذيرات الشائعة.
لم يتم تمكين التحجيم التلقائي القياسي
تتلقى رسالة الخطأ التالية:
لتمكين التحجيم التلقائي التنبؤي، قم بإنشاء قاعدة توسيع استنادا إلى مقياس "النسبة المئوية لوحدة المعالجة المركزية". انقر هنا للانتقال إلى علامة التبويب "تكوين" لتعيين قاعدة مقياس تلقائي.
تعني هذه الرسالة أنك حاولت تمكين التحجيم التلقائي التنبؤي قبل تمكين التحجيم التلقائي القياسي وإعداده لاستخدام مقياس النسبة المئوية للمعالج مع نوع التجميع المتوسط.
لا توجد بيانات تنبؤية
لن ترى البيانات على المخططات البيانية التنبؤية في ظل ظروف معينة. هذا السلوك ليس خطأ، إنه السلوك المقصود.
عند تعطيل المقياس التلقائي التنبؤي، تتلقى بدلاً من ذلك رسالة تبدأ بـ "لا توجد بيانات لعرضها..." ثم ترى إرشادات حول ما يجب تمكينه حتى تتمكن من رؤية مخطط تنبؤي.
عند إنشاء مجموعة مقياس آلة افتراضية لأول مرة وتمكين وضع التنبؤ فقط، تتلقى الرسالة "يتم تدريب البيانات التنبؤية..." ووقت للعودة لمشاهدة المخطط.
الخطوات التالية
تعرف على المزيد حول التحجيم التلقائي في المقالات التالية: