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


Понимание параметров автомасштабирования

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

В этой статье описываются параметры автомасштабирования.

Схема настройки автомасштабирования

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

  • Один профиль по умолчанию.
  • В этом профиле два правила метрик: одно для увеличения масштаба и одно для уменьшения масштаба.
    • Правило горизонтального масштабирования активируется, когда средняя процентная метрика ЦП масштабируемого набора виртуальных машин превышает 85 % за последние 10 минут.
    • Правило уменьшения масштаба срабатывает, когда среднее значение виртуальной машины меньше 60 % за последнюю минуту.

Примечание.

У каждого параметра может быть несколько профилей. Дополнительные сведения см. в разделе профили. Для профиля также можно определить несколько правил масштабирования наружу и внутрь. Сведения о том, как они оцениваются, см. в разделе оценки .

{
    "$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/abc123456-987-f6e5-d43c-9a8d8e7f6541/resourceGroups/rg-vmss1/providers/Microsoft.Compute/virtualMachineScaleSets/VMSS1",
    "profiles": [
      {
        "name": "Auto created default scale condition",
        "capacity": {
          "minimum": "1",
          "maximum": "4",
          "default": "1"
        },
        "rules": [
          {
            "metricTrigger": {
              "metricName": "Percentage CPU",
              "metricResourceUri": "/subscriptions/abc123456-987-f6e5-d43c-9a8d8e7f6541/resourceGroups/rg-vmss1/providers/Microsoft.Compute/virtualMachineScaleSets/VMSS1",
              "timeGrain": "PT1M",
              "statistic": "Average",
              "timeWindow": "PT10M",
              "timeAggregation": "Average",
              "operator": "GreaterThan",
              "threshold": 85,
              "dividePerInstance": false
            },
            "scaleAction": {
              "direction": "Increase",
              "type": "ChangeCount",
              "value": "1",
              "cooldown": "PT5M"
            }
          },
          {
            "metricTrigger": {
              "metricName": "Percentage CPU",
              "metricResourceUri": "/subscriptions/abc123456-987-f6e5-d43c-9a8d8e7f6541/resourceGroups/rg-vmss1/providers/Microsoft.Compute/virtualMachineScaleSets/VMSS1",
              "timeGrain": "PT1M",
              "statistic": "Average",
              "timeWindow": "PT10M",
              "timeAggregation": "Average",
              "operator": "LessThan",
              "threshold": 60,
              "dividePerInstance": false
            },
            "scaleAction": {
              "direction": "Decrease",
              "type": "ChangeCount",
              "value": "1",
              "cooldown": "PT5M"
            }
          }
        ]
      }
    ]
  }
}

В следующей таблице описываются элементы в приведенном выше параметре автомасштабирования JSON.

