Condividi tramite


Usare la scalabilità automatica predittiva per aumentare il numero di istanze prima delle richieste di carico nei set di scalabilità di macchine virtuali

La scalabilità automatica predittiva usa l'apprendimento automatico per gestire e ridimensionare i set di scalabilità di macchine virtuali di Azure con modelli di carico di lavoro ciclici. Prevede il carico complessivo della CPU nel set di scalabilità di macchine virtuali, in base ai modelli di utilizzo cronologici della CPU. Consente di stimare il carico complessivo della CPU osservando e imparando dall'utilizzo cronologico. Questo processo garantisce che la scalabilità orizzontale venga eseguita nel tempo per soddisfare la domanda.

La scalabilità automatica predittiva richiede almeno sette giorni di cronologia per fornire stime. I risultati più accurati provengono da 15 giorni di dati cronologici.

La scalabilità automatica predittiva rispetta i limiti di ridimensionamento impostati per il set di scalabilità di macchine virtuali. Quando il sistema prevede che il carico cpu percentuale del set di scalabilità di macchine virtuali supera il limite di scalabilità orizzontale, le nuove istanze vengono aggiunte in base alle specifiche. È anche possibile configurare quanto tempo prima del provisioning delle nuove istanze, fino a 1 ora prima che si verifichi il picco previsto del carico di lavoro.

La previsione consente solo di visualizzare la previsione stimata della CPU senza attivare l'azione di ridimensionamento in base alla stima. È quindi possibile confrontare la previsione con i modelli di carico di lavoro effettivi per creare fiducia nei modelli di stima prima di abilitare la funzionalità di scalabilità automatica predittiva.

Offerte di scalabilità automatica predittiva

  • La scalabilità automatica predittiva è per i carichi di lavoro che mostrano modelli di utilizzo ciclico della CPU.
  • Il supporto è disponibile solo per i set di scalabilità di macchine virtuali.
  • La metrica Percentuale CPU con il tipo di aggregazione Average è l'unica metrica attualmente supportata.
  • La scalabilità automatica predittiva supporta solo la scalabilità orizzontale. Configurare la scalabilità automatica standard per gestire la scalabilità delle azioni.
  • La scalabilità automatica predittiva è disponibile solo per il cloud commerciale di Azure. Azure per enti pubblici cloud non sono attualmente supportati.

Abilitare la scalabilità automatica predittiva o la previsione solo con il portale di Azure

  1. Passare alla schermata Set di scalabilità di macchine virtuali e selezionare Ridimensionamento.

    Screenshot che mostra la selezione di Ridimensionamento nel menu a sinistra nella portale di Azure.

  2. Nella sezione Scalabilità automatica personalizzata viene visualizzata la scalabilità automatica predittiva.

    Screenshot che mostra la selezione di Scalabilità automatica personalizzata e l'opzione Scalabilità automatica predittiva nella portale di Azure.

    Usando la selezione dell'elenco a discesa, è possibile:

    • Disabilitare la scalabilità automatica predittiva. Disable è la selezione predefinita quando si arriva per la prima volta nella pagina per la scalabilità automatica predittiva.
    • Abilitare la modalità di sola previsione.
    • Abilitare la scalabilità automatica predittiva.

    Nota

    Prima di abilitare la modalità di scalabilità automatica predittiva o di sola previsione, è necessario configurare le condizioni di scalabilità automatica reattive standard.

  3. Per abilitare la modalità di sola previsione, selezionarla dall'elenco a discesa. Definire un trigger di scalabilità orizzontale in base alla percentuale di CPU. Quindi selezionare Salva. Lo stesso processo si applica per abilitare la scalabilità automatica predittiva. Per disabilitare la modalità di scalabilità automatica predittiva o solo previsione, selezionare Disabilita dall'elenco a discesa.

    Screenshot che mostra l'abilitazione della modalità di sola previsione.

  4. Se necessario, specificare un tempo di preavvio in modo che le istanze siano completamente in esecuzione prima che siano necessarie. È possibile preavviare le istanze tra 5 e 60 minuti prima del tempo di previsione necessario.

    Screenshot che mostra l'installazione preavvio della scalabilità automatica predittiva.

  5. Dopo aver abilitato la modalità di scalabilità automatica predittiva o solo previsione e averla salvata, selezionare Grafici predittivi.

    Screenshot che mostra la selezione dell'opzione di menu Grafici predittivi.

  6. Vengono visualizzati tre grafici:

    Screenshot che mostra tre grafici per la scalabilità automatica predittiva.

    • Il grafico superiore mostra un confronto sovrapposto tra la percentuale totale di CPU effettiva e quella stimata. L'intervallo di tempo del grafico mostrato è compreso tra gli ultimi sette giorni e le 24 ore successive.
    • Il grafico intermedio mostra il numero massimo di istanze in esecuzione negli ultimi sette giorni.
    • Il grafico inferiore mostra l'utilizzo medio della CPU corrente negli ultimi sette giorni.

Abilitare l'uso di un modello di Azure Resource Manager

  1. Recuperare l'ID risorsa del set di scalabilità di macchine virtuali e il gruppo di risorse del set di scalabilità di macchine virtuali. Ad esempio: /subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e4e/resourceGroups/patest2/providers/Microsoft.Compute/virtualMachineScaleSets/patest2

  2. Aggiornare il file autoscale_only_parameters con l'ID risorsa del set di scalabilità di macchine virtuali e i parametri delle impostazioni di scalabilità automatica.

  3. Usare un comando di PowerShell per distribuire il modello che contiene le impostazioni di scalabilità automatica. Ad esempio:

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

Per altre informazioni sui modelli di Azure Resource Manager, vedere Panoramica del modello di Resource Manager.

Domande frequenti

Questa sezione risponde alle domande frequenti.

Perché la percentuale della CPU è superiore al 100% nei grafici predittivi?

Il grafico predittivo mostra il carico cumulativo per tutti i computer nel set di scalabilità. Se sono presenti 5 macchine virtuali in un set di scalabilità, il carico cumulativo massimo per tutte le macchine virtuali sarà pari al 500%, ovvero cinque volte il carico massimo della CPU del 100% di ogni macchina virtuale.

Cosa accade nel tempo quando si attiva la scalabilità automatica predittiva per un set di scalabilità di macchine virtuali?

La scalabilità automatica delle stime usa la cronologia di un set di scalabilità di macchine virtuali in esecuzione. Se il set di scalabilità è in esecuzione meno di sette giorni, si riceverà un messaggio che informa che il modello è in fase di training. Per altre informazioni, vedere il messaggio nessun dato predittivo. Le stime migliorano man mano che il tempo passa e ottengono un'accuratezza massima di 15 giorni dopo la creazione del set di scalabilità di macchine virtuali.

Se si verificano modifiche al modello di carico di lavoro ma rimangono periodiche, il modello riconosce la modifica e inizia a regolare la previsione. La previsione migliora man mano che passa il tempo. L'accuratezza massima viene raggiunta 15 giorni dopo la modifica nel modello di traffico. Tenere presente che le regole di scalabilità automatica standard sono ancora valide. Se si verifica un nuovo aumento imprevisto del traffico, il set di scalabilità di macchine virtuali verrà comunque ridimensionato per soddisfare la domanda.

Cosa succede se il modello non funziona bene per me?

La modellazione funziona meglio con i carichi di lavoro che presentano periodicità. È consigliabile valutare prima di tutto le stime abilitando "solo previsione", che sovrapporrà l'utilizzo stimato della CPU del set di scalabilità con l'utilizzo effettivo osservato. Dopo aver confrontato e valutato i risultati, è possibile scegliere di abilitare il ridimensionamento in base alle metriche stimate se le stime del modello sono sufficienti per lo scenario.

Perché è necessario abilitare la scalabilità automatica standard prima di abilitare la scalabilità automatica predittiva?

La scalabilità automatica standard è un fallback necessario se il modello predittivo non funziona correttamente per lo scenario. La scalabilità automatica standard coprirà picchi di carico imprevisti, che non fanno parte del modello di carico tipico della CPU. Fornisce anche un fallback se si verifica un errore nel recupero dei dati predittivi.

Quale regola diventa effettiva se vengono impostate regole di scalabilità automatica sia predittive che standard?

Le regole di scalabilità automatica standard vengono usate se si verifica un picco imprevisto nel carico della CPU o si verifica un errore durante il recupero dei dati predittivi

Viene usata la soglia impostata nelle regole di scalabilità automatica standard per comprendere quando si vuole aumentare le istanze e il numero di istanze. Se si vuole aumentare il numero di istanze del set di scalabilità di macchine virtuali quando l'utilizzo della CPU supera il 70% e i dati effettivi o stimati indicano che l'utilizzo della CPU è o sarà superiore al 70%, si verificherà un aumento del numero di istanze.

Errori e avvisi

In questa sezione vengono illustrati gli errori e gli avvisi comuni.

Non è stata abilitata la scalabilità automatica standard

Viene visualizzato il messaggio di errore seguente:

Per abilitare la scalabilità automatica predittiva, creare una regola di scalabilità orizzontale basata sulla metrica "Percentuale CPU". Fare clic qui per passare alla scheda "Configura" per impostare una regola di scalabilità automatica.

Screenshot che mostra il messaggio di errore che indica che la scalabilità automatica predittiva è basata sulla percentuale di CPU della metrica della risorsa corrente.

Questo messaggio indica che si è tentato di abilitare la scalabilità automatica predittiva prima di abilitare la scalabilità automatica standard e di impostarla per l'uso della metrica Percentuale CPU con il tipo di aggregazione Media .

Nessun dato predittivo

I dati nei grafici predittivi non verranno visualizzati in determinate condizioni. Questo comportamento non è un errore, è il comportamento previsto.

Quando la scalabilità automatica predittiva è disabilitata, si riceve invece un messaggio che inizia con "Nessun dato da visualizzare..." Vengono quindi visualizzate le istruzioni su cosa abilitare in modo da visualizzare un grafico predittivo.

Screenshot che mostra il messaggio Nessun dato da visualizzare.

Quando si crea per la prima volta un set di scalabilità di macchine virtuali e si abilita la modalità di sola previsione, viene visualizzato il messaggio "I dati predittivi vengono sottoposti a training..." e un momento per tornare a vedere il grafico.

Screenshot che mostra il messaggio Dati predittivi di cui viene eseguito il training.

Passaggi successivi

Altre informazioni sulla scalabilità automatica sono disponibili negli articoli seguenti: