Использование прогнозного автомасштабирования для горизонтального масштабирования перед загрузкой в масштабируемых наборах виртуальных машин

Прогнозное автомасштабирование использует машинное обучение для администрирования и масштабирования Масштабируемых наборов виртуальных машин Azure с шаблонами циклической рабочей нагрузки. Эта функция прогнозирует общую загрузку ЦП для вашего масштабируемого набора виртуальных машин на основе ваших моделей использования ЦП за прошлые периоды. Она прогнозирует общую загрузку ЦП, отслеживая и учитывая историю использования. Этот процесс обеспечивает своевременное горизонтальное увеличение масштаба для удовлетворения спроса.

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

Прогнозное автомасштабирование соответствует границам масштабирования, которые вы установили для масштабируемого набора виртуальных машин. Когда система спрогнозирует, что загрузка ЦП вашего масштабируемого набора виртуальных машин превысит границу горизонтального увеличения масштаба, новые экземпляры будут добавлены в соответствии с вашими спецификациями. Вы также можете настроить, насколько заранее необходимо подготовить новые экземпляры до 1 часа до прогнозируемого всплеска рабочей нагрузки.

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

Предложения прогнозного автомасштабирования

  • Прогнозное автомасштабирование предназначено для рабочих нагрузок с циклическими колебаниями загрузки ЦП.
  • Поддержка доступна только для масштабируемых наборов виртуальных машин.
  • В настоящее время поддерживается только одна метрика: Загрузка ЦП с типом агрегирования Среднее.
  • Прогнозное автомасштабирование поддерживает только горизонтальное увеличение масштаба. Настройте стандартное автомасштабирование для управления масштабированием в действиях.
  • Прогнозное автомасштабирование доступно только для коммерческого облака Azure. Azure для государственных организаций облака в настоящее время не поддерживаются.

Включение прогнозного автомасштабирования или только прогнозирования с помощью портала Azure

  1. Перейдите на экран Масштабируемый набор виртуальных машин и выберите Масштабирование.

    Снимок экрана: выбор элемента

  2. В разделе Пользовательское автомасштабирование появляется элемент Прогнозное автомасштабирование.

    Снимок экрана: выбор элементов

    С помощью раскрывающегося списка можно сделать следующее:

    • Отключить прогнозное автомасштабирование. Это вариант по умолчанию, когда вы впервые открываете страницу для прогнозного автомасштабирования.
    • Включить только прогнозирование.
    • Включить прогнозное автомасштабирование.

    Примечание.

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

  3. Чтобы включить только прогнозирование, выберите этот вариант в раскрывающемся списке. Определите триггер горизонтального масштабирования на основе процента ЦП. Затем выберите Сохранить. Этот же процесс применяется для включения прогнозного автомасштабирования. Чтобы отключить прогнозное автомасштабирование или только прогнозирование, выберите Отключить в раскрывающемся списке.

    Снимок экрана: включение режима только прогнозирования.

  4. При необходимости укажите время предварительного запуска, чтобы экземпляры были полностью запущены до их необходимости. Экземпляры можно предварительно запустить в диапазоне от 5 до 60 минут до необходимого времени прогнозирования.

    Снимок экрана, на котором показана предварительная настройка прогнозного автомасштабирования.

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

    Снимок экрана: выбор параметра меню

  6. Вы увидите три диаграммы:

    Снимок экрана: три диаграммы для прогнозного автомасштабирования.

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

Включение с помощью шаблона Azure Resource Manager

  1. Получите идентификатор ресурса и группу ресурсов масштабируемого набора виртуальных машин. Например: /subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-ee4e4e4e4e4e/resourceGroups/patest2/providers/Microsoft.Compute/virtualMachineScaleSets/patest2

  2. Обновите файл autoscale_only_parameters, указав идентификатор ресурса масштабируемого набора виртуальных машин и любые параметры автомасштабирования.

  3. Используйте команду 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 %, то будет выполняться горизонтальное масштабирование.

Ошибки и предупреждения

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

Не включено стандартное автомасштабирование

Отображается следующее сообщение об ошибке:

Чтобы включить прогнозное автомасштабирование, создайте правило горизонтального масштабирования на основе метрик "Процент ЦП". Щелкните здесь, чтобы перейти на вкладку "Настройка", чтобы задать правило автомасштабирования.

Снимок экрана: сообщение об ошибке, указывающее, что прогнозное автомасштабирование основано на метрике процента загрузки ЦП текущего ресурса.

Это сообщение означает, что вы попытались включить прогнозное автомасштабирование до того, как включили стандартное автомасштабирование, и настроили его для использования метрики Загрузка ЦП с типом агрегации Среднее.

Нет прогнозных данных

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

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

Снимок экрана: сообщение об отсутствии данных для отображения.

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

Снимок экрана: сообщение об обучении прогнозных данных.

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

Дополнительные сведения об автомасштабировании см. в следующих статьях: