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


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

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

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

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

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

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

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

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

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

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

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

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

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

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

    Примечание.

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

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

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

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

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

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

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

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

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

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

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

  1. Получите идентификатор ресурса и группу ресурсов вашего масштабируемого набора виртуальных машин. Например: /subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/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 %, то произойдет горизонтальное масштабирование.

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

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

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

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

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

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

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

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

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

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

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

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

Снимок экрана, показывающий сообщение:

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

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