Основные сведения о параметрах автомасштабирования
С помощью параметров автомасштабирования можно настроить объем ресурсов, необходимый для управления колеблющейся нагрузкой приложения. Параметры автомасштабирования можно настроить для активации на основе метрик, указывающих на нагрузку или производительность, или активировать в запланированной дате и времени.
В этой статье описываются параметры автомасштабирования.
Схема настройки автомасштабирования
В следующем примере показан параметр автомасштабирования с этими атрибутами:
- Один профиль по умолчанию.
- Два правила метрик в этом профиле: один для горизонтального масштабирования и один для масштабирования.
- Правило горизонтального масштабирования активируется, когда средняя процентная метрика ЦП масштабируемого набора виртуальных машин превышает 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
},
"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
},
"scaleAction": {
"direction": "Decrease",
"type": "ChangeCount",
"value": "1",
"cooldown": "PT5M"
}
}
]
}
]
}
}
В следующей таблице описываются элементы в приведенном выше параметре автомасштабирования JSON.
Section | Имя элемента | Имя портала | Description |
---|---|---|---|
Параметр | Идентификатор | Идентификатор ресурса параметра автомасштабирования. Параметры автомасштабирования относятся к ресурсам Azure Resource Manager. | |
Параметр | name | Имя параметра автомасштабирования. | |
Параметр | расположение | Расположение параметра автомасштабирования. Оно может отличаться от расположения масштабируемого ресурса. | |
свойства | targetResourceUri | Идентификатор масштабируемого ресурса. Для каждого ресурса можно задать только один параметр автомасштабирования. | |
свойства | профили | Условие масштабирования | Параметр автомасштабирования состоит из одного или нескольких профилей. Каждый раз, когда модуль автомасштабирования запускается, он выполняет один профиль. Настройте до 20 профилей на параметр автомасштабирования. |
профили | name | Имя профиля. Для него можно указать любое имя, позволяющее отличить профиль от других. | |
профили | capacity.maximum | Ограничения экземпляра — максимальное значение | Максимальный разрешенный объем. Это гарантирует, что автомасштабирование не масштабирует ресурс выше этого числа при выполнении профиля. |
профили | capacity.minimum | Ограничения экземпляра — минимальное значение | Минимальный разрешенный объем. Это гарантирует, что автомасштабирование не масштабирует ресурс ниже этого числа при выполнении профиля. |
профили | capacity.default | Ограничения экземпляра — по умолчанию | Если есть проблема с чтением метрики ресурсов, а текущая емкость ниже по умолчанию, автомасштабирование масштабируется до значения по умолчанию. Это действие гарантирует доступность ресурса. Если текущая емкость уже выше емкости по умолчанию, автомасштабирование не масштабируется. |
профили | rules | Правила | Автоматическое масштабирование автоматически масштабируется между максимальными и минимальными емкостями с помощью правил в профиле. Определите до 10 отдельных правил в профиле. Обычно правила определяются в парах, для определения времени масштабирования и другого, чтобы определить, когда следует масштабироваться. |
для исходящего трафика | metricTrigger | Правило масштабирования | Определяет условие метрики для правила. |
metricTrigger | metricName | Имя метрики | Имя метрики. |
metricTrigger | metricResourceUri | Идентификатор ресурса, выдающего эту метрику. В большинстве случаев это то же самое, что и масштабируемый ресурс. Иногда имя и идентификатор отличаются. Например, когда нужно масштабировать набор виртуальных машин по количеству сообщений в очереди хранилища. | |
metricTrigger | timegrain | Интервал времени (в минутах) | Продолжительность выборки метрик. Например, timeGrain = "PT1M" означает, что метрики должны агрегироваться каждые 1 минуту с помощью метода агрегирования, указанного в элементе статистики. |
metricTrigger | statistic | Статистика интервала времени | Метод агрегирования, используемый в течение периода timeGrain. Например, статистика = "Среднее" и timeGrain = "PT1M" означает, что метрики должны быть агрегированы каждые 1 минуту, принимая среднее значение. Это свойство определяет порядок выборки метрики. |
metricTrigger | timeWindow | Duration | Время для ретроспективного поиска метрик. Например, timeWindow = "PT10M" означает, что при каждом запуске автомасштабирования он запрашивает метрики за последние 10 минут. Это позволяет нормализовать метрики и избежать реакций на переходные всплески. |
metricTrigger | timeAggregation | Агрегат времени | Метод агрегирования метрик выборки. Например, timeAggregation = "Average" должен агрегировать образцы метрик, принимая среднее значение. В предыдущем примере выполнены 10 выборок по 1 минуте, а затем определено их среднее значение. |
для исходящего трафика | scaleAction | Действие | Действие, выполняемое при активации параметра metricTrigger правила. |
scaleAction | direction | Операция | "Increase" — для горизонтального увеличения масштаба, а "Decrease" — для горизонтального уменьшения масштаба. |
scaleAction | значение | Число экземпляров | Емкость, до которой нужно увеличить или уменьшить ресурс. |
scaleAction | cooldown | Охлаждение (в минутах) | Время ожидания следующего масштабирования после аналогичной операции. Период охлаждения вступает в силу после события масштабирования или горизонтального масштабирования. Например, если cooldown = "PT10M", автомасштабирование не пытается снова масштабироваться еще на 10 минут. Свойство cooldown предназначено для стабилизации метрик после добавления или удаления экземпляров. |
Профили автомасштабирования
Определите до 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" } } ]
Профиль повторения: профиль повторения используется в течение дня или набора дней недели. Схема для повторяющегося профиля не включает дату окончания. Окончание даты и времени для повторяющегося профиля задается по времени начала следующего профиля. Когда портал используется для настройки повторяющихся профилей, профиль по умолчанию автоматически обновляется, чтобы начаться в конечное время, указанное для повторяющегося профиля. Дополнительные сведения о настройке нескольких профилей см. в разделе "Автомасштабирование с несколькими профилями"
В примере частичной схемы показан повторяющийся профиль. Он начинается в 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 секунд в зависимости от типа ресурса. После выполнения действия масштабирования задание автомасштабирования ожидает периода охлаждения до его повторного масштабирования. Период охлаждения применяется как к действиям горизонтального масштабирования, так и к горизонтальному масштабированию.
Какой профиль будет использовать автомасштабирование?
При каждом запуске службы автомасштабирования профили оцениваются в следующем порядке:
- Профили фиксированной даты
- Повторяющиеся профили
- Профиль по умолчанию
Используется первый подходящий профиль.
Как автомасштабирование оценивает несколько правил?
После автомасштабирования определяет, какой профиль следует запустить, он оценивает правила горизонтального масштабирования в профиле, то есть направление = "Увеличить". Если активируются один или несколько правил горизонтального масштабирования, автомасштабирование вычисляет новую емкость, определяемую масштабомAction , указанной для каждого из правил. Если активируется несколько правил горизонтального масштабирования, автомасштабирование масштабируется до наибольшей указанной емкости, чтобы обеспечить доступность службы.
Например, предположим, что существует два правила: правило 1 указывает горизонтальное масштабирование на три экземпляра, а правило 2 задает горизонтальное масштабирование на пять. Если оба правила активируются, автомасштабирование масштабируется на пять экземпляров. Аналогичным образом, если одно правило указывает горизонтальное масштабирование на три экземпляра, а другое правило задает горизонтальное масштабирование на 15%, то используется большее число двух экземпляров.
Если правила горизонтального масштабирования не активируются, автомасштабирование оценивает правила масштабирования, то есть правила с направлением = "Уменьшить". Автомасштабирование масштабируется только в том случае, если активируются все правила масштабирования.
Механизм автомасштабирования вычисляет новое значение емкости, определенное с помощью параметра scaleAction в каждом из этих правил. Чтобы обеспечить доступность службы, автомасштабирование масштабируется как можно меньше, чтобы обеспечить максимальную емкость, указанную. Например, предположим, что два правила масштабирования, один из них уменьшает емкость на 50 % и один из них уменьшает емкость на три экземпляра. Если первое правило приводит к пяти экземплярам, а второе правило приводит к семи, автомасштабирование масштабируется до семи экземпляров.
Каждый раз, когда автомасштабирование вычисляет результат действия масштабирования, он оценивает, активирует ли это действие горизонтальное масштабирование. Сценарий, в котором действие масштабирования активирует противоположное действие масштабирования, называется перехватом. Автоматическое масштабирование может отложить действие масштабирования, чтобы избежать скольжения или масштабирования на число меньше, чем указано в правиле. Дополнительные сведения о хлопах см. в разделе "Flapping" в автомасштабировании.
Следующие шаги
Дополнительные сведения об автомасштабировании:
- Обзор автомасштабирования
- Общие метрики автомасштабирования Azure Monitor
- Автомасштабирование с несколькими профилями
- Откат в автомасштабировании
- Использование действий автомасштабирования для отправки электронной почты и уведомлений об оповещениях веб-перехватчика в Azure Insights
- Create or update an autoscale setting in Azure Insights REST API (Создание и изменение параметров автомасштабирования в REST API Azure Insights)