Comprendre les paramètres de mise à l’échelle automatique

Les paramètres de mise à l’échelle automatique permettent de s’assurer qu’un nombre approprié de ressources s’exécute pour gérer la charge fluctuante de votre application. Vous pouvez configurer les paramètres de mise à l’échelle automatique de sorte qu’ils soient déclenchés en fonction de mesures indiquant la charge ou les performances, ou un déclenchement à une date et une heure planifiées.

Cet article explique les paramètres de mise à l’échelle automatique.

Schéma du paramètre de mise à l'échelle automatique

L’exemple suivant montre un paramètre de mise à l’échelle automatique avec ces attributs :

  • Profil par défaut unique.
  • Deux règles de métrique dans ce profil : une pour le scale-out et l’autre pour le scale-in.
    • La règle d’augmentation de la taille des instances est déclenchée lorsque la mesure de pourcentage moyen d’utilisation du processeur du groupe de machines virtuelles identiques est supérieure à 85 % pendant les 10 dernières minutes.
    • La règle de diminution de la taille des instances est déclenchée lorsque la moyenne du groupe de machines virtuelles identiques est inférieur à 60 % pendant la dernière minute.

Notes

Un paramètre peut avoir plusieurs profils. Pour plus d’informations, consultez la section Profils. Un profil peut également avoir plusieurs règles de montée et descente en puissance définies. Pour voir comment elles sont évaluées, consultez la section Évaluation.

{
    "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
    "contentVersion": "1.0.0.0",
    "resources": [
        {
            "type": "Microsoft.Insights/autoscaleSettings",
            "apiVersion": "2015-04-01",
            "name": "VMSS1-Autoscale-607",
            "location": "eastus",
            "properties": {

                "name": "VMSS1-Autoscale-607",
                "enabled": true,
                "targetResourceUri": "/subscriptions/abc123456-987-f6e5-d43c-9a8d8e7f6541/resourceGroups/rg-vmss1/providers/Microsoft.Compute/virtualMachineScaleSets/VMSS1",
    "profiles": [
      {
        "name": "Auto created default scale condition",
        "capacity": {
          "minimum": "1",
          "maximum": "4",
          "default": "1"
        },
        "rules": [
          {
            "metricTrigger": {
              "metricName": "Percentage CPU",
              "metricResourceUri": "/subscriptions/abc123456-987-f6e5-d43c-9a8d8e7f6541/resourceGroups/rg-vmss1/providers/Microsoft.Compute/virtualMachineScaleSets/VMSS1",
              "timeGrain": "PT1M",
              "statistic": "Average",
              "timeWindow": "PT10M",
              "timeAggregation": "Average",
              "operator": "GreaterThan",
              "threshold": 85
            },
            "scaleAction": {
              "direction": "Increase",
              "type": "ChangeCount",
              "value": "1",
              "cooldown": "PT5M"
            }
          },
          {
            "metricTrigger": {
              "metricName": "Percentage CPU",
              "metricResourceUri": "/subscriptions/abc123456-987-f6e5-d43c-9a8d8e7f6541/resourceGroups/rg-vmss1/providers/Microsoft.Compute/virtualMachineScaleSets/VMSS1",
              "timeGrain": "PT1M",
              "statistic": "Average",
              "timeWindow": "PT10M",
              "timeAggregation": "Average",
              "operator": "LessThan",
              "threshold": 60
            },
            "scaleAction": {
              "direction": "Decrease",
              "type": "ChangeCount",
              "value": "1",
              "cooldown": "PT5M"
            }
          }
        ]
      }
    ]
  }
}

Le tableau ci-dessous décrit les éléments présents dans le fichier JSON du paramètre de mise à l’échelle automatique précédent.

Section Nom de l'élément Nom du portail Description
Paramètre id ID de ressource du paramètre de mise à l’échelle automatique. Les paramètres de mise à l’échelle automatique sont une ressource Azure Resource Manager.
Paramètre name Nom du paramètre de mise à l’échelle automatique.
Paramètre location Emplacement du paramètre de mise à l’échelle automatique. Cet emplacement peut être différent de celui de la ressource en cours de mise à l’échelle.
properties targetResourceUri ID de la ressource mise à l’échelle. Vous ne pouvez avoir qu’un seul paramètre de mise à l’échelle automatique par ressource.
properties profiles Condition de mise à l’échelle Un paramètre de mise à l’échelle automatique se compose d’un ou plusieurs profils. Chaque fois que le moteur de mise à l’échelle automatique s’exécute, un profil est exécuté. Configurez jusqu’à 20 profils par paramètre de mise à l’échelle automatique.
profiles name Nom du profil. Vous pouvez choisir n’importe quel nom vous permettant d’identifier le profil.
profiles capacity.maximum Limites d’instance – Maximum Capacité maximale autorisée. Elle garantit que la mise à l’échelle automatique ne met pas votre ressource à l’échelle au-dessus de ce nombre lors de l’exécution de ce profil.
profiles capacity.minimum Limites d’instance – Minimum Capacité minimale autorisée. Elle garantit que la mise à l’échelle automatique ne met pas votre ressource à l’échelle en dessous de ce nombre lors de l’exécution de ce profil
profiles capacity.default Limites d’instance – Par défaut S’il existe un problème de lecture des mesures de ressource et que la capacité actuelle est inférieure à la capacité par défaut, la mise à l’échelle automatique sera modifiée sur la valeur par défaut. Cette action garantit la disponibilité des ressources. Si la capacité actuelle est déjà supérieure à la capacité par défaut, la mise à l’échelle automatique n’effectue pas de scale-in.
profiles rules Règles La mise à l’échelle s’ajuste automatiquement entre les capacités maximales et minimales en utilisant les règles du profil. Définissez jusqu’à 10 règles individuelles dans un profil. Généralement, les règles sont définies par paires, une pour déterminer quand effectuer un scale-out, et une autre pour déterminer quand effectuer un scale-in.
rule metricTrigger Règle de mise à l’échelle Définit la condition de mesure de la règle.
metricTrigger metricName Nom de métrique Nom de la mesure.
metricTrigger metricResourceUri ID de la ressource qui a généré la mesure. Dans la plupart des cas, il est identique à la ressource mise à l’échelle. Dans certains cas, il peut être différent. Par exemple, vous pouvez faire évoluer un groupe de machines virtuelles identiques en fonction du nombre de messages figurant dans la file d’attente de stockage.
metricTrigger timeGrain Fragment de temps (minutes) Durée d’échantillonnage de la mesure. Par exemple, timeGrain = "PT1M" signifie que les mesures seront agrégées chaque minute à l’aide de la méthode d’agrégation spécifiée dans l’élément « statistic ».
metricTrigger statistic Statistique de fragment de temps Méthode d’agrégation au cours de la période timeGrain. Par exemple, statistic = "Average" et timeGrain = "PT1M" signifient que les mesures sont agrégées chaque minute en prenant la valeur moyenne. Cette propriété détermine la façon dont la mesure est échantillonnée.
metricTrigger timeWindow Duration Durée nécessaire à l’examen des mesures. Par exemple, timeWindow = "PT10M" signifie qu’à chaque exécution d’une mise à l’échelle automatique, les mesures sont interrogées sur les 10 dernières minutes. La fenêtre de temps permet la normalisation de vos mesures et évite de réagir aux pics temporaires.
metricTrigger timeAggregation Agrégation du temps Méthode d’agrégation utilisée pour agréger les mesures échantillonnées. Par exemple, TimeAggregation = "Average" doit agréger les mesures échantillonnées en prenant la moyenne. Dans le cas précédent, choisissez les dix échantillons de 1 minute et calculez leur moyenne.
rule scaleAction Action Action à entreprendre lors du déclenchement du paramètre metricTrigger de la règle.
scaleAction direction Opération « Increase » pour la montée en puissance, ou Decrease » pour la descente en puissance.
scaleAction value Nombre d’instances Indique dans quelle mesure augmenter ou diminuer la capacité de la ressource.
scaleAction cooldown Refroidissement (minutes) Temps d’attente entre deux opérations de mise à l’échelle. La période de refroidissement entre en vigueur après un événement scale-in ou scale-out. Par exemple, si cooldown = "PT10M", aucune tentative de mise à l’échelle automatique ne peut survenir dans les 10 minutes. Le cooldown permet la stabilisation des mesures après l’ajout ou la suppression d’instances.

Profils de mise à l’échelle automatique

Définissez jusqu’à 20 profils différents par paramètre de mise à l’échelle automatique.
Il existe trois types de profils de mise à l’échelle automatique :

  • Profil par défaut : Utilisez le profil par défaut si vous n’avez pas besoin de mettre à l’échelle votre ressource en fonction d’une date et d’une heure particulières ou d’un jour de la semaine. Le profil par défaut est utilisé quand aucun autre profil ne correspond à la date et l’heure actuelles. Vous ne pouvez pas avoir plus d’un seul profil par défaut.

  • Profil à date fixe : Le profil de date fixe est pertinent pour une date et une heure uniques. Utilisez le profil de date fixe pour définir des règles de mise à l’échelle pour un événement spécifique. Le profil ne s’exécute qu’une seule fois, à la date et à l’heure de l’événement. Pour toutes les autres fois, la mise à l’échelle automatique utilise le profil par défaut.

        ...
        "profiles": [
            {
                "name": " regularProfile",
                "capacity": {
                    ...
                },
                "rules": [
                    ...
                ]
            },
            {
                "name": "eventProfile",
                "capacity": {
                ...
                },
                "rules": [
                    ...
                ],
                "fixedDate": {
                    "timeZone": "Pacific Standard Time",
                    "start": "2017-12-26T00:00:00",
                    "end": "2017-12-26T23:59:00"
                }
            }
        ]
    
  • Profil de périodicité : Un profil de périodicité est utilisé pour un jour ou un ensemble de jours de la semaine. Le schéma d’un profil périodique n’inclut pas de date de fin. La date et l’heure de fin d’un profil récurrent sont définies par l’heure de début du profil suivant. Lorsque vous utilisez le portail pour configurer des profils récurrents, le profil par défaut est automatiquement mis à jour pour démarrer à l’heure de fin spécifiée pour ce profil récurrent. Pour plus d’informations sur la configuration de plusieurs profils, consultez Mise à l’échelle automatique avec plusieurs profils

    L’exemple de schéma partiel montre ici un profil périodique. Il commence à 06:00 et se termine à 19:00 les samedis et dimanches. Le profil par défaut a été modifié pour commencer à 19:00 le samedi et le dimanche.

        {
            "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
            "contentVersion": "1.0.0.0",
            "resources": [
                {
                    "type": "Microsoft.Insights/    autoscaleSettings",
                    "apiVersion": "2015-04-01",
                    "name": "VMSS1-Autoscale-607",
                    "location": "eastus",
                    "properties": {
    
                        "name": "VMSS1-Autoscale-607",
                        "enabled": true,
                        "targetResourceUri": "/subscriptions/    abc123456-987-f6e5-d43c-9a8d8e7f6541/    resourceGroups/rg-vmss1/providers/    Microsoft.Compute/    virtualMachineScaleSets/VMSS1",
                        "profiles": [
                            {
                                "name": "Weekend profile",
                                "capacity": {
                                    ...
                                },
                                "rules": [
                                    ...
                                ],
                                "recurrence": {
                                    "frequency": "Week",
                                    "schedule": {
                                        "timeZone": "E. Europe     Standard Time",
                                        "days": [
                                            "Saturday",
                                            "Sunday"
                                        ],
                                        "hours": [
                                            6
                                        ],
                                        "minutes": [
                                            0
                                        ]
                                    }
                                }
                            },
                            {
                                "name": "{\"name\":\"Auto created default scale condition\",\"for\":\"Weekend profile\"}",
                                "capacity": {
                                   ...
                                },
                                "recurrence": {
                                    "frequency": "Week",
                                    "schedule": {
                                        "timeZone": "E. Europe     Standard Time",
                                        "days": [
                                            "Saturday",
                                            "Sunday"
                                        ],
                                        "hours": [
                                            19
                                        ],
                                        "minutes": [
                                            0
                                        ]
                                    }
                                },
                                "rules": [   
                                  ...
                                ]
                            }
                        ],
                        "notifications": [],
                        "targetResourceLocation": "eastus"
                    }
    
                }
            ]
                }
    
    

Évaluation de mise à l'échelle automatique

Les paramètres de mise à l’échelle automatique peuvent avoir plusieurs profils. Un profil peut contenir plusieurs règles. Chaque fois que le travail de mise à l’échelle automatique s’exécute, il commence par choisir le profil applicable. La mise à l’échelle automatique du profil évalue ensuite les valeurs minimales et maximales et les règles de mesure du profil et décide si une action de mise à l’échelle est nécessaire. Le travail de mise à l’échelle automatique s’exécute toutes les 30 à 60 secondes, selon le type de ressource. Une fois qu’une action de mise à l’échelle se produit, le travail de mise à l’échelle automatique attend la période de refroidissement d’effectuer une nouvelle mise à l’échelle. La période de refroidissement s’applique aux actions de scale-out et de scale-in.

Quel profil est choisi par la mise à l’échelle automatique ?

Chaque fois que le service de mise à l’échelle automatique s’exécute, les profils sont évalués dans l’ordre suivant :

  1. Profils à date fixe
  2. Profils récurrents
  3. Profil par défaut

Le premier profil approprié trouvé sera utilisé.

Comment la mise à l’échelle automatique évalue-t-elle plusieurs règles ?

Une fois que la mise à l’échelle automatique a déterminé le profil censé s’exécuter, elle évalue toutes les règles d’augmentation de la taille (scale-out) dans le profil (règles dans lesquelles direction = "Increase"). Si une ou plusieurs règles de scale-out sont déclenchées, la mise à l’échelle automatique calcule la nouvelle capacité déterminée par scaleAction de chacune de ces règles. Si plusieurs règles de scale-out sont déclenchées, la mise à l’échelle automatique est mise à l’échelle à la capacité spécifiée la plus élevée pour garantir la disponibilité du service.

Par exemple, supposons qu’il existe deux règles : la règle 1 spécifie un scale-out de trois instances et la règle 2 spécifie un scale-out de cinq instances. Si les deux règles sont déclenchées, la mise à l’échelle automatique est mise à l’échelle par cinq instances. De même, si une règle spécifie un scale-out de trois instances et une autre règle, un scale-out de 15 %, c’est le plus élevé qui sera utilisé.

Si aucune règle de scale-out n’est déclenchée, la mise à l’échelle automatique évalue toutes les règles de scale-in (règles dans lesquelles direction = "Decrease"). La mise à l’échelle automatique n’accepte un scale-in que si toutes les règles correspondantes sont déclenchées.

La mise à l’échelle automatique calcule la nouvelle capacité déterminée par scaleAction de chacune de ces règles. Pour garantir la disponibilité du service, la mise à l’échelle automatique appliquée est minimale pour atteindre la capacité maximale spécifiée. Il existe deux règles de scale-in : une qui diminue la capacité de 50 %, et une autre qui diminue la capacité de trois instances. Si la première règle aboutit à cinq instances et que la deuxième règle aboutit à sept instances, la mise à l’échelle automatique est appliquée sur sept instances.

Chaque fois que la mise à l’échelle automatique calcule le résultat d’une action de mise à l’échelle, elle évalue si cette action déclencherait une action de scale-out. Lorsqu’une action de mise à l’échelle déclenche l’action de mise à l’échelle inverse, on parle alors de « bagotement ». La mise à l’échelle automatique peut différer une action de scale-in pour éviter les bagotements, ou peut effectuer une mise à l’échelle d’un nombre inférieur à ce qui a été spécifié dans la règle. Pour plus d’informations sur le bagotement, consultez la ressource Bagotement dans la mise à l’échelle automatique.

Étapes suivantes

En savoir plus sur la mise à l’échelle automatique :