Partager via


Utiliser la mise à l’échelle automatique prédictive pour effectuer un scale-out avant les pics de charge dans les groupes de machines virtuelles identiques

La mise à l’échelle automatique prédictive utilise le machine learning pour faciliter la gestion et la mise à l’échelle des groupes de machines virtuelles identiques Azure avec des modèles de charge de travail cycliques. Elle prévoit la charge globale du processeur sur votre groupe de machines virtuelles identiques, en fonction de vos modes d’utilisation du processeur. Il prédit la charge globale du processeur en observant et en apprenant de l’utilisation historique. Ce processus garantit que le scale-out se produit dans les temps pour répondre à la demande.

La mise à l’échelle automatique prédictive a besoin d’au moins sept jours d’historique pour fournir des prédictions. Les résultats les plus précis proviennent de 15 jours de données historiques.

La mise à l'échelle automatique prédictive respecte les limites de mise à l’échelle que vous avez définies pour votre groupe de machines virtuelles identiques. Lorsque le système prédit que le pourcentage de charge processeur de votre groupe de machines virtuelles identiques va dépasser votre limite de scale-out, de nouvelles instances sont ajoutées en fonction de vos spécifications. Vous pouvez également configurer combien de temps à l’avance vous aimeriez que les nouvelles instances soient provisionnées, jusqu’à 1 heure avant que le pic de charge de travail prédit ne se produise.

Les prévisions vous permettent uniquement de voir la charge processeur prédite sans déclencher l’action de mise à l’échelle en fonction de la prédiction. Vous pouvez alors comparer les prévisions avec vos modèles de charge de travail effectifs pour établir une confiance dans les modèles de prédiction avant d’activer la fonctionnalité de mise à l’échelle automatique prédictive.

Offres relatives à la mise à l’échelle automatique prédictive

  • La mise à l’échelle automatique prédictive fonctionne uniquement pour les charges de travail qui présentent des modes d’utilisation cycliques du processeur.
  • La prise en charge n’est disponible que pour les groupes de machines virtuelles identiques.
  • La métrique Pourcentage d’UC avec le type d’agrégation Moyenne est la seule métrique actuellement prise en charge.
  • La mise à l’échelle automatique prédictive prend uniquement en charge le scale-out. Configurez la mise à l’échelle automatique standard pour gérer la mise à l’échelle dans les actions.
  • La mise à l’échelle automatique prédictive est disponible uniquement pour le cloud commercial Azure. Les clouds Azure Government ne sont actuellement pas pris en charge.

Activation de la mise à l’échelle automatique prédictive ou des prévisions uniquement avec le portail Azure

  1. Accédez à l’écran des groupes de machines virtuelles identiques et sélectionnez Mise à l’échelle.

    Capture d’écran montrant comment sélectionner des extensions dans le menu du portail Azure.

  2. Dans la section Mise à l’échelle automatique personnalisée, la mise à l’échelle automatique prédictive s’affiche.

    Capture d'écran qui montre la sélection de l'option Mise à l'échelle automatique et de l'option Mise à l'échelle automatique prédictive dans le portail Azure.

    Avec la sélection de la liste déroulante, vous pouvez :

    • Activer la mise à l’échelle automatique prédictive. Désactiver est la sélection par défaut lorsque vous accédez pour la première fois à la page de la mise à l’échelle automatique prédictive.
    • Activer le mode de prévision seule.
    • Activer la mise à l’échelle automatique prédictive.

    Notes

    Avant de pouvoir activer le mode de mise à l’échelle automatique prédictive ou de prévision seule, vous devez configurer les conditions de mise à l’échelle automatique réactive standard.

  3. Pour activer la prévision seule, sélectionnez-la dans la liste déroulante. Définissez un déclencheur de montée en charge en fonction du Pourcentage CPU. Ensuite, sélectionnez Enregistrer. Le même processus s’applique pour activer la mise à l’échelle automatique prédictive. Pour désactiver la mise à l’échelle automatique prédictive ou le mode de prévision seule, sélectionnez Désactiver dans la liste déroulante.

    Capture d’écran montrant l’activation d’un mode prévision seule.

  4. Si vous le souhaitez, spécifiez une heure de pré-lancement afin que les instances soient prêtes à être exécutées avant que vous n’en ayez besoin. Vous pouvez pré-lancer des instances entre 5 et 60 minutes avant l’heure de prédiction nécessaire.

    Capture d'écran qui montre la configuration de pré-lancement de la mise à l'échelle automatique prédictive.

  5. Une fois que vous avez activé la mise à l’échelle automatique prédictive ou la prévision seule et que vous l’avez enregistrée, sélectionnez Graphiques prédictifs.

    Capture d'écran montrant la sélection de l'option de menu Graphiques prédictifs.

  6. Vous voyez trois graphiques :

    Capture d'écran trois graphiques pour de la mise à l'échelle automatique prédictive.

    • Le graphique du haut montre une comparaison superposée du pourcentage total de processeur réel et prédit. La période du graphique indiquée est comprise entre les sept derniers jours et les prochaines 24 heures.
    • Le graphique du milieu montre le nombre maximal d’instances exécutées au cours des sept derniers jours.
    • Le dernier graphique montre l’utilisation moyenne du processeur au cours des sept derniers jours.

Activer à l’aide d’un modèle Azure Resource Manager

  1. Récupérez l’ID de ressource du groupe de machines virtuelles identiques et le groupe de ressources de votre groupe de machines virtuelles identiques. Par exemple : /subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/patest2/providers/Microsoft.Compute/virtualMachineScaleSets/patest2

  2. Mettez à jour le fichier autoscale_only_parameters avec l’ID de ressource du groupe de machines virtuelles identiques et les paramètres de définition de la mise à l’échelle automatique.

  3. Utilisez une commande PowerShell pour déployer le modèle contenant les paramètres de mise à l’échelle automatique. Par exemple :

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

Pour plus d’informations sur les modèles Azure Resource Manager, consultez Vue d’ensemble des modèles Resource Manager.

Forum aux questions

Cette section répond aux questions fréquentes.

Pourquoi le pourcentage processeur est-il supérieur à 100 % sur les graphiques prédictifs ?

Le graphique prédictif affiche la charge cumulative pour toutes les machines du groupe identique. Si vous avez 5 machines virtuelles dans un groupe identique, la charge cumulative maximale pour toutes les machines virtuelles est de 500 %, autrement dit, cinq fois la charge maximale de processeur de 100 % de chaque machine virtuelle.

Que se passe-t-il au fil du temps lorsque vous activez la mise à l’échelle automatique prédictive pour un groupe de machines virtuelles identiques ?

La mise à l’échelle automatique prédictive utilise l’historique d’un groupe de machines virtuelles identiques en cours d’exécution. Si votre groupe identique s’exécute depuis moins de sept jours, vous recevrez un message indiquant que le modèle est en cours de formation. Pour plus d’informations, consultez le message de données non prédictives. Les prédictions s’améliorent au fur et à mesure jusqu’à atteindre leur justesse maximale 15 jours après la création du groupe de machines virtuelles identiques.

Si des modifications sont apportées au modèle de charge de travail (et sont régulières), le modèle les reconnaît et commence à ajuster la prévision. La prévision s’améliore au fur et à mesure que le temps passe. La justesse maximale est atteinte 15 jours après la modification du modèle de trafic. N’oubliez pas que vos règles de mise à l’échelle automatique standard s’appliquent toujours. Si une nouvelle hausse imprévue du trafic se produit, votre groupe de machines virtuelles identiques fait quand même l’objet d’un scale-out pour répondre à la demande.

Que se passe-t-il si le modèle ne fonctionne pas correctement ?

La modélisation fonctionne mieux avec les charges de travail qui présentent une périodicité. Nous vous recommandons d’évaluer d’abord les prédictions en activant « prévision seule » pour superposer l’utilisation prédite du processeur du groupe identique sur l’utilisation réelle observée. Une fois que vous avez comparé et évalué les résultats, vous pouvez choisir d’activer la mise à l’échelle en fonction des métriques prédites si les prédictions du modèle se rapprochent suffisamment pour votre scénario.

Pourquoi dois-je activer la mise à l’échelle automatique standard avant d’activer la mise à l’échelle automatique prédictive ?

La mise à l’échelle automatique standard est une option de secours nécessaire si le modèle prédictif ne fonctionne pas correctement pour votre scénario. La mise à l’échelle automatique standard couvre des pics de charge imprévus qui ne font pas partie de votre modèle de charge processeur classique. Elle fournit également un secours si une erreur se produit lors de la récupération des données prédictives.

Quelle règle prend effet si les règles de mise à l’échelle automatique prédictive et standard sont définies ?

Les règles de mise à l’échelle automatique Standard sont utilisées s’il existe un pic inattendu dans la charge du processeur, ou une erreur se produit lors de la récupération de données prédictives

Nous utilisons le seuil défini dans les règles de mise à l’échelle automatique standard pour comprendre quand vous souhaitez effectuer un scale-out et par le nombre d’instances. Si vous souhaitez que votre groupe de machines virtuelles identiques soit mis à l’échelle lorsque l’utilisation du processeur dépasse 70 %, et que les données réelles ou prédites indiquent que l’utilisation du processeur est ou sera supérieure à 70 %, un scale-out se produit.

Erreurs et avertissements

Cette section traite des erreurs et avertissements courants.

Impossible d’activer la mise à l’échelle automatique standard

Vous recevez le message d’erreur suivant :

Pour activer la mise à l’échelle automatique prédictive, créez une règle de scale-out basée sur la métrique « Pourcentage CPU ». Cliquez ici pour accéder à l’onglet « Configurer » afin de définir une règle de mise à l’échelle automatique.

Capture d'écran qui montre le message d'erreur : la mise à l'échelle automatique prédictive est basée sur la métrique du pourcentage de processeur de la ressource actuelle.

Ce message signifie que vous avez essayé d’activer la mise à l’échelle automatique prédictive avant d’activer la mise à l’échelle automatique standard et de la configurer pour qu’elle utilise la métrique Pourcentage de processeur avec le type d’agrégation Moyenne.

Aucune donnée prédictive

Vous ne verrez pas les données sur les graphiques prédictifs sous certaines conditions. Ce n’est pas une erreur, c’est le comportement voulu.

Quand la mise à l’échelle automatique prédictive est désactivée, vous recevez un message qui commence par « Aucune donnée à montrer... » Vous voyez alors des instructions sur ce que vous devez activer pour pouvoir voir un graphique prédictif.

Capture d'écran avec le message Aucune donnée à afficher.

Lorsque vous créez pour la première fois un groupe de machines virtuelles identiques et que vous activez le mode de prévision seule, vous recevez le message indiquant que « Les données prédictives sont en cours d’entraînement... » et une heure à laquelle revenir voir le graphique.

Capture d'écran avec le message « Les données prédictives sont en cours d’entraînement ».

Étapes suivantes

Apprenez-en davantage sur la mise à l’échelle automatique dans les articles suivants :