مقدمة إلى التحجيم التلقائي في نظام مجموعات Service Fabric المُدارة

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

المتطلبات والمقاييس المدعومة:

  • يجب أن يكون apiVersion لمورد نظام المجموعة المُدار من Service Fabric 2022-01-01 أو أحدث.
  • يجب أن يكون SKU للمجموعة Standard.
  • لا يمكن تكوينه إلا على نوع عقدة ثانوي في نظام المجموعة الخاصة بك.
  • بعد تمكين تحجيم تلقائي لنوع عقدة، كوِّن الخاصية vmInstanceCount إلى -1 عند إعادة توزيع المورد.
  • يتم دعم مقاييس Azure Monitor المنشورة فقط.

ملاحظة

في حالة استخدام صورة نظام تشغيل Windows مع تمكين دور Hyper-V، على سبيل المثال. سيتم تكوين الجهاز الظاهري للمحاكاة الافتراضية المتداخلة، ولن يتوفر Available Memory Metric؛ نظراً لأن برنامج تشغيل الذاكرة الديناميكي داخل الجهاز الظاهري سيكون في حالة توقف.

السيناريو المتداول حيث يكون التحجيم التلقائي مفيداً هو عندما يختلف الحمل على خدمة معينة بمرور الوقت. على سبيل المثال، يمكن لخدمة مثل البوابة أن تتوسع بناءً على كمية الموارد اللازمة للتعامل مع الطلبات الواردة. دعنا نلقِ نظرة على مثال لما يمكن أن تبدو عليه هذه القواعد للقياس وسنستخدمها لاحقاً في المقالة:

  • إذا استخدمت جميع مثيلات البوابة أكثر من 70% من المتوسط، فوسّع نطاق خدمة البوابة بإضافة مثيلين آخرين. افعل ذلك كل 30 دقيقة، ولكن لا تحتوي على أكثر من عشرين مثيل في المجموع.
  • إذا كانت جميع مثيلات البوابة الخاصة بي تستخدم أقل من 40% من الذاكرة الأساسية في المتوسط، فقم بتقليص نطاق الخدمة بإزالة مثيل واحد. افعل ذلك كل 30 دقيقة، لكن لا تحتوي على أقل من ثلاث مثيلات في المجموع.

مثال على توزيع تحجيم تلقائي

هذا المثال سوف يمر عبر:

  • إنشاء نظام مجموعة مُدارة من Standard SKU Service Fabric بنوعين من العقد، NT1 وNT2 افتراضياً.
  • إضافة قواعد التحجيم التلقائي لنوع العقدة الثانوية، NT2.

ملاحظة

يتم إجراء التحجيم التلقائي لنوع العقدة بناءً على مقاييس مضيف VMSS CPU لنظام المجموعة المُدارة. يتم حل مورد VMSS تلقائياً في القالب.

سيأخذك ما يلي خطوة بخطوة خلال إعداد نظام مجموعة مع تكوين تحجيم تلقائي.

  1. إنشاء مجموعة موارد في المنطقة

    Login-AzAccount
    Select-AzSubscription -SubscriptionId $subscriptionid
    New-AzResourceGroup -Name $myresourcegroup -Location $location
    
  2. إنشاء مورد نظام المجموعة

    قم بتنزيل هذا النموذج نموذج مجموعة مُدار من Standard SKU Service Fabric قم بتنفيذ هذا الأمر لتوزيع مورد نظام المجموعة:

    $parameters = @{ 
    clusterName = $clusterName
    adminPassword = $VmAdminPassword
    clientCertificateThumbprint = $clientCertificateThumbprint
    } 
    New-AzResourceGroupDeployment -Name "deploy_cluster" -ResourceGroupName $resourceGroupName -TemplateFile .\azuredeploy.json -TemplateParameterObject $parameters -Verbose
    
  3. تكوين وتمكين قواعد التحجيم التلقائي على نوع عقدة ثانوية

    قم بتنزيل نموذج تحجيم تلقائي لنظام المجموعة المُدارة الذي ستستخدمه لتكوين التحجيم التلقائي باستخدام الأوامر التالية:

    $parameters = @{ 
    clusterName = $clusterName
    }
    New-AzResourceGroupDeployment -Name "deploy_autoscale" -ResourceGroupName $resourceGroupName -TemplateFile .\sfmc-deploy-autoscale.json -TemplateParameterObject $parameters -Verbose 
    

ملاحظة

بعد اكتمال هذا التوزيع، يجب أن تقوم عمليات توزيع موارد نظام المجموعة المستقبلية بتعيين الخاصية vmInstanceCount إلى -1 على أنواع العقد الثانوية التي تم تمكين قواعد التحجيم التلقائي لها. سيؤدي هذا إلى التأكد من أن عمليات توزيع نظام المجموعة لا تتعارض مع التحجيم التلقائي.

تمكين أو تعطيل التحجيم التلقائي على نوع عقدة ثانوي

لا تعمل أنواع العقدة المُوزعة بواسطة نظام المجموعة المُدارة من Service Fabric على تمكين التحجيم التلقائي افتراضياً. يمكن تمكين أو تعطيل التحجيم التلقائي في أي وقت، لكل نوع عقدة، تم تكوينها وإتاحتها.

لتمكين هذه الميزة، قم بتكوين الخاصية enabled تحت النوع Microsoft.Insights/autoscaleSettings في ARM Template كما هو موضح أدناه:

    "resources": [
            {
            "type": "Microsoft.Insights/autoscaleSettings",
            "apiVersion": "2015-04-01",
            "name": "[concat(parameters('clusterName'), '-', parameters('nodeType2Name'))]",
            "location": "[resourceGroup().location]",
            "properties": {
                "name": "[concat(parameters('clusterName'), '-', parameters('nodeType2Name'))]",
                "targetResourceUri": "[concat('/subscriptions/', subscription().subscriptionId, '/resourceGroups/',  resourceGroup().name, '/providers/Microsoft.ServiceFabric/managedclusters/', parameters('clusterName'), '/nodetypes/', parameters('nodeType2Name'))]",
                "enabled": true,
            ...

لتعطيل التحجيم التلقائي، اضبط القيمة على false

حذف قواعد التحجيم التلقائي

لحذف أي إعداد لسياسات التحجيم التلقائي لنوع عقدة، يمكنك تشغيل أمر PowerShell التالي.

Remove-AzResource -ResourceId "/subscriptions/$subscriptionId/resourceGroups/$resourceGroup/providers/microsoft.insights/autoscalesettings/$name" -Force

وضع سياسات للتحجيم التلقائي

لا تقوم مجموعة Service Fabric المُدارة بتكوين أي سياسات للتحجيم التلقائي افتراضياً. يجب تكوين سياسات التحجيم التلقائي لأي إجراءات تحجيم تحدث على الموارد الأساسية.

سيحدد المثال التالي سياسة لـnodeType2Name بحيث تتكون من 3 عقد على الأقل، مع السماح بتحجيم ما يصل إلى 20 عقدة. سيؤدي ذلك إلى توسيع النطاق عندما يكون متوسط​استخدام CPU هو 70% خلال آخر 30 دقيقة مع دقة دقيقة واحدة. سيؤدي ذلك إلى تقليص النطاق بمجرد أن يكون متوسط​استخدام CPU أقل من 40% خلال آخر 30 دقيقة مع دقة دقيقة واحدة.

    "resources": [
            {
            "type": "Microsoft.Insights/autoscaleSettings",
            "apiVersion": "2015-04-01",
            "name": "[concat(parameters('clusterName'), '-', parameters('nodeType2Name'))]",
            "location": "[resourceGroup().location]",
            "properties": {
                "name": "[concat(parameters('clusterName'), '-', parameters('nodeType2Name'))]",
                "targetResourceUri": "[concat('/subscriptions/', subscription().subscriptionId, '/resourceGroups/',  resourceGroup().name, '/providers/Microsoft.ServiceFabric/managedclusters/', parameters('clusterName'), '/nodetypes/', parameters('nodeType2Name'))]",
                "enabled": "[parameters('enableAutoScale')]",
                "profiles": [
                    {
                        "name": "Autoscale by percentage based on CPU usage",
                        "capacity": {
                            "minimum": "3",
                            "maximum": "20",
                            "default": "3"
                        },
                        "rules": [
                            {
                                "metricTrigger": {
                                  "metricName": "Percentage CPU",
                                  "metricNamespace": "",
                                  "metricResourceUri": "[concat('/subscriptions/',subscription().subscriptionId,'/resourceGroups/SFC_', reference(resourceId('Microsoft.ServiceFabric/managedClusters', parameters('clusterName')), '2022-01-01').clusterId,'/providers/Microsoft.Compute/virtualMachineScaleSets/',parameters('nodeType2Name'))]",
                                  "timeGrain": "PT1M",
                                  "statistic": "Average",
                                  "timeWindow": "PT30M",
                                  "timeAggregation": "Average",
                                  "operator": "GreaterThan",
                                  "threshold": 70
                                },
                                "scaleAction": {
                                  "direction": "Increase",
                                  "type": "ChangeCount",
                                  "value": "5",
                                  "cooldown": "PT5M"
                                }
                            },
                            {
                                "metricTrigger": {
                                  "metricName": "Percentage CPU",
                                  "metricNamespace": "",
                                  "metricResourceUri": "[concat('/subscriptions/',subscription().subscriptionId,'/resourceGroups/SFC_', reference(resourceId('Microsoft.ServiceFabric/managedClusters', parameters('clusterName')), '2022-01-01').clusterId,'/providers/Microsoft.Compute/virtualMachineScaleSets/',parameters('nodeType2Name'))]",
                                  "timeGrain": "PT1M",
                                  "statistic": "Average",
                                  "timeWindow": "PT30M",
                                  "timeAggregation": "Average",
                                  "operator": "LessThan",
                                  "threshold": 40
                                },
                                "scaleAction": {
                                  "direction": "Decrease",
                                  "type": "ChangeCount",
                                  "value": "1",
                                  "cooldown": "PT5M"
                                }
                            }
                            ]
                    }
                    ]
                }
            }
        
    ]                           

يمكنك تنزيل ARM Template لتمكين تحجيم تلقائي والذي يحتوي على المثال أعلاه

عرض تعريفات التحجيم التلقائي المكونة لمورد نظام المجموعة المُدارة

يمكنك عرض إعدادات التحجيم التلقائي المكونة باستخدام Azure Resource Explorer.

  1. انتقل إلى Azure Resource Explorer

  2. انتقل إلى subscriptions ->SubscriptionName ->resource group ->microsoft.insights ->autoscalesettings -> اسم سياسة التحجيم التلقائي: على سبيل المثال sfmc01-NT2.

    سترى شيئاً مشابهاً لهذا في شجرة التنقل:

    طريقة عرض شجرة مثال مستكشف موارد Azure

  3. على الجانب الأيمن، يمكن عرض التعريف الكامل لإعداد التحجيم التلقائي.

    في هذا المثال، تم تكوين التحجيم التلقائي باستخدام قاعدة التوسيع والتقليص المستندة إلى CPU%.

    تفاصيل نوع العقدة ذات المقياس التلقائي لمثال مستكشف موارد Azure

استكشاف الأخطاء وإصلاحها

بعض الأشياء التي يجب مراعاتها:

  • مراجعة أحداث التحجيم التلقائي المُشغلة مقابل أنواع العقد الثانوية لنظام المجموعات المُدارة

    1. انتقل إلى Activity log نظام المجموعة
    2. مراجعة سجل النشاط للعملية المكتملة لتغيير نطاق التحجيم التلقائي لأعلى/لأسفل
  • كم عدد الأجهزة الظاهرية التي تم تكوينها لنوع العقدة وهل حمل العمل يحدث عليها كلها أم بعضها فقط؟

  • هل حدود التقليص والتوسيع مختلفة بما فيه الكفاية؟

    لنفترض أنك قمت بتعيين قاعدة لتوسيع نطاقها عندما يكون متوسط CPU أكبر من 50% خلال خمس دقائق، وللتقليص عندما يكون متوسط CPU أقل من 50%. قد يتسبب هذا الإعداد في حدوث مشكلة "الإخفاق" عندما يكون استخدام CPU قريباً من الحد، مع إجراءات تحجيم باستمرار بزيادة وتقليل حجم المجموعة. بسبب هذا الإعداد، تحاول خدمة التحجيم التلقائي منع "الإخفاق"، والذي يمكن أن يظهر على أنه ليس تحجيماً. لذلك، تأكد من اختلاف حدود التوسيع والتقليص بشكل كافٍ للسماح ببعض المسافة بين التحجيم.

  • هل يمكنك توسيع نطاق نوع العقدة أو تقليصه؟ اضبط عدد العقد على مستوى نوع العقدة وتأكد من اكتمالها بنجاح. كيفية تحجيم نوع عقدة في نظام مجموعة مُدارة

  • تحقق من Microsoft.ServiceFabric/managedclusters/nodetypes، وموارد Microsoft.Insights في Azure Resource Explorer

    يعد Azure Resource Explorer أداة لا غنى عنها لاستكشاف الأخطاء وإصلاحها توضح لك حالة موارد Azure Resource Manager الخاصة بك. انقر فوق اشتراكك وانظر إلى مجموعة المواردResource Group التي تستخدمها لاستكشاف الأخطاء وإصلاحها. ضمن موفر المورد ServiceFabric/managedclusters/clustername، ابحث أسفل NodeTypes عن أنواع العقدة التي قمت بإنشائها وتحقق من الخصائص للتحقق من كون provisioningState هي Succeeded. بعد ذلك، انتقل إلى موفر موارد Microsoft.Insights ضمن clustername وتحقق من أن قواعد التحجيم التلقائي تبدو صحيحة.

  • هل قيمك القياسية المُصدرة كما هو متوقع؟ استخدام Get-AzMetricوحدة PowerShell للحصول على القيم القياسية لأحد الموارد ومراجعتها

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

الخطوات التالية