Раздел Имя элемента Имя портала Описание
Настройка Идентификатор Идентификатор ресурса параметра автомасштабирования. Параметры автомасштабирования относятся к ресурсам Azure Resource Manager.
Настройка имя Имя параметра автомасштабирования.
Настройка расположение Расположение параметра автомасштабирования. Оно может отличаться от расположения масштабируемого ресурса.
свойства целевойРесурсUri Идентификатор масштабируемого ресурса. Для каждого ресурса можно задать только один параметр автомасштабирования.
свойства профили Условие масштабирования Параметр автомасштабирования состоит из одного или нескольких профилей. Каждый раз, когда модуль автомасштабирования запускается, он выполняет один профиль. Настройте до 20 профилей на настройку автомасштабирования.
профили имя Имя профиля. Для него можно указать любое имя, позволяющее отличить профиль от других.
профили емкость.максимум Ограничения экземпляра — максимум Максимальный разрешенный объем. Это обеспечивает, что автомасштабирование не увеличит ваш ресурс выше этого числа при выполнении профиля.
профили минимальная вместимость Ограничения экземпляра — минимальное значение Минимальный разрешенный объем. Это гарантирует, что автоматическое масштабирование не уменьшит ресурс ниже этого числа при выполнении профиля.
профили емкость.по умолчанию Ограничения экземпляра — по умолчанию Если есть проблема с чтением метрики ресурсов, а текущая емкость ниже по умолчанию, автомасштабирование масштабируется до значения по умолчанию. Это действие гарантирует доступность ресурса. Если текущая емкость уже выше емкости по умолчанию, автомасштабирование не масштабируется.
профили правила Правила Автоматическое масштабирование регулирует объемы между максимальными и минимальными значениями с помощью правил в профиле. Определите до 10 отдельных правил в профиле. Обычно правила определяются в парах: одно для определения времени, когда следует увеличить масштаб, а другое — для определения времени, когда следует его уменьшить.
правило metricTrigger Правило масштабирования Определяет условие метрики для правила.
metricTrigger название метрики Имя метрики Имя метрики.
metricTrigger metricResourceUri Идентификатор ресурса, выдающего эту метрику. В большинстве случаев это то же самое, что и масштабируемый ресурс. В некоторых случаях это может быть иначе. Например, когда нужно масштабировать набор виртуальных машин по количеству сообщений в очереди хранилища.
metricTrigger timegrain Интервал времени (в минутах) Продолжительность выборки метрик. Например, timeGrain = "PT1M" означает, что метрики должны агрегироваться каждые 1 минуту с помощью метода агрегирования, указанного в элементе статистики.
metricTrigger статистика Статистика интервала времени Метод агрегирования, используемый в течение периода timeGrain. Например, статистика = "Среднее" и timeGrain = "PT1M" означает, что метрики должны быть агрегированы каждые 1 минуту, принимая среднее значение. Это свойство определяет порядок выборки метрики.
metricTrigger timeWindow Продолжительность Период времени для анализа метрик. Например, timeWindow = "PT10M" означает, что при каждом запуске автомасштабирования он запрашивает метрики за последние 10 минут. Временное окно позволяет нормализовать метрики и избегать реакции на переходные всплески.
metricTrigger агрегирование времени Агрегирование времени Метод агрегирования метрик выборки. Например, timeAggregation = "Average" должен агрегировать образцы метрик, принимая среднее значение. В предыдущем примере выполнены 10 выборок по 1 минуте, а затем определено их среднее значение.
metricTrigger dividePerInstance Разделите значение на количество экземпляров. Если разделениеПоЭкземплярам = true, метрика делится на количество экземпляров в этом ресурсе. Этот параметр полезен для метрик, которые лучше всего агрегируются с помощью Sum или Count и должны быть нормализованы на основе количества активных экземпляров. Например, если метрика — это длина очереди, а агрегирование — Sum, то при деленииНаЭкземпляр = true метрика делится на количество экземпляров в масштабируемом наборе виртуальных машин, что дает среднюю длину очереди на всех виртуальных машинах. dividePerInstance полезно для метрик, агрегируемых по Sum и Count, но не для агрегирования Average.
правило действие масштабирования Действие Действие, выполняемое при активации параметра metricTrigger правила.
scaleAction направление Операция Увеличьте для расширения или уменьшите для сужения.
масштабировать действие значение Число экземпляров Емкость, до которой нужно увеличить или уменьшить ресурс.
действие масштабирования время восстановления Охлаждение (в минутах) Период времени, который необходимо подождать после масштабирования, прежде чем повторить операцию. Период охлаждения вступает в действие после события уменьшения масштаба или увеличения масштаба. Например, если cooldown = "PT10M", автомасштабирование не инициирует повторное масштабирование в течение следующих 10 минут. Период охлаждения необходим для стабилизации метрик после добавления или удаления экземпляров.

Профили автомасштабирования

Определите до 20 разных профилей для параметра автомасштаба.
Существует три типа профилей автомасштабирования:

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

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

        ...
        "profiles": [
            {
                "name": " regularProfile",
                "capacity": {
                    ...
                },
                "rules": [
                    ...
                ]
            },
            {
                "name": "eventProfile",
                "capacity": {
                ...
                },
                "rules": [
                    ...
                ],
                "fixedDate": {
                    "timeZone": "Pacific Standard Time",
                    "start": "2017-12-26T00:00:00",
                    "end": "2017-12-26T23:59:00"
                }
            }
        ]
    

    Примечание.

    Количество дней между моментами start и end профиля fixedDate не может превышать 365 дней.

  • Профиль повторения: профиль повторения используется на день или набор дней недели. Схема для повторяющегося профиля не включает дату окончания. Окончание даты и времени для повторяющегося профиля задается по времени начала следующего профиля. Когда портал используется для настройки повторяющихся профилей, профиль по умолчанию автоматически обновляется, чтобы начаться в конечное время, указанное для повторяющегося профиля. Дополнительные сведения о настройке нескольких профилей см. в разделе "Автомасштабирование с несколькими профилями"

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

        {
            "$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/    abc123456-987-f6e5-d43c-9a8d8e7f6541/    resourceGroups/rg-vmss1/providers/    Microsoft.Compute/    virtualMachineScaleSets/VMSS1",
                        "profiles": [
                            {
                                "name": "Weekend profile",
                                "capacity": {
                                    ...
                                },
                                "rules": [
                                    ...
                                ],
                                "recurrence": {
                                    "frequency": "Week",
                                    "schedule": {
                                        "timeZone": "E. Europe     Standard Time",
                                        "days": [
                                            "Saturday",
                                            "Sunday"
                                        ],
                                        "hours": [
                                            6
                                        ],
                                        "minutes": [
                                            0
                                        ]
                                    }
                                }
                            },
                            {
                                "name": "{\"name\":\"Auto created default scale condition\",\"for\":\"Weekend profile\"}",
                                "capacity": {
                                   ...
                                },
                                "recurrence": {
                                    "frequency": "Week",
                                    "schedule": {
                                        "timeZone": "E. Europe     Standard Time",
                                        "days": [
                                            "Saturday",
                                            "Sunday"
                                        ],
                                        "hours": [
                                            19
                                        ],
                                        "minutes": [
                                            0
                                        ]
                                    }
                                },
                                "rules": [   
                                  ...
                                ]
                            }
                        ],
                        "notifications": [],
                        "targetResourceLocation": "eastus"
                    }
    
                }
            ]
                }
    
    

Оценка автомасштабирования

Параметры автомасштабирования могут иметь несколько профилей. Каждый профиль может иметь несколько правил. При каждом запуске задания автомасштабирования она начинается с выбора соответствующего профиля для указанного времени. Затем автомасштабирование оценивает минимальные и максимальные значения, все правила метрик в профиле и решает, требуется ли действие масштабирования. Задание автомасштабирования выполняется каждые 30–60 секунд в зависимости от типа ресурса. После выполнения действия масштабирования задание автомасштабирования ожидает окончания периода охлаждения перед повторным масштабированием. Период охлаждения применяется как к действиям горизонтального масштабирования, так и к действиям по снижению масштаба.

Какой профиль будет использовать автомасштабирование?

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

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

Используется первый найденный подходящий профиль.

Как автомасштабирование оценивает несколько правил?

После того, как автомасштабирование определит, какой профиль следует запустить, он оценивает правила масштабирования на увеличение в профиле, то есть когда направление = "Увеличить". Если активируется одно или несколько правил горизонтального масштабирования, автомасштабирование вычисляет новую емкость, определяемую действиемМасштабирования, указанным для каждого из правил. Если активируется несколько правил горизонтального масштабирования, автомасштабирование увеличивается до максимально указанной емкости, чтобы обеспечить доступность службы.

Например, предположим, что существует два правила: правило 1 указывает горизонтальное масштабирование на три экземпляра, а правило 2 задает горизонтальное масштабирование на пять. Если оба правила активируются, автомасштабирование масштабируется на пять экземпляров. Аналогичным образом, если одно правило указывает горизонтальное масштабирование на три экземпляра, а другое правило задает горизонтальное масштабирование на 15%, то используется большее число двух экземпляров.

Если правила масштабирования вширь не активируются, автоматическое масштабирование проверяет применимость правил масштабирования, то есть правил с направлением = "Уменьшить". Автомасштабирование масштабируется только в том случае, если активируются все правила масштабирования.

Механизм автомасштабирования вычисляет новое значение емкости, определенное с помощью параметра scaleAction в каждом из этих правил. Чтобы обеспечить доступность службы, автомасштабирование сокращает размеры настолько минимально, насколько это возможно, чтобы достичь максимально указанной вместимости. Например, предположим, что существуют два правила масштабирования: одно сокращает емкость до 50 %, а другое — на три инстанции. Если первое правило приводит к пяти экземплярам, а второе правило - к семи, автомасштабирование сжимается до семи экземпляров.

Каждый раз, когда автогоризонтальное масштабирование рассчитывает результат действия уменьшения масштаба, он оценивает, приведет ли данное действие к увеличению масштаба. Сценарий, в котором масштабируемое действие запускает противоположное масштабируемое действие, называется нестабильностью. Автоматическое масштабирование может отложить действие уменьшения масштаба, чтобы избежать колебаний, или масштабироваться на величину меньше, чем указано в правиле. Дополнительные сведения о флаппинге см. в разделе «Flapping» в автомасштабировании.

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

Подробнее об автомасштабировании: