Utiliser une règle d'autoscaling avec plusieurs signaux


Lorsque vous créez une règle d'autoscaling avec plusieurs signaux, l'autoscaler procède au scaling en fonction du signal fournissant le plus grand nombre d'instances de machine virtuelle (VM) dans le groupe d'instances géré (MIG). Ainsi, vous aurez toujours suffisamment de VM pour gérer les charges de travail de vos applications et vous pourrez les faire évoluer avec plusieurs goulots d'étranglement possibles.

Pour en savoir plus sur les différents types de signaux d'autoscaling, consultez la page Règle d'autoscaling.

Avant de commencer

  • Découvrez les principes de base de l'autoscaler.
  • Si ce n'est pas déjà fait, configurez l'authentification. L'authentification est le processus permettant de valider votre identité pour accéder aux services et aux API Google Cloud. Pour exécuter du code ou des exemples depuis un environnement de développement local, vous pouvez vous authentifier auprès de Compute Engine comme suit :

    Sélectionnez l'onglet correspondant à la façon dont vous prévoyez d'utiliser les exemples de cette page :

    Console

    Lorsque vous utilisez la console Google Cloud pour accéder aux services et aux API Google Cloud, vous n'avez pas besoin de configurer l'authentification.

    gcloud

    1. Install the Google Cloud CLI, then initialize it by running the following command:

      gcloud init
    2. Définissez une région et une zone par défaut.

    REST

    Pour utiliser les exemples d'API REST de cette page dans un environnement de développement local, vous devez utiliser les identifiants que vous fournissez à gcloud CLI.

      Install the Google Cloud CLI, then initialize it by running the following command:

      gcloud init

Gestion de plusieurs signaux par l'autoscaler

Pour gérer plusieurs signaux, l'autoscaler calcule le nombre de machines virtuelles recommandé pour chaque signal, puis sélectionne celui qui permet de mobiliser le plus grand nombre de machines virtuelles dans le groupe d'instances géré.

Un autoscaler ne peut gérer qu'un seul signal par type de métrique, sauf dans le cas de métriques Cloud Monitoring et de planifications de scaling. Vous pouvez choisir jusqu'à cinq signaux d'autoscaling pour les métriques Cloud Monitoring et créer jusqu'à 128 planifications par MIG. Par exemple, vous pouvez créer un autoscaler qui utilise jusqu'à un signal d'utilisation du processeur, jusqu'à un signal d'équilibrage de charge, jusqu'à cinq signaux de métriques personnalisées et jusqu'à 128 planifications de scaling.

Par exemple, vous pouvez définir un autoscaler avec tous les signaux suivants :

  • cpuUtilization avec une cible de 0,8
  • loadBalancingUtilization avec une cible de 0,6
  • customMetricUtilization pour la métrique nommée metric1 avec une cible de 1 000
  • customMetricUtilization pour la métrique nommée metric2 avec une cible de 2 000
  • scalingSchedules
    • Un minimum de 6 VM chaque samedi et dimanche à 12h00 pendant 24 heures
    • Un minimum de 15 VM des lundis aux vendredis à 9h00 pendant 8 heures

Dans cet exemple, supposons que l'autoscaler mesure les valeurs d'utilisation moyenne suivantes pour un MIG contenant 10 VM au moment de la mesure :

  • 0,5 pour l'utilisation du processeur
  • 0,4 pour l'utilisation de l'équilibrage de charge
  • 1 100 pour la métrique nommée metric1
  • 2 700 pour la métrique nommée metric2

À l'aide des valeurs précédentes, l'autoscaler calcule le nombre recommandé de VM en fonction de chaque signal :

  • 7 VM basées sur l'utilisation du processeur
  • 7 VM basées sur l'utilisation de l'équilibrage de charge
  • 11 VM basées sur la métrique nommée metric1
  • 14 VM basées sur la métrique nommée metric2
  • 6 VM chaque samedi et dimanche pour toute la journée en se basant sur la première planification de scaling
  • 15 VM des lundis aux vendredis, de 9h00 à 17h00 en se basant sur la deuxième planification de scaling

L'autoscaler choisit le signal qui crée plus grand nombre de VM du MIG et définit la taille recommandée du MIG sur cette valeur. Dans ce cas, l'autoscaler redimensionne le MIG sur 15 VM si la deuxième planification est actuellement active, ou 14 VM dans le cas contraire.

Créer un autoscaler avec plusieurs signaux

La création d'un autoscaler avec plusieurs signaux diffère légèrement selon que vous utilisez la console Google Cloud, gcloud CLI ou REST.

Console

  1. Dans la console Google Cloud, accédez à la page Groupes d'instances.

    Accéder à la page "Groupes d'instances"

  2. Cliquez sur le nom d'un groupe d'instances géré dans la liste. Cliquez ensuite sur Modifier.

  3. Sur la page de modification, sous Mode autoscaling, activez l'autoscaling en sélectionnant Activé : ajouter et supprimer des instances au groupe dans le menu déroulant.

  4. Sous Nombre minimal d'instances, saisissez le nombre minimal de VM que vous souhaitez pour ce MIG. La taille minimale de ce groupe d'instances géré est toujours conservée, indépendamment de ses signaux d'autoscaling.

  5. Sous Nombre maximal d'instances, saisissez le nombre maximal de VM que vous souhaitez pour ce MIG. La taille maximale de ce groupe d'instances géré n'est jamais dépassée, quelle que soit la taille recommandée par ses signaux d'autoscaling.

  6. Pour chaque signal d'autoscaling basé sur des métriques que vous souhaitez ajouter, cliquez sur Ajouter une métrique sous Métriques d'autoscaling.

    • Pour créer un signal d'autoscaling basée sur l'utilisation moyenne du processeur, sélectionnez Utilisation du processeur dans le menu déroulant sous Type de métrique. Saisissez ensuite une valeur d'utilisation du processeur cible et cliquez sur OK. Pour en savoir plus, consultez la page Scaling basé sur l'utilisation du processeur.
    • Pour créer un signal d'autoscaling basée la capacité de diffusion de l'équilibrage de charge HTTP, sélectionnez Utilisation de l'équilibrage de charge HTTP dans le menu déroulant sous Type de métrique. Renseignez ensuite le champ Utilisation cible de l'équilibrage de charge HTTP puis cliquez sur OK. Pour en savoir plus, consultez la page Scaling basé sur la capacité de diffusion de l'équilibrage de charge.
    • Pour créer un signal d'autoscaling basée sur les métriques Cloud Monitoring, sélectionnez Métrique Cloud Monitoring dans le menu déroulant sous Type de métrique. Renseignez ensuite les champs restants, puis cliquez sur OK. Pour en savoir plus, consultez la page Scaling basé sur les métriques Cloud Monitoring.
  7. Pour chaque signal d'autoscaling basé sur la planification que vous souhaitez ajouter, développez Planifications d'autoscaling cliquez sur Gérer les planifications, puis cliquez sur Créer une planification.

  8. Dans le nouveau volet Créer une planification de scaling, renseignez les champs obligatoires puis cliquez sur Enregistrer. Dans le volet Planifications de scaling, cliquez sur OK. Pour plus d'informations, consultez la section Scaling basé sur les planifications.

  9. Sous Période d'initialisation, saisissez le nombre de secondes pendant lequel l'application doit s'initialiser, ce qui permet à vos VM de s'initialiser avant que l'autoscaler ne considère ses données d'utilisation comme fiables. Pour en savoir plus, consultez la section Période d'initialisation.

  10. Facultatif : pour activer les contrôles de scaling, cliquez sur Contrôles de scaling vertical, puis cochez la case Activer les contrôles de scaling vertical. Pour plus d'informations, consultez la section sur les contrôles de scaling vertical.

  11. Cliquez sur Enregistrer.

gcloud

Pour créer un autoscaler avec plusieurs signaux, utilisez la commande set-autoscaling. Transmettez plusieurs spécifications de signal à l'aide de leurs indicateurs de ligne de commande respectifs.

Par exemple, la commande suivante crée un autoscaler qui utilise l'utilisation du processeur, la capacité de diffusion de l'équilibrage de charge, deux métriques personnalisées et une planification de scaling. Les options --max-num-replicas et --min-num-replicas limitent les tailles minimale et maximale du groupe d'instances géré.

gcloud compute instance-groups managed set-autoscaling MIG_NAME \
   --target-cpu-utilization=0.8 \
   --target-load-balancing-utilization=0.6 \
   --custom-metric-utilization metric=PATH_TO_CUSTOM_METRIC_1,utilization-target=1000.0,utilization-target-type=GAUGE \
   --custom-metric-utilization metric=PATH_TO_CUSTOM_METRIC_2,utilization-target=2000.0,utilization-target-type=DELTA_PER_SECOND \
   --set-schedule=workday-capacity \
   --schedule-cron="30 8 * * Mon-Fri" \
   --schedule-duration-sec=30600 \
   --schedule-min-required-replicas=10 \
   --schedule-description="Have at least 10 VMs every Monday through Friday from 8:30 AM to 5 PM UTC" \
   --min-num-replicas=1 \
   --max-num-replicas=50

Remplacez l'élément suivant :

  • MIG_NAME : nom d'un MIG
  • PATH_TO_CUSTOM_METRIC_1 et PATH_TO_CUSTOM_METRIC_2 (facultatif) : chemins d'accès aux métriques personnalisées avec un format semblable à custom.cloudmonitoring.googleapis.com/path/to/metric1 et custom.cloudmonitoring.googleapis.com/path/to/metric2. Pour en savoir plus, consultez la page Métriques personnalisées.

Vous ne pouvez transmettre qu'une option pour chaque type de métrique par commande gcloud, à l'exception des métriques personnalisées. Pour les métriques personnalisées, vous pouvez fournir plusieurs métriques personnalisées dans une seule commande en répétant l'option --custom-metric-utilization.

Pour en savoir plus sur la configuration des options pour chaque type de signal d'autoscaling, consultez les pages suivantes :

REST

Pour créer un autoscaler, utilisez la méthode autoscalers.insert pour un MIG zonal ou la méthode regionAutoscalers.insert pour un MIG régional.

Par exemple, la requête suivante crée un autoscaler qui utilise l'utilisation du processeur, la capacité de diffusion de l'équilibrage de charge, deux métriques personnalisées et deux planifications de scaling. Les champs maxNumReplicas et minNumReplicas limitent les tailles minimale et maximale du groupe d'instances géré.

POST https://compute.googleapis.com/compute/v1/projects/PROJECT/zones/ZONE/autoscalers

{
  "autoscalingPolicy" : {
    "cpuUtilization":{
      "utilizationTarget": 0.8
    },
    "loadBalancingUtilization":{
      "utilizationTarget": 0.6
    },
    "customMetricUtilizations":[
      {
        "metric": "PATH_TO_CUSTOM_METRIC_1",
        "utilizationTarget": 1000,
        "utilizationTargetType":"GAUGE"
      },
      {
        "metric": "PATH_TO_CUSTOM_METRIC_2",
        "utilizationTarget": 2000,
        "utilizationTargetType": "DELTA_PER_SECOND"
      }
    ],
    "scalingSchedules": {
      "workday-capacity": {
        "minRequiredReplicas": 10,
        "schedule": "30 8 * * Mon-Fri",
        "durationSec": 30600,
        "description": "Have at least 10 VMs every Monday through Friday from 8:30 AM to 5 PM UTC"
      },
      "january-30-2030-schedule": {
        "minRequiredReplicas": 30,
        "schedule": "0 0 30 1 * 2030",
        "timeZone": "America/New_York",
        "durationSec": 86400,
        "description": "Schedule a minimum of 30 VMs all day for January 30, 2030"
      }
    },
    "maxNumReplicas": 50,
    "minNumReplicas": 1
  },
  "target": "https://www.googleapis.com/compute/v1/projects/myproject/zones/us-central1-a/instanceGroupManagers/MIG_NAME",
  "name": "MIG_NAME"
}

Remplacez l'élément suivant :

  • PROJECT : ID de votre projet
  • ZONE : zone où se trouve votre groupe d'instances géré
  • MIG_NAME : nom d'un MIG
  • PATH_TO_CUSTOM_METRIC_1 et PATH_TO_CUSTOM_METRIC_2 (facultatif) : chemins d'accès aux métriques personnalisées avec un format semblable à custom.cloudmonitoring.googleapis.com/path/to/metric1 et custom.cloudmonitoring.googleapis.com/path/to/metric2. Pour en savoir plus, consultez la page Métriques personnalisées.

Comme le montre cet exemple, vous pouvez fournir plusieurs métriques personnalisées et planifications de scaling dans la même requête.

Pour en savoir plus sur la configuration des champs pour chaque type de signal d'autoscaling, consultez les pages suivantes :