Usar o dimensionamento automático preditivo para escala horizontal antes das demandas de carga em conjuntos de dimensionamento de máquinas virtuais

O dimensionamento automático preditivo usa o machine learning para ajudar a gerenciar e escalar conjuntos de dimensionamento de máquinas virtuais do Azure com padrões de carga de trabalho cíclicas. Ele prevê a carga geral da CPU para o conjunto de dimensionamento de máquinas virtuais, com base nos padrões de uso histórico da CPU. Ele prevê a carga geral da CPU observando e aprendendo com o uso histórico. Esse processo garante que o dimensionamento ocorra a tempo de atender à demanda.

O dimensionamento automático preditivo precisa de um mínimo de sete dias de histórico para fornecer previsões. Os resultados mais precisos vêm de 15 dias de dados históricos.

O dimensionamento automático preditivo segue os limites de dimensionamento definidos para o conjunto de dimensionamento de máquinas virtuais. Quando o sistema previr que a carga de percentual de CPU do conjunto de dimensionamento de máquinas virtuais cruzará o limite de expansão, novas instâncias serão adicionadas de acordo com suas especificações. Você também pode configurar o quão longe você deseja que novas instâncias sejam provisionadas, até 1 hora antes do pico de carga de trabalho previsto ocorrer.

A opção Somente previsão permite que você veja a previsão de CPU prevista sem disparar a ação de dimensionamento com base na previsão. Em seguida, você pode comparar a previsão com os padrões de carga de trabalho reais para desenvolver confiança nos modelos de previsão antes de habilitar o recurso de dimensionamento automático preditivo.

Ofertas de dimensionamento automático preditivo

  • O dimensionamento automático preditivo é apenas para cargas de trabalho que apresentam padrões de uso de CPU cíclicos.
  • O suporte só está disponível para conjuntos de dimensionamento de máquinas virtuais.
  • A métrica Percentual de CPU com o tipo de agregação Média é a única métrica com suporte no momento.
  • O dimensionamento automático preditivo dá suporte apenas à expansão. Configure o dimensionamento automático padrão para gerenciar a escala em ações.
  • O dimensionamento automático preditivo só está disponível para a nuvem comercial do Azure. No momento, não há suporte para nuvens do Microsoft Azure Governamental.

Habilitar o dimensionamento automático preditivo ou o modo somente previsão com o portal do Azure

  1. Acesse a tela do Conjunto de dimensionamento de máquinas virtuais e selecione Escala.

    Captura de tela que mostra a seleção de Escala no menu esquerdo no portal do Azure.

  2. Na seção Dimensionamento automático personalizado, Dimensionamento automático preditivo é exibido.

    Captura de tela que mostra a seleção de dimensionamento automático personalizado e a opção de dimensionamento automático no portal do Azure.

    Usando a seleção suspensa, você pode:

    • Desabilitar o dimensionamento automático preditivo. Desabilitar é a seleção padrão quando você acessa pela primeira vez a página de dimensionamento automático preditivo.
    • Habilitar o modo somente previsão.
    • Habilitar o dimensionamento automático preditivo.

    Observação

    Para habilitar o dimensionamento automático preditivo ou o modo somente previsão, configure as condições do dimensionamento automático reativo padrão.

  3. Para habilitar o modo somente previsão, selecione-o na lista suspensa. Defina um gatilho de expansão com base na porcentagem da CPU. Em seguida, selecione Salvar. O mesmo processo se aplica para habilitação do dimensionamento automático preditivo. Para desabilitar o dimensionamento automático preditivo ou o modo somente previsão, selecione Desabilitar na lista suspensa.

    Captura de tela que mostra a habilitação do modo somente previsão.

  4. Se desejado, especifique uma hora de pré-lançamento para que as instâncias estejam totalmente em execução antes de serem necessárias. Você pode pré-inicializar instâncias entre 5 e 60 minutos antes do tempo de previsão necessário.

    Captura de tela que mostra a configuração de pré-lançamento de dimensionamento automático preditivo.

  5. Depois de habilitar o dimensionamento automático preditivo ou o modo somente previsão e salvá-lo, selecione Gráficos preditivos.

    Captura de tela que mostra a seleção da opção Preditivo do menu de gráficos.

  6. Você verá três gráficos:

    Captura de tela que mostra configuração três gráficos de dimensionamento automático preditivo.

    • O gráfico superior mostra uma comparação sobreposta entre o percentual total de CPU real e o previsto. O período de tempo do grafo mostrado é dos últimos sete dias até as próximas 24 horas.
    • O gráfico do meio mostra o número máximo de instâncias em execução nos últimos 7 dias.
    • O gráfico inferior mostra a utilização média da CPU atual nos últimos 7 dias.

Usando um modelo do Azure Resource Manager

  1. Recupere a ID do recurso e o grupo de recursos do conjunto de dimensionamento de máquinas virtuais. Por exemplo: /subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/patest2/providers/Microsoft.Compute/virtualMachineScaleSets/patest2

  2. Atualize o arquivo autoscale_only_parameters com a ID do recurso do conjunto de dimensionamento de máquinas virtuais e com os parâmetros de configuração de dimensionamento automático.

  3. Use um comando do PowerShell para implantar o modelo que contém as configurações de dimensionamento automático. Por exemplo:

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"
		}
	}
}

Para obter mais informações sobre os modelos do Azure Resource Manager, confira Visão geral do modelo do Resource Manager.

Perguntas frequentes

Esta seção responde às perguntas frequentes.

Por que o percentual da CPU é superior a 100% nos gráficos preditivos?

O gráfico preditivo mostra a carga cumulativa para todos os computadores no conjunto de dimensionamento. Se você tiver 5 VMs em um conjunto de dimensionamento, a carga cumulativa máxima para todas as VMs será de 500%, ou seja, cinco vezes a carga máxima de 100% de CPU de cada VM.

O que acontece com o tempo quando você ativa o dimensionamento automático preditivo em um conjunto de dimensionamento de máquinas virtuais?

O dimensionamento automático preditivo usa o histórico de um conjunto de dimensionamento de máquinas virtuais em execução. Se o conjunto de dimensionamento for executado há menos de sete dias, você receberá uma mensagem informando que o modelo está sendo treinado. Para obter mais informações, consulte a mensagem de dados sem previsão. As previsões são aprimoradas com o tempo, e atingem a precisão máxima de 15 dias após a criação do conjunto de dimensionamento de máquinas virtuais.

Se as alterações no padrão de carga de trabalho ocorrerem (mas permanecerem periódicas), o modelo reconhecerá a alteração e começará a ajustar a previsão. A previsão é aprimorada com o tempo. A precisão máxima é atingida 15 dias após a alteração no padrão de tráfego. Lembre-se de que as regras de dimensionamento automático padrão ainda se aplicam. Se um novo aumento não previsto no tráfego ocorrer, o conjunto de dimensionamento de máquinas virtuais ainda será aumentado para atender à demanda.

E se o modelo não estiver funcionando bem para mim?

A modelagem funciona melhor com cargas de trabalho que exibem periodicidade. Recomendamos que você avalie primeiro as previsões habilitando o modo "somente previsão", que vai sobrepor o uso previsto da CPU do conjunto de dimensionamento com o uso real observado. Depois de comparar e avaliar os resultados, você pode optar por habilitar o dimensionamento com base nas métricas previstas se as previsões do modelo estiverem próximas o suficiente do seu cenário.

Por que preciso habilitar o dimensionamento automático padrão antes de habilitar o dimensionamento automático preditivo?

O dimensionamento automático padrão será um fallback necessário se o modelo preditivo não funcionar bem no seu cenário. O dimensionamento automático padrão abordará picos de carga inesperados que não fazem parte do padrão de carga de CPU típico. Ele também fornecerá um fallback se ocorrer um erro na recuperação dos dados preditivos.

Qual regra entrará em vigor se as regras de dimensionamento automático padrão e preditivas forem definidas?

As regras de dimensionamento automático padrão são usadas se houver um pico inesperado na carga da CPU ou ocorrer um erro ao recuperar dados preditivos

Usamos o limite definido nas regras de dimensionamento automático padrão para entender quando você deseja escalar horizontalmente e por quantas instâncias. Se você quiser que seu Conjunto de Dimensionamento de Máquinas Virtuais seja expandido quando o uso da CPU exceder 70% e os dados reais ou previstos mostrarem que o uso da CPU é ou será superior a 70%, ocorrerá uma expansão.

Erros e avisos

Esta seção aborda erros e avisos comuns.

O dimensionamento automático padrão não foi habilitado

Você vê a seguinte mensagem de erro:

Para habilitar o dimensionamento automático preditivo, crie uma regra de escala horizontal com base na métrica 'Porcentagem da CPU'. Clique aqui para ir para a guia 'Configurar' para definir uma regra de dimensionamento automático.

Captura de tela que mostra  que o dimensionamento automático preditivo da mensagem de erro é baseado na métrica de percentual de CPU do recurso atual.

Essa mensagem significa que você tentou habilitar o dimensionamento automático preditivo antes de habilitar o dimensionamento automático padrão e configurou-o para usar a métrica Percentual de CPU com o tipo de agregação Média.

Sem dados preditivos

Você não verá nenhum dado nos gráficos preditivos em determinadas condições. Esse comportamento não é um erro; é o comportamento pretendido.

Quando o dimensionamento automático preditivo está desabilitado, você recebe uma mensagem que começa com "Não há dados para exibição…" Você, então, vê instruções sobre o que habilitar para que você possa ver um gráfico preditivo.

Captura de tela que mostra a mensagem Não há dados para exibição.

Ao criar um conjunto de dimensionamento de máquinas virtuais e habilitar o modo somente previsão, você receberá a mensagem "Os dados preditivos estão sendo treinados…" e um tempo de retorno para visualização do gráfico.

Captura de tela que mostra que os dados preditivos da mensagem estão sendo treinados.

Próximas etapas

Para saber mais sobre o dimensionamento automático, consulte os seguintes artigos: