Автомасштабирование с несколькими профилями

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

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

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

В параметре автомасштабирования можно использовать один или несколько профилей.

Существует три типа профиля:

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

При каждом запуске службы автомасштабирования профили оцениваются в следующем порядке:

  1. Профили фиксированной даты
  2. Повторяющиеся профили
  3. Профиль по умолчанию

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

В следующем примере показан параметр автомасштабирования с профилем по умолчанию и повторяющимся профилем.

Снимок экрана: параметр автомасштабирования с параметром по умолчанию и повторяющимся профилем или условием масштабирования.

В приведенном выше примере в понедельник после 3 утра повторяющийся профиль перестанет использоваться. Если число экземпляров меньше 3, автомасштабирование масштабируется до нового минимума трех. Автомасштабирование продолжает использовать этот профиль и масштабируется на основе ЦП% до понедельника в 8 вечера. В любое время масштабирование выполняется в соответствии с профилем по умолчанию на основе количества запросов. После 8:00 в понедельник автомасштабирование переключается на профиль по умолчанию. Например, если число экземпляров в тот момент ровно 12, автомасштабирование уменьшает количество до 10, что является максимальным допустимым значением для профиля по умолчанию.

Несколько смежных профилей

Автоматическое масштабирование переходов между профилями на основе времени начала. Время окончания заданного профиля определяется временем начала следующего профиля.

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

Совет

Чтобы настроить несколько смежных профилей с помощью портала, оставьте поле времени окончания незаполненным. Текущий профиль перестанет использоваться, когда следующий профиль становится активным. Укажите только время окончания, если вы хотите вернуться к профилю по умолчанию. Создание повторяющегося профиля без времени окончания поддерживается только с помощью шаблонов портала и ARM.

Несколько профилей с помощью шаблонов, CLI и PowerShell

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

Полный справочник по шаблону см. в разделе определения ресурса шаблона ARM "Автомасштабирование".

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

Повторяющийся профиль шаблона ARM

В следующем примере показано, как создать два повторяющихся профиля. Один профиль для выходных с 00:01 в субботу утром и второй профиль дня недели, начиная с понедельников в 04:00. Это означает, что профиль выходных начинается в субботу утром в одну минуту после полуночи и заканчивается в понедельник утром в 04:00. Профиль Weekday начнется в 4 утра в понедельник и закончится сразу после полуночи в субботу.

ARM (JSON)

Используйте следующую команду для развертывания шаблона: az deployment group create --name VMSS1-Autoscale-607 --resource-group rg-vmss1 --template-file VMSS1-autoscale.json гдеVMSS1-autoscale.json является файлом, содержащим следующий объект JSON.

{
    "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
    "contentVersion": "1.0.0.0",
    "resources": [
        {
            "type": "Microsoft.Insights/autoscaleSettings",
            "apiVersion": "2015-04-01",
            "name": "VMSS1-Autoscale-607",
            "location": "eastus",
            "properties": {

                "name": "VMSS1-Autoscale-607",
                "enabled": true,
                "targetResourceUri": "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/rg-vmss1/providers/Microsoft.Compute/virtualMachineScaleSets/VMSS1",
                "profiles": [
                    {
                        "name": "Weekday profile",
                        "capacity": {
                            "minimum": "3",
                            "maximum": "20",
                            "default": "3"
                        },
                        "rules": [
                            {
                                "scaleAction": {
                                    "direction": "Increase",
                                    "type": "ChangeCount",
                                    "value": "1",
                                    "cooldown": "PT5M"
                                },
                                "metricTrigger": {
                                    "metricName": "Inbound Flows",
                                    "metricNamespace": "microsoft.compute/virtualmachinescalesets",
                                    "metricResourceUri": "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/rg-vmss1/providers/Microsoft.Compute/virtualMachineScaleSets/VMSS1",
                                    "operator": "GreaterThan",
                                    "statistic": "Average",
                                    "threshold": 100,
                                    "timeAggregation": "Average",
                                    "timeGrain": "PT1M",
                                    "timeWindow": "PT10M",
                                    "Dimensions": [],
                                    "dividePerInstance": true
                                }
                            },
                            {
                                "scaleAction": {
                                    "direction": "Decrease",
                                    "type": "ChangeCount",
                                    "value": "1",
                                    "cooldown": "PT5M"
                                },
                                "metricTrigger": {
                                    "metricName": "Inbound Flows",
                                    "metricNamespace": "microsoft.compute/virtualmachinescalesets",
                                    "metricResourceUri": "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/rg-vmss1/providers/Microsoft.Compute/virtualMachineScaleSets/VMSS1",
                                    "operator": "LessThan",
                                    "statistic": "Average",
                                    "threshold": 60,
                                    "timeAggregation": "Average",
                                    "timeGrain": "PT1M",
                                    "timeWindow": "PT10M",
                                    "Dimensions": [],
                                    "dividePerInstance": true
                                }
                            }
                        ],
                        "recurrence": {
                            "frequency": "Week",
                            "schedule": {
                                "timeZone": "E. Europe Standard Time",
                                "days": [
                                    "Monday"
                                ],
                                "hours": [
                                    4
                                ],
                                "minutes": [
                                    0
                                ]
                            }
                        }
                    },
                    {
                        "name": "Weekend profile",
                        "capacity": {
                            "minimum": "1",
                            "maximum": "3",
                            "default": "1"
                        },
                        "rules": [],
                        "recurrence": {
                            "frequency": "Week",
                            "schedule": {
                                "timeZone": "E. Europe Standard Time",
                                "days": [
                                    "Saturday"                                    
                                ],
                                "hours": [
                                    0
                                ],
                                "minutes": [
                                    1
                                ]
                            }
                        }
                    }
                ],
                "notifications": [],
                "targetResourceLocation": "eastus"
            }

        }
    ]
}    

