Реализация масштабирования на приложение для размещения с высокой плотностью

Замечание

Мы рекомендуем использовать модуль Azure Az PowerShell для взаимодействия с Azure. Чтобы начать, ознакомьтесь с разделом Установка Azure PowerShell. Чтобы узнать, как перейти на модуль Az PowerShell, см. статью Миграция Azure PowerShell с AzureRM на Az.

Вы можете масштабировать приложения Службы приложений Azure, масштабируя план службы приложений , на который они выполняются. При запуске нескольких приложений в одном плане App Service, каждый экземпляр с горизонтальным масштабированием запускает все приложения в этом плане.

В отличие от этого, масштабирование для каждого приложения можно включить на уровне плана службы приложений для масштабирования приложения независимо от плана службы приложений, на котором он размещен. Таким образом, план App Service можно масштабировать до 10 экземпляров, но приложение может использовать только пять из них.

Замечание

Масштабирование для каждого приложения доступно только для ценовых категорий "Стандартный", "Премиум", "Премиум" V2, "Премиум" V3 и "Изолированный".

Приложения выделяются в доступный план службы приложений, используя оптимальный подход для равномерного распределения между экземплярами. Хотя равномерное распределение не гарантируется, платформа гарантирует, что два экземпляра одного приложения не размещаются в одном экземпляре плана службы приложений.

Платформа не полагается на метрики при распределении рабочих ресурсов. Приложения перебалансируются только при добавлении или удалении экземпляров из плана службы приложений.

Масштабирование для каждого приложения с помощью PowerShell

Создайте план с отдельным масштабированием для приложений, передавая параметр -PerSiteScaling $true командлету New-AzAppServicePlan.

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

Вы можете включить масштабирование на уровне приложения с помощью существующего плана службы приложений, передав параметр -PerSiteScaling $true командлету Set-AzAppServicePlan.

Set-AzAppServicePlan -ResourceGroupName $ResourceGroup `
   -Name $AppServicePlan -PerSiteScaling $true

На уровне приложения настройте количество экземпляров, которые приложение может использовать в плане службы приложений.

В следующем примере количество экземпляров приложения ограничено двумя, независимо от того, на сколько экземпляров масштабируется базовый план службы приложений.

# 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 создает:

  • План службы приложений, масштабируемый до 10 экземпляров.
  • Приложение, настроенное для масштабирования до пяти экземпляров.

План службы приложений устанавливает значение свойства PerSiteScaling в true "perSiteScaling": true. Приложение устанавливает number of workers для использования значение 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, так и в средах службы приложений. Однако рекомендуемая стратегия — использовать среды службы приложений, чтобы воспользоваться преимуществами своих расширенных функций и большей емкости плана службы приложений.

Выполните следующие действия, чтобы настроить размещение с высокой плотностью для приложений:

  1. Назначьте план службы приложений в качестве плана высокой плотности и масштабируйте его до требуемой емкости.

  2. Установите флаг для плана службы приложений PerSiteScaling в значение true.

  3. Новые приложения создаются и назначаются данному плану службы приложений, при этом свойство numberOfWorkers устанавливается в 1.

    • Использование этой конфигурации обеспечивает максимальную плотность.
  4. Количество работников может быть сконфигурировано независимо для каждого приложения, чтобы предоставить дополнительные ресурсы в зависимости от нужд. Рассмотрим пример.

    • Приложение с высоким уровнем использования может задать numberOfWorkers на 3, чтобы иметь большую вычислительную мощность для этого приложения.
    • Для приложений с низким уровнем использования следовало бы задать numberOfWorkersзначение 1.