Поделиться через


Высокая плотность размещения в службе приложений Azure с использованием масштабирования на уровне приложений

Примечание.

Мы рекомендуем использовать модуль Azure Az PowerShell для взаимодействия с Azure. Сведения о начале работы см. в статье "Установка Azure PowerShell". Дополнительные сведения см. в статье Перенос Azure PowerShell с AzureRM на Az.

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

Масштабирование на уровне приложения можно включить на уровне плана службы приложений, разрешая масштабирование приложения независимо от плана службы приложений, в котором оно размещается. Таким образом, план службы приложений можно увеличить до 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.

# Enable per-app scaling for the App Service Plan using the "PerSiteScaling" parameter.
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). Приложение задает количество рабочих ролей, равное 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.

Следующие шаги