Бицепс

Используйте следующую команду для развертывания шаблона: az deployment group create --name VMSS1-Autoscale-607 --resource-group rg-vmss1 --template-file VMSS1-autoscale.bicep где VMSS1-autoscale.bicep — это файл, содержащий следующий объект Bicep.

resource VMSS1_Autoscale_607 'Microsoft.Insights/autoscaleSettings@2015-04-01' = {
    name: 'VMSS1-Autoscale-607'
    location: 'eastus'
    properties: {
        name: 'VMSS1-Autoscale-607'
        enabled: true
        targetResourceUri: '/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/rg-vmss1/providers/Microsoft.Compute/virtualMachineScaleSets/VMSS1'
        profiles: [
            {
                name: 'Weekday profile'
                capacity: {
                    minimum: '3'
                    maximum: '20'
                    default: '3'
                }
                rules: [
                    {
                        scaleAction: {
                            direction: 'Increase'
                            type: 'ChangeCount'
                            value: '1'
                            cooldown: 'PT5M'
                        }
                        metricTrigger: {
                            metricName: 'Inbound Flows'
                            metricNamespace: 'microsoft.compute/virtualmachinescalesets'
                            metricResourceUri: '/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/rg-vmss1/providers/Microsoft.Compute/virtualMachineScaleSets/VMSS1'
                            operator: 'GreaterThan'
                            statistic: 'Average'
                            threshold: 100
                            timeAggregation: 'Average'
                            timeGrain: 'PT1M'
                            timeWindow: 'PT10M'
                            dimensions: []
                            dividePerInstance: true
                        }
                    }
                    {
                        scaleAction: {
                            direction: 'Decrease'
                            type: 'ChangeCount'
                            value: '1'
                            cooldown: 'PT5M'
                        }
                        metricTrigger: {
                            metricName: 'Inbound Flows'
                            metricNamespace: 'microsoft.compute/virtualmachinescalesets'
                            metricResourceUri: '/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/rg-vmss1/providers/Microsoft.Compute/virtualMachineScaleSets/VMSS1'
                            operator: 'LessThan'
                            statistic: 'Average'
                            threshold: 60
                            timeAggregation: 'Average'
                            timeGrain: 'PT1M'
                            timeWindow: 'PT10M'
                            dimensions: []
                            dividePerInstance: true
                        }
                    }
                ]
                recurrence: {
                    frequency: 'Week'
                    schedule: {
                        timeZone: 'E. Europe Standard Time'
                        days: [
                            'Monday'
                        ]
                        hours: [
                            4
                        ]
                        minutes: [
                            0
                        ]
                    }    
                }
            }
            {
                name: 'Weekend profile'
                capacity: {
                    minimum: '1'
                    maximum: '3'
                    default: '1'
                }
                rules: []
                recurrence: {
                    frequency: 'Week'
                    schedule: {
                        timeZone: 'E. Europe Standard Time'
                        days: [
                            'Saturday'
                        ]
                        hours: [
                            0
                        ]
                        minutes: [
                            1
                        ]
                    }
                }
            }
        ]
        notifications: []
        targetResourceLocation: 'eastus'
    }
}

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