استضافة عالية الكثافة على Azure App Service باستخدام التحجيم لكل تطبيق

إشعار

نوصي باستخدام الوحدة النمطية Azure Az PowerShell للتفاعل مع Azure. راجع تثبيت Azure PowerShell للبدء. لمعرفة كيفية الترحيل إلى الوحدة النمطية Az PowerShell، راجع ترحيل Azure PowerShell من AzureRM إلى Az.

عند استخدام App Service، يمكنك توسيع نطاق تطبيقاتك عن طريق تحجيم خطة App Service التي تعمل عليها. عندما يتم تشغيل تطبيقات متعددة في نفس خطة Azure App Service، يقوم كل مثيل موسع بتشغيل جميع التطبيقات في الخطة.

التحجيم لكل تطبيق يمكن تمكينه على مستوى خطة App Service للسماح بتحجيم التطبيق بشكل منفرد عن خطة App Service التي تستضيفه. وبهذه الطريقة، يمكن تغيير حجم خطة App Service إلى 10 مثيلات، ولكن يمكن تعيين تطبيق لاستخدام خمسة فقط.

إشعار

يتوفر التحجيم لكل تطبيق فقط لمستويات الأسعار القياسية والمتميزة والمتميزة بالإصدار 2 والمتميزة بالإصدار 3 والمعزولة.

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

لا يعتمد النظام الأساسي على المقاييس لاتخاذ قرار بشأن تخصيص العاملين. تتم إعادة توازن التطبيقات فقط عند إضافة مثيلات أو إزالتها من خطة App Service.

تحجيم كل تطبيق باستخدام PowerShell

إنشاء خطة مع التحجيم لكل تطبيق عن طريق إدخال المعلمة -PerSiteScaling $true إلى New-AzAppServicePlan الأمر cmdlet.

New-AzAppServicePlan -ResourceGroupName $ResourceGroup -Name $AppServicePlan `
                            -Location $Location `
                            -Tier Premium -WorkerSize Small `
                            -NumberofWorkers 5 -PerSiteScaling $true

تمكين التحجيم لكل تطبيق باستخدام خطة خدمة التطبيقات الموجودة عن طريق تمرير المعلمة -PerSiteScaling $true إلى الأمر cmdletSet-AzAppServicePlan.

# Enable per-app scaling for the App Service Plan using the "PerSiteScaling" parameter.
Set-AzAppServicePlan -ResourceGroupName $ResourceGroup `
   -Name $AppServicePlan -PerSiteScaling $true

على مستوى التطبيق، قم بتكوين عدد المثيلات التي يمكن للتطبيق استخدامها في خطة App Service.

في المثال أدناه، يقتصر التطبيق على مثيلين بغض النظر عن عدد المثيلات التي تم توسيع نطاق خطة App Service الأساسية إليها.

# Get the app we want to configure to use "PerSiteScaling"
$newapp = Get-AzWebApp -ResourceGroupName $ResourceGroup -Name $webapp

# Modify the NumberOfWorkers setting to the desired value.
$newapp.SiteConfig.NumberOfWorkers = 2

# Post updated app back to azure
Set-AzWebApp $newapp

هام

$newapp.SiteConfig.NumberOfWorkers يختلف عن $newapp.MaxNumberOfWorkers. يستخدم التحجيم لكل تطبيق $newapp.SiteConfig.NumberOfWorkers لتحديد خصائص المقياس للتطبيق.

التحجيم لكل تطبيق باستخدام Azure Resource Manager

يقوم قالب Azure Resource Manager بإنشاء ما يلي:

  • خطة App Service التي تم توسيع نطاقها إلى 10 مثيلات
  • تطبيق تم تكوينه لتوسيع نطاقه إلى خمس مثيلات كحد أقصى.

تقوم خطة App Service بتعيين الخاصية PerSiteScaling إلى «صواب» "perSiteScaling": true. يقوم التطبيق بتعيين عدد العمال لاستخدامهم إلى 5 "properties": { "numberOfWorkers": "5" }.

{
    "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
    "contentVersion": "1.0.0.0",
    "parameters":{
        "appServicePlanName": { "type": "string" },
        "appName": { "type": "string" }
        },
    "resources": [
    {
        "comments": "App Service Plan with per site perSiteScaling = true",
        "type": "Microsoft.Web/serverFarms",
        "sku": {
            "name": "P1",
            "tier": "Premium",
            "size": "P1",
            "family": "P",
            "capacity": 10
            },
        "name": "[parameters('appServicePlanName')]",
        "apiVersion": "2015-08-01",
        "location": "West US",
        "properties": {
            "name": "[parameters('appServicePlanName')]",
            "perSiteScaling": true
        }
    },
    {
        "type": "Microsoft.Web/sites",
        "name": "[parameters('appName')]",
        "apiVersion": "2015-08-01-preview",
        "location": "West US",
        "dependsOn": [ "[resourceId('Microsoft.Web/serverFarms', parameters('appServicePlanName'))]" ],
        "properties": { "serverFarmId": "[resourceId('Microsoft.Web/serverFarms', parameters('appServicePlanName'))]" },
        "resources": [ {
                "comments": "",
                "type": "config",
                "name": "web",
                "apiVersion": "2015-08-01",
                "location": "West US",
                "dependsOn": [ "[resourceId('Microsoft.Web/Sites', parameters('appName'))]" ],
                "properties": { "numberOfWorkers": "5" }
            } ]
        }]
}

كل تحجيم للتطبيق هو ميزة يتم تمكينها في كل من مناطق Azure العمومية وبيئات App Service. ومع ذلك، فإن الاستراتيجية الموصى بها هي استخدام بيئات App Service للاستفادة من ميزاتها المتقدمة وسعة خطة App Service الأكبر.

اتبع هذه الخطوات لتكوين استضافة عالية الكثافة لتطبيقاتك:

  1. تعيين خطة App Service كخطة عالية الكثافة وتوسيع نطاقها إلى السعة المطلوبة.
  2. قم بتعيين العلامة PerSiteScaling إلى «صواب» على خطة App Service.
  3. يتم إنشاء تطبيقات جديدة وتعيينها إلى خطة App Service هذه مع تعيين الخاصية numberOfWorkers إلى 1.
    • استخدام هذا التكوين ينتج أعلى كثافة ممكنة.
  4. يمكن تكوين عدد العمال بشكل مستقل لكل تطبيق لمنح موارد إضافية حسب الحاجة. على سبيل المثال:
    • يمكن للتطبيق عالي الاستخدام تعيين numberOfWorkers إلى 3 للحصول على المزيد من سعة المعالجة لهذا التطبيق.
    • ستقوم التطبيقات منخفضة الاستخدام بتعيين numberOfWorkers إلى 1.

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