Mise à l’échelle automatique avec plusieurs profils

La mise à l’échelle de vos ressources un jour particulier de la semaine ou à une date et une heure spécifiques peut réduire vos coûts tout en fournissant la capacité dont vous avez besoin quand vous en avez besoin.

Vous pouvez utiliser plusieurs profils de mise à l’échelle automatique pour effectuer une mise à l’échelle de différentes manières à différents moments. Si, par exemple, votre entreprise n’est pas active le week-end, créez un profil récurrent pour effectuer un scale-in de vos ressources le samedi et le dimanche. Si le Black Friday est une journée à forte activité, créez un profil pour effectuer automatiquement un scale-out de vos ressources le jour même.

Cet article explique les différents profils de mise à l’échelle automatique et la manière de les utiliser.

Vous pouvez avoir un ou plusieurs profils dans votre paramètre de mise à l’échelle automatique.

Il existe trois types de profils :

  • Le profil par défaut. Le profil par défaut est créé automatiquement et ne dépend pas d’une planification. Il n’est pas possible de le supprimer. Le profil par défaut est utilisé quand aucun autre profil ne correspond à la date et l’heure actuelles.
  • Les profils récurrents. Un profil récurrent est valide pendant un intervalle de temps spécifique et se répète les jours de la semaine sélectionnés.
  • Les profils à date et heure fixes. Profil valide pendant un intervalle de temps à une date spécifique.

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

Si les paramètres de date et d’heure d’un profil correspondent à l’heure actuelle, la mise à l’échelle automatique applique les règles et les limites de capacité de ce profil. Seul le premier profil applicable est utilisé.

L’exemple suivant montre un paramètre de mise à l’échelle automatique avec un profil par défaut et un profil récurrent.

Capture d’écran montrant un paramètre de mise à l’échelle automatique avec un profil par défaut et récurrent ou une condition d’échelle.

Dans l’exemple ci-dessus, le profil récurrent cessera d’être utilisé le lundi après 3h00. Si le nombre d’instances est inférieur à 3, la mise à l’échelle automatique s’adapte au nouveau minimum de trois. La mise à l’échelle automatique continue d’utiliser ce profil et se met à l’échelle en fonction du pourcentage d’UC jusqu’à 20h00 lundi. À tous les autres moments, la mise à l’échelle sera effectuée conformément au profil par défaut, en fonction du nombre de requêtes. Après lundi à 20h00, la mise à l’échelle automatique bascule vers le profil par défaut. Si, par exemple, le nombre d’instances à ce moment-là est égal à 12, la mise à l’échelle automatique effectue un scale-in de 10 instances, à savoir le maximum autorisé pour le profil par défaut.

Plusieurs profils contigus

La mise à l’échelle automatique fait la transition entre les profils en fonction de leurs heures de début. L’heure de fin d’un profil donné est déterminée par l’heure de début du profil suivant.

Dans le portail, le champ d’heure de fin devient l’heure de début suivante pour le profil par défaut. Vous ne pouvez pas spécifier la même heure pour la fin d’un profil et le début du suivant. Le portail force l’heure de fin pour qu’elle soit définie une minute avant l’heure de début du profil suivant. Au cours de cette minute, le profil par défaut devient actif. Si vous ne souhaitez pas que le profil par défaut devienne actif entre les profils récurrents, laissez le champ d’heure de fin vide.

Conseil

Pour configurer plusieurs profils contigus à l’aide du portail, laissez l’heure de fin vide. Le profil actuel cesse d’être utilisé quand le profil suivant devient actif. Spécifiez uniquement une heure de fin quand vous souhaitez revenir au profil par défaut. La création d’un profil périodique sans heure de fin n’est prise en charge que par le biais du portail et des modèles ARM.

Plusieurs profils utilisant des modèles, l’interface CLI et PowerShell

Quand vous créez plusieurs profils à l’aide de modèles, de l’interface CLI et de PowerShell, suivez les instructions ci-dessous.

