Partilhar via


Use o dimensionamento automático preditivo para dimensionar antes das demandas de carga em conjuntos de dimensionamento de máquinas virtuais

O dimensionamento automático preditivo usa aprendizado de máquina para ajudar a gerenciar e dimensionar os Conjuntos de Dimensionamento de Máquina Virtual do Azure com padrões cíclicos de carga de trabalho. Ele prevê a carga geral da CPU para o conjunto de dimensionamento da máquina virtual, com base nos padrões históricos de uso da CPU. Ele prevê a carga geral da CPU observando e aprendendo com o uso histórico. Esse processo garante que o escalonamento ocorra a tempo de atender à demanda.

A escala automática preditiva precisa de um mínimo de sete dias de histórico para fornecer previsões. O período máximo de amostragem é uma janela móvel de 15 dias, o que proporciona os melhores resultados preditivos. Para padrões de carga de trabalho mensais ou anuais, use o dimensionamento automático baseado em programação ou configurações de dimensionamento automático baseadas em métricas.

O dimensionamento automático preditivo adere aos limites de dimensionamento definidos para o conjunto de dimensionamento da máquina virtual. Quando o sistema prevê que a porcentagem de carga da CPU do conjunto de dimensionamento da máquina virtual ultrapassará o limite de expansão, novas instâncias serão adicionadas de acordo com suas especificações. Você também pode configurar com quanto tempo de antecedência deseja que novas instâncias sejam provisionadas, até 1 hora antes do pico de carga de trabalho previsto ocorrer.

A previsão só permite que você visualize a previsão da CPU sem acionar a ação de dimensionamento com base na previsão. Em seguida, você pode comparar a previsão com seus padrões de carga de trabalho reais para criar 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 destina-se a cargas de trabalho que apresentam padrões cíclicos de utilização da CPU.
  • O suporte só está disponível para conjuntos de dimensionamento de máquinas virtuais.
  • A métrica Porcentagem de CPU com o tipo de agregação Média é a única métrica atualmente suportada.
  • O dimensionamento automático preditivo suporta apenas expansão. Configure o dimensionamento automático padrão para gerenciar o dimensionamento em ações.
  • O dimensionamento automático preditivo só está disponível para a nuvem comercial do Azure. As nuvens do Azure Government não são suportadas no momento.

Habilite o dimensionamento automático preditivo ou a previsão somente com o portal do Azure

  1. Vá para a tela Conjunto de dimensionamento de máquina virtual e selecione Dimensionamento.

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

  2. Na seção Escala automática personalizada, Dimensionamento automático preditivo é exibido.

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

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

    • Desative o dimensionamento automático preditivo. Desativar é a seleção padrão quando você acessa a página pela primeira vez para dimensionamento automático preditivo.
    • Habilite o modo somente previsão.
    • Habilite o dimensionamento automático preditivo.

    Nota

    Antes de habilitar o dimensionamento automático preditivo ou o modo somente previsão, você deve configurar as condições padrão de dimensionamento automático reativo.

  3. Para ativar o modo somente previsão, selecione-o na lista suspensa. Defina um gatilho de expansão com base em Porcentagem de CPU. Em seguida, selecione Guardar. O mesmo processo se aplica para habilitar o dimensionamento automático preditivo. Para desativar o dimensionamento automático preditivo ou o modo somente de previsão, selecione Desativar na lista suspensa.

    Captura de ecrã que mostra a ativação do modo apenas de previsão.

  4. Se desejar, especifique um tempo de pré-lançamento para que as instâncias estejam totalmente em execução antes de serem necessárias. Você pode pré-iniciar 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 escala automática preditiva.

  5. Depois de ativar 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 de menu Gráficos preditivos.

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

    Captura de tela que mostra três gráficos para dimensionamento automático preditivo.

    • O gráfico superior mostra uma comparação sobreposta da porcentagem de CPU real versus total prevista. O período de tempo do gráfico 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 sete dias.
    • O gráfico inferior mostra a utilização média atual da CPU nos últimos sete dias.

Habilitar usando um modelo do Azure Resource Manager

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

  2. Atualize o arquivo autoscale_only_parameters com o ID do recurso do conjunto de escala da máquina virtual e todos 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 modelos do Azure Resource Manager, consulte Visão geral do modelo do Resource Manager.

Perguntas mais frequentes

Esta secção responde a perguntas frequentes.

Por que a porcentagem de CPU é superior a 100% em gráficos preditivos?

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

O que acontece ao longo do tempo quando você ativa o dimensionamento automático preditivo para um conjunto de dimensionamento de máquina virtual?

A escala automática de previsão usa o histórico de um conjunto de dimensionamento de máquina virtual em execução. Se o conjunto de balanças estiver funcionando há menos de sete dias, você receberá uma mensagem informando que o modelo está sendo treinado. Para obter mais informações, consulte a mensagem sem dados preditivos. As previsões melhoram com o passar do tempo e atingem a precisão máxima 15 dias após a criação do conjunto de dimensionamento da máquina virtual.

Se ocorrerem alterações no padrão de carga de trabalho, mas permanecerem periódicas, o modelo reconhece a alteração e começa a ajustar a previsão. A previsão melhora com o passar do tempo. A precisão máxima é atingida 15 dias após a mudança no padrão de tráfego acontecer. Lembre-se de que suas regras padrão de dimensionamento automático ainda se aplicam. Se ocorrer um novo aumento imprevisto no tráfego, o conjunto de dimensionamento da máquina virtual ainda será dimensionado para atender à demanda.

E se o modelo não estiver a funcionar bem para mim?

A modelagem funciona melhor com cargas de trabalho que exibem periodicidade. Recomendamos que você primeiro avalie as previsões ativando "somente previsão", que sobreporá o uso previsto da CPU do conjunto de escala 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 para o 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 é um fallback necessário se o modelo preditivo não funcionar bem para o seu cenário. A escala automática padrão cobrirá picos de carga inesperados, que não fazem parte do seu padrão de carga de CPU típico. Ele também fornece um fallback se ocorrer um erro na recuperação dos dados preditivos.

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

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

Usamos o limite definido nas regras de dimensionamento automático padrão para entender quando você deseja expandir e por quantas instâncias. Se você quiser que seu Conjunto de Dimensionamento de Máquina Virtual seja dimensionado 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.

Não habilitou o dimensionamento automático padrão

Recebe a seguinte mensagem de erro:

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

A captura de tela que mostra o dimensionamento automático preditivo da mensagem de erro é baseado na porcentagem métrica da 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 configurá-lo para usar a métrica Porcentagem de CPU com o tipo de agregação média .

Sem dados preditivos

Você não verá dados nos gráficos preditivos sob determinadas condições. Esse comportamento não é um erro, é o comportamento pretendido.

Quando a escala automática preditiva está desativada, você recebe uma mensagem que começa com "Nenhum dado a ser mostrado..." Em seguida, você verá instruções sobre o que habilitar para que possa ver um gráfico preditivo.

Captura de ecrã que mostra a mensagem Nenhum dado a mostrar.

Quando você cria pela primeira vez um conjunto de dimensionamento de máquina virtual e habilita o modo somente previsão, recebe a mensagem "Os dados preditivos estão sendo treinados..." e um tempo para voltar para ver o gráfico.

Captura de tela que mostra a mensagem Dados preditivos estão sendo treinados.

Próximos passos

Saiba mais sobre o dimensionamento automático nos seguintes artigos: