Использование прогнозного автомасштабирования для горизонтального масштабирования перед загрузкой в масштабируемых наборах виртуальных машин
Прогнозное автомасштабирование использует машинное обучение для администрирования и масштабирования Масштабируемых наборов виртуальных машин Azure с шаблонами циклической рабочей нагрузки. Эта функция прогнозирует общую загрузку ЦП для вашего масштабируемого набора виртуальных машин на основе ваших моделей использования ЦП за прошлые периоды. Она прогнозирует общую загрузку ЦП, отслеживая и учитывая историю использования. Этот процесс обеспечивает своевременное горизонтальное увеличение масштаба для удовлетворения спроса.
Для прогнозирования автомасштабирования требуется не менее семи дней истории для предоставления прогнозов. Наиболее точные результаты обеспечивают 15 дней исторических данных.
Прогнозное автомасштабирование соответствует границам масштабирования, которые вы установили для масштабируемого набора виртуальных машин. Когда система спрогнозирует, что загрузка ЦП вашего масштабируемого набора виртуальных машин превысит границу горизонтального увеличения масштаба, новые экземпляры будут добавлены в соответствии с вашими спецификациями. Вы также можете настроить, насколько заранее необходимо подготовить новые экземпляры до 1 часа до прогнозируемого всплеска рабочей нагрузки.
Только прогноз позволяет просматривать прогноз загрузки ЦП без активации действия масштабирования на основе прогноза. Затем вы можете сравнить прогноз с вашими фактическими моделями рабочей нагрузки, чтобы повысить уверенность в моделях прогнозирования, прежде чем включать функцию прогнозного автомасштабирования.
Предложения прогнозного автомасштабирования
- Прогнозное автомасштабирование предназначено для рабочих нагрузок с циклическими колебаниями загрузки ЦП.
- Поддержка доступна только для масштабируемых наборов виртуальных машин.
- В настоящее время поддерживается только одна метрика: Загрузка ЦП с типом агрегирования Среднее.
- Прогнозное автомасштабирование поддерживает только горизонтальное увеличение масштаба. Настройте стандартное автомасштабирование для управления масштабированием в действиях.
- Прогнозное автомасштабирование доступно только для коммерческого облака Azure. Azure для государственных организаций облака в настоящее время не поддерживаются.
Включение прогнозного автомасштабирования или только прогнозирования с помощью портала Azure
Перейдите на экран Масштабируемый набор виртуальных машин и выберите Масштабирование.
В разделе Пользовательское автомасштабирование появляется элемент Прогнозное автомасштабирование.
С помощью раскрывающегося списка можно сделать следующее:
- Отключить прогнозное автомасштабирование. Это вариант по умолчанию, когда вы впервые открываете страницу для прогнозного автомасштабирования.
- Включить только прогнозирование.
- Включить прогнозное автомасштабирование.
Примечание.
Прежде чем вы сможете включить прогнозное автомасштабирование или только прогнозирование, необходимо настроить стандартные условия реактивного автомасштабирования.
Чтобы включить только прогнозирование, выберите этот вариант в раскрывающемся списке. Определите триггер горизонтального масштабирования на основе процента ЦП. Затем выберите Сохранить. Этот же процесс применяется для включения прогнозного автомасштабирования. Чтобы отключить прогнозное автомасштабирование или только прогнозирование, выберите Отключить в раскрывающемся списке.
При необходимости укажите время предварительного запуска, чтобы экземпляры были полностью запущены до их необходимости. Экземпляры можно предварительно запустить в диапазоне от 5 до 60 минут до необходимого времени прогнозирования.
Когда вы включили прогнозное автомасштабирование или режим только прогнозирования и сохранили свой выбор, выберите Прогнозирующие диаграммы.
Вы увидите три диаграммы:
- На верхней диаграмме показано наложенное сравнение фактической и прогнозной общей загрузки ЦП. Интервал времени показанного графика — от последних семи дней до ближайших 24 часов.
- На средней диаграмме отображается максимальное количество экземпляров, выполняющихся за последние семь дней.
- На нижней диаграмме показана текущая средняя загрузка ЦП за последние семь дней.
Включение с помощью шаблона Azure Resource Manager
Получите идентификатор ресурса и группу ресурсов масштабируемого набора виртуальных машин. Например: /subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-ee4e4e4e4e4e/resourceGroups/patest2/providers/Microsoft.Compute/virtualMachineScaleSets/patest2
Обновите файл autoscale_only_parameters, указав идентификатор ресурса масштабируемого набора виртуальных машин и любые параметры автомасштабирования.
Используйте команду PowerShell для развертывания шаблона, содержащего параметры автомасштабирования. Например:
PS G:\works\kusto_onboard\test_arm_template> new-azurermresourcegroupdeployment -name binzAutoScaleDeploy -resourcegroupname cpatest2 -templatefile autoscale_only.json -templateparameterfile autoscale_only_parameters.json
PS C:\works\autoscale\predictive_autoscale\arm_template> new-azurermresourcegroupdeployment -name binzAutoScaleDeploy - resourcegroupname patest2 -templatefile autoscale_only_binz.json -templateparameterfile autoscale_only_parameters_binz.json
DeploymentName : binzAutoScaleDeploy
ResourceGroupName : patest2
ProvisioningState : Succeeded
Timestamp : 3/30/2021 10:11:02 PM
Mode : Incremental
TemplateLink
Parameters :
Name Type Value
================ ============================= ====================
targetVmssResourceld String /subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/patest2/providers/Microsoft.Compute/virtualMachineScaleSets/patest2
location String East US
minimumCapacity Int 1
maximumCapacity Int 4
defaultCapacity Int 4
metricThresholdToScaleOut Int 50
metricTimeWindowForScaleOut String PT5M
metricThresholdToScaleln Int 30
metricTimeWindowForScaleln String PT5M
changeCountScaleOut Int 1
changeCountScaleln Int 1
predictiveAutoscaleMode String Enabled
Outputs :
Name Type Value
================ ============================== ====================
targetVmssResourceld String /subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/patest2/providers/Microsoft.Compute/virtualMachineScaleSets/patest2
settingLocation String East US
predictiveAutoscaleMode String Enabled
DeloymentDebugLoglevel :
PS C:\works\autoscale\predictive_autoscale\arm_template>
autoscale_only.json
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"targetVmssResourceId": {
"type": "string"
},
"location": {
"type": "string"
},
"minimumCapacity": {
"type": "Int",
"defaultValue": 2,
"metadata": {
"description": "The minimum capacity. Autoscale engine will ensure the instance count is at least this value."
}
},
"maximumCapacity": {
"type": "Int",
"defaultValue": 5,
"metadata": {
"description": "The maximum capacity. Autoscale engine will ensure the instance count is not greater than this value."
}
},
"defaultCapacity": {
"type": "Int",
"defaultValue": 3,
"metadata": {
"description": "The default capacity. Autoscale engine will preventively set the instance count to be this value if it can not find any metric data."
}
},
"metricThresholdToScaleOut": {
"type": "Int",
"defaultValue": 30,
"metadata": {
"description": "The metric upper threshold. If the metric value is above this threshold then autoscale engine will initiate scale out action."
}
},
"metricTimeWindowForScaleOut": {
"type": "string",
"defaultValue": "PT5M",
"metadata": {
"description": "The metric look up time window."
}
},
"metricThresholdToScaleIn": {
"type": "Int",
"defaultValue": 20,
"metadata": {
"description": "The metric lower threshold. If the metric value is below this threshold then autoscale engine will initiate scale in action."
}
},
"metricTimeWindowForScaleIn": {
"type": "string",
"defaultValue": "PT5M",
"metadata": {
"description": "The metric look up time window."
}
},
"changeCountScaleOut": {
"type": "Int",
"defaultValue": 1,
"metadata": {
"description": "The instance count to increase when autoscale engine is initiating scale out action."
}
},
"changeCountScaleIn": {
"type": "Int",
"defaultValue": 1,
"metadata": {
"description": "The instance count to decrease the instance count when autoscale engine is initiating scale in action."
}
},
"predictiveAutoscaleMode": {
"type": "String",
"defaultValue": "ForecastOnly",
"metadata": {
"description": "The predictive Autoscale mode."
}
}
},
"variables": {
},
"resources": [{
"type": "Microsoft.Insights/autoscalesettings",
"name": "cpuPredictiveAutoscale",
"apiVersion": "2022-10-01",
"location": "[parameters('location')]",
"properties": {
"profiles": [{
"name": "DefaultAutoscaleProfile",
"capacity": {
"minimum": "[parameters('minimumCapacity')]",
"maximum": "[parameters('maximumCapacity')]",
"default": "[parameters('defaultCapacity')]"
},
"rules": [{
"metricTrigger": {
"metricName": "Percentage CPU",
"metricNamespace": "",
"metricResourceUri": "[parameters('targetVmssResourceId')]",
"timeGrain": "PT1M",
"statistic": "Average",
"timeWindow": "[parameters('metricTimeWindowForScaleOut')]",
"timeAggregation": "Average",
"operator": "GreaterThan",
"threshold": "[parameters('metricThresholdToScaleOut')]"
},
"scaleAction": {
"direction": "Increase",
"type": "ChangeCount",
"value": "[parameters('changeCountScaleOut')]",
"cooldown": "PT5M"
}
}, {
"metricTrigger": {
"metricName": "Percentage CPU",
"metricNamespace": "",
"metricResourceUri": "[parameters('targetVmssResourceId')]",
"timeGrain": "PT1M",
"statistic": "Average",
"timeWindow": "[parameters('metricTimeWindowForScaleIn')]",
"timeAggregation": "Average",
"operator": "LessThan",
"threshold": "[parameters('metricThresholdToScaleIn')]"
},
"scaleAction": {
"direction": "Decrease",
"type": "ChangeCount",
"value": "[parameters('changeCountScaleOut')]",
"cooldown": "PT5M"
}
}
]
}
],
"enabled": true,
"targetResourceUri": "[parameters('targetVmssResourceId')]",
"predictiveAutoscalePolicy": {
"scaleMode": "[parameters('predictiveAutoscaleMode')]"
}
}
}
],
"outputs": {
"targetVmssResourceId" : {
"type" : "string",
"value" : "[parameters('targetVmssResourceId')]"
},
"settingLocation" : {
"type" : "string",
"value" : "[parameters('location')]"
},
"predictiveAutoscaleMode" : {
"type" : "string",
"value" : "[parameters('predictiveAutoscaleMode')]"
}
}
}
autoscale_only_parameters.json
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"targetVmssResourceId": {
"value": "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/patest2/providers/Microsoft.Compute/virtualMachineScaleSets/patest2"
},
"location": {
"value": "East US"
},
"minimumCapacity": {
"value": 1
},
"maximumCapacity": {
"value": 4
},
"defaultCapacity": {
"value": 4
},
"metricThresholdToScaleOut": {
"value": 50
},
"metricTimeWindowForScaleOut": {
"value": "PT5M"
},
"metricThresholdToScaleIn": {
"value": 30
},
"metricTimeWindowForScaleIn": {
"value": "PT5M"
},
"changeCountScaleOut": {
"value": 1
},
"changeCountScaleIn": {
"value": 1
},
"predictiveAutoscaleMode": {
"value": "Enabled"
}
}
}
Дополнительные сведения см. в статье Описание шаблонов Azure Resource Manager.
Часто задаваемые вопросы
В этом разделе приведены ответы на часто задаваемые вопросы.
Почему процент ЦП превышает 100% на прогнозных диаграммах?
На прогнозной диаграмме показана совокупная нагрузка для всех компьютеров в масштабируемом наборе. Если в масштабируемом наборе имеется 5 виртуальных машин, максимальная совокупная нагрузка для всех виртуальных машин составит 500%, т. е. в пять раз больше 100% максимальной загрузки ЦП каждой виртуальной машины.
Что происходит со временем, когда вы включаете прогнозное автомасштабирование для масштабируемого набора виртуальных машин?
Автомасштабирование с прогнозированием использует историю работающего масштабируемого набора виртуальных машин. Если масштабируемый набор выполняется менее семи дней, вы получите сообщение об обученной модели. Дополнительные сведения см. в разделе об отсутствии прогнозных данных. Со временем прогнозы улучшаются, достигая максимальной точности через 15 дней после создания масштабируемого набора виртуальных машин.
Если происходят изменения в шаблоне рабочей нагрузки (но остаются периодическими), модель распознает изменение и начинает соответствующим образом корректировать прогноз. Прогноз со временем улучшается. Максимальная точность достигается через 15 дней после изменения схемы трафика. Помните, что стандартные правила автомасштабирования по-прежнему применяются. Если произойдет новое непредвиденное увеличение объемов трафика, ваш масштабируемый набор виртуальных машин все равно будет масштабироваться для удовлетворения спроса.
Что делать, если модель мне не подходит?
Моделирование лучше всего работает с рабочими нагрузками, которые демонстрируют периодичность. Мы рекомендуем сначала оценить прогнозы, выбрав вариант только прогнозирования, что позволяет наложить прогнозное использование ЦП масштабируемым набором на фактическое наблюдаемое использование. После сравнения и оценки результатов вы можете включить масштабирование на основе прогнозных показателей, если прогнозы модели достаточно близки для вашего сценария.
Почему нужно включить стандартное автомасштабирование перед включением прогнозного автомасштабирования?
Стандартное автомасштабирование — это необходимый запасной вариант, если прогнозная модель не подходит для вашего сценария. Стандартное автомасштабирование охватит неожиданные скачки нагрузки, которые не являются частью вашей типичной схемы загрузки ЦП. Это также будет запасным вариантом на случай возникновения ошибки при получении прогнозных данных.
Какое правило действует, если заданы как прогнозные, так и стандартные правила автомасштабирования?
Стандартные правила автомасштабирования используются при неожиданном всплеске загрузки ЦП или при получении прогнозных данных
Мы используем пороговое значение, заданное в стандартных правилах автомасштабирования, чтобы понять, когда вы хотите горизонтально увеличить масштаб и сколько вам требуется экземпляров. Если вы хотите масштабировать масштабируемый набор виртуальных машин, если загрузка ЦП превышает 70 %, а фактические или прогнозируемые данные показывают, что использование ЦП или будет превышать 70 %, то будет выполняться горизонтальное масштабирование.
Ошибки и предупреждения
В этом разделе рассматриваются распространенные ошибки и предупреждения.
Не включено стандартное автомасштабирование
Отображается следующее сообщение об ошибке:
Чтобы включить прогнозное автомасштабирование, создайте правило горизонтального масштабирования на основе метрик "Процент ЦП". Щелкните здесь, чтобы перейти на вкладку "Настройка", чтобы задать правило автомасштабирования.
Это сообщение означает, что вы попытались включить прогнозное автомасштабирование до того, как включили стандартное автомасштабирование, и настроили его для использования метрики Загрузка ЦП с типом агрегации Среднее.
Нет прогнозных данных
Вы не увидите данные на прогнозных диаграммах при определенных условиях. Это не ошибка, а ожидаемое поведение.
Когда прогнозное автомасштабирование отключено, вы получите сообщение, указывающее на отсутствие данных для отображения, а также инструкции о том, что нужно включить, чтобы вы могли видеть прогнозную диаграмму.
Когда вы впервые создаете масштабируемый набор виртуальных машин и включаете только прогнозирование, вы получите сообщение о том, что прогнозные данные обучаются, с указанием времени, через которое можно будет просмотреть диаграмму.
Следующие шаги
Дополнительные сведения об автомасштабировании см. в следующих статьях:
- Обзор автомасштабирования
- Общие метрики автомасштабирования Azure Monitor
- Рекомендации по автомасштабированию в Azure Monitor
- Использование действий автомасштабирования для отправки электронной почты и уведомлений об оповещениях веб-перехватчика в Azure Insights
- Create or update an autoscale setting in Azure Insights REST API (Создание и изменение параметров автомасштабирования в REST API Azure Insights)