Consultez la section portant sur la mise à l’échelle automatique de la définition de ressources de modèle ARM pour obtenir des informations de référence complètes sur les modèles.

Il n’existe aucune spécification dans le modèle pour l’heure de fin. Un profil reste actif jusqu’à l’heure de début du profil suivant.

Ajouter un profil récurrent à l’aide de modèles ARM

L’exemple suivant montre comment créer deux profils récurrents. Vous avez un profil pour les week-ends commençant à 00h01 le samedi matin et un profil pour les jours de la semaine commençant le lundi à 04h00. Cela signifie que le profil du week-end commence le samedi matin une minute après minuit, et se termine le lundi matin à 04h00. Le profil des jours de la semaine commence à 4h00 le lundi matin et se termine juste après minuit le samedi matin.

Utilisez la commande suivante pour déployer le modèle : az deployment group create --name VMSS1-Autoscale-607 --resource-group rg-vmss1 --template-file VMSS1-autoscale.json, où VMSS1-autoscale.json est le fichier contenant l’objet JSON suivant.

{
    "$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/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/rg-vmss1/providers/Microsoft.Compute/virtualMachineScaleSets/VMSS1",
                "profiles": [
                    {
                        "name": "Weekday profile",
                        "capacity": {
                            "minimum": "3",
                            "maximum": "20",
                            "default": "3"
                        },
                        "rules": [
                            {
                                "scaleAction": {
                                    "direction": "Increase",
                                    "type": "ChangeCount",
                                    "value": "1",
                                    "cooldown": "PT5M"
                                },
                                "metricTrigger": {
                                    "metricName": "Inbound Flows",
                                    "metricNamespace": "microsoft.compute/virtualmachinescalesets",
                                    "metricResourceUri": "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/rg-vmss1/providers/Microsoft.Compute/virtualMachineScaleSets/VMSS1",
                                    "operator": "GreaterThan",
                                    "statistic": "Average",
                                    "threshold": 100,
                                    "timeAggregation": "Average",
                                    "timeGrain": "PT1M",
                                    "timeWindow": "PT10M",
                                    "Dimensions": [],
                                    "dividePerInstance": true
                                }
                            },
                            {
                                "scaleAction": {
                                    "direction": "Decrease",
                                    "type": "ChangeCount",
                                    "value": "1",
                                    "cooldown": "PT5M"
                                },
                                "metricTrigger": {
                                    "metricName": "Inbound Flows",
                                    "metricNamespace": "microsoft.compute/virtualmachinescalesets",
                                    "metricResourceUri": "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/rg-vmss1/providers/Microsoft.Compute/virtualMachineScaleSets/VMSS1",
                                    "operator": "LessThan",
                                    "statistic": "Average",
                                    "threshold": 60,
                                    "timeAggregation": "Average",
                                    "timeGrain": "PT1M",
                                    "timeWindow": "PT10M",
                                    "Dimensions": [],
                                    "dividePerInstance": true
                                }
                            }
                        ],
                        "recurrence": {
                            "frequency": "Week",
                            "schedule": {
                                "timeZone": "E. Europe Standard Time",
                                "days": [
                                    "Monday"
                                ],
                                "hours": [
                                    4
                                ],
                                "minutes": [
                                    0
                                ]
                            }
                        }
                    },
                    {
                        "name": "Weekend profile",
                        "capacity": {
                            "minimum": "1",
                            "maximum": "3",
                            "default": "1"
                        },
                        "rules": [],
                        "recurrence": {
                            "frequency": "Week",
                            "schedule": {
                                "timeZone": "E. Europe Standard Time",
                                "days": [
                                    "Saturday"                                    
                                ],
                                "hours": [
                                    0
                                ],
                                "minutes": [
                                    1
                                ]
                            }
                        }
                    }
                ],
                "notifications": [],
                "targetResourceLocation": "eastus"
            }

        }
    ]
}    

Étapes suivantes