Gérer les autoscalers

Vous avez la possibilité d'effectuer des tâches d'administration sur vos autoscalers. Vous pouvez par exemple créer, décrire, mettre à jour, arrêter ou encore supprimer un autoscaler en vous aidant des instructions fournies sur cette page.

Pour en savoir plus sur l'autoscaling des groupes d'instances gérés (MIG), consultez la présentation.

Avant de commencer

Créer un autoscaler

La création d'un autoscaler est légèrement différente selon la règle d'autoscaling que vous souhaitez utiliser. Pour en savoir plus sur la création d'un autoscaler, consultez les pages :

Obtenir des informations sur un autoscaler

Si vous souhaitez obtenir plus d'informations sur un autoscaler spécifique ou vérifier qu'un autoscaler a bien été créé, utilisez la console, la sous-commande gcloud compute instance-groups managed describe ou la méthode get de l'API Compute Engine pour une ressource d'autoscaler zonale ou régionale.

Console

  1. Dans Cloud Console, 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 pour ouvrir la page d'informations concernant le groupe.
  3. Cliquez sur Détails pour afficher les détails du groupe, y compris ses paramètres d'autoscaling.

gcloud

Avec l'outil de ligne de commande gcloud, utilisez la commande describe :

gcloud beta compute instance-groups managed describe instance-group-name

La commande renvoie des détails sur l'autoscaler :

...
autoscaler:
  autoscalingPolicy:
    coolDownPeriodSec: 60
    cpuUtilization:
      utilizationTarget: 0.6
    maxNumReplicas: 20
    minNumReplicas: 10
    mode: 'ON'
    scaleDownControl:
      timeWindowSec: 300
      maxScaledDownReplicas:
        fixed: 3
        calculated: 3
...

API

Pour afficher la ressource d'autoscaler associée à un groupe d'instances géré, utilisez la méthode instanceGroupManagers.get. Pour un groupe d'instances géré régional, remplacez zones/zone par regions/region.

GET https://compute.googleapis.com/compute/beta/projects/myproject/zones/zone/instanceGroupManagers/name
200 OK

{
  ...
  "status": {
    ...
    "autoscaler": "https://www.googleapis.com/compute/beta/projects/my-project/zones/us-east1-c/autoscalers/example-group"
  },
}

Pour récupérer des détails sur la ressource d'autoscaler, utilisez la méthode get de l'autoscaler. Pour un autoscaler régional, remplacez zones/zone par regions/region.

GET https://compute.googleapis.com/compute/beta/projects/myproject/zones/zone/autoscalers/example-autoscaler
200 OK

{
 "kind": "compute#autoscaler",
 "id": "8744945839459481093",
 "creationTimestamp": "2018-09-28T13:02:50.553-07:00",
 "name": "example-group",
 "target": "https://www.googleapis.com/compute/beta/projects/my-project/zones/us-east1-c/instanceGroupManagers/example-group",
 "autoscalingPolicy": {
  "minNumReplicas": 10,
  "maxNumReplicas": 20,
  "mode": "ON",
  "scaleDownControl": {
    "timeWindowSec": 60,
    "maxScaledDownReplicas": {
      "calculated": 3,
      "percent": 15
    }
  },
  "coolDownPeriodSec": 60,
  "cpuUtilization": {
   "utilizationTarget": 0.6
  }
 },
 "zone": "https://www.googleapis.com/compute/beta/projects/my-project/zones/us-east1-c",
 "selfLink": "https://www.googleapis.com/compute/beta/projects/my-project/zones/us-east1-c/autoscalers/example-group",
 "status": "ACTIVE"
}

Mettre à jour un autoscaler

Pour mettre à jour un autoscaler, utilisez Google Cloud Console, l'outil gcloud ou l'API Compute Engine.

Lorsque vous mettez à jour un autoscaler, la propagation des modifications peut prendre un certain temps, et il peut s'écouler quelques minutes avant que vos nouveaux paramètres ne soient pris en compte.

console

  1. Dans Cloud Console, 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 pour ouvrir la page d'informations concernant le groupe.
  3. Cliquez sur Modifier le groupe pour afficher et mettre à jour la configuration actuelle du groupe, y compris ses paramètres d'autoscaling.
  4. Cliquez sur Enregistrer lorsque vous avez terminé.

gcloud

Utilisez la commande update-autoscaling.

gcloud compute instance-groups managed update-autoscaling name \
        --max-num-replicas max-num ...

Pour obtenir des instructions sur la création d'un autoscaler, consultez la section Créer un autoscaler.

API

Pour mettre à jour une ressource d'autoscaler pour un groupe d'instances géré zonal, utilisez la méthode patch de l'autoscaler zonal. Pour un groupe d'instances géré régional, utilisez la méthode patch de l'autoscaler régional. Fournissez un corps de requête contenant la nouvelle configuration.

PATCH https://compute.googleapis.com/compute/v1/projects/myproject/zones/us-central1-f/autoscalers/example-autoscaler

{
 "autoscalingPolicy": {
  "maxNumReplicas": 20
 }
}
200 OK

{
 "kind": "compute#operation",
 "id": "4244494732310423322",
 "name": "operation-1556912627871-58800f8216ed7-74ab1720-7d360603",
 "zone": "https://www.googleapis.com/compute/v1/projects/myproject/zones/us-central1-f",
 "operationType": "compute.autoscalers.patch",
 "targetLink": "https://www.googleapis.com/compute/v1/projects/myproject/zones/us-central1-f/autoscalers/example-autoscaler",
 "targetId": "340775527929467142",
 "status": "RUNNING",
 ...
}

Lorsque vous effectuez des requêtes qui modifient des données, une ressource zoneOperations (Opérations de la zone) ou regionOperations (Opérations de la région) est renvoyée. Vous pouvez l'interroger pour vérifier l'état de votre modification.

Désactiver un autoscaler ou lui appliquer une restriction

Vous pouvez désactiver un autoscaler pour l'empêcher temporairement de procéder au scaling du groupe d'instances géré, ou lui appliquer une restriction de sorte qu'il ne puisse qu'augmenter le nombre d'instances du groupe. Cette fonctionnalité est utile lorsque vous souhaitez :

  • examiner les instances de VM sans interférence liée au scaling ;
  • reconfigurer plusieurs propriétés de votre groupe d'instances géré en empêchant le déclenchement d'actions de scaling lorsque votre groupe n'est que partiellement reconfiguré ;
  • maintenir la capacité du groupe d'instances géré pour être en mesure d'effectuer un rollback rapide lors de la redirection d'une charge de travail vers un nouveau groupe d'instances géré.

Lorsque vous réactivez l'autoscaler, celui-ci reprend son fonctionnement normal.

Dans Google Cloud Console, l'outil gcloud ou l'API Compute Engine, définissez le paramètre mode d'un autoscaler sur :

  • OFF : désactive temporairement l'autoscaling. Utilisez ce mode pour empêcher toute modification automatique de la taille du groupe d'instances géré. La configuration de l'autoscaling reste inchangée. Vous pourrez donc réactiver l'autoscaling par la suite.
  • ONLY_UP : limite l'autoscaling uniquement à l'ajout de nouvelles instances de VM. Utilisez ce mode pour empêcher la réduction du groupe et permettre à celui-ci de provisionner des VM supplémentaires en cas d'augmentation de la charge.
  • ON : active toutes les opérations d'autoscaling conformément aux règles définies.

console

  1. Dans Cloud Console, 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 pour ouvrir la page d'informations concernant le groupe.
  3. Cliquez sur Modifier le groupe pour afficher la configuration actuelle du groupe, y compris ses paramètres d'autoscaling.
  4. Sous Autoscaling, définissez le Mode autoscaling pour désactiver ou restreindre l'autoscaling pour le groupe, ou pour réactiver l'autoscaler.

gcloud

Utilisez la commande set-autoscaling avec l'option --mode pour désactiver, restreindre ou réactiver un autoscaler.

gcloud compute instance-groups managed set-autoscaling name 
--mode mode

Remplacez les éléments suivants :

  • mode :
    • OFF pour désactiver l'autoscaler, mais conserver sa configuration ;
    • ONLY_UP pour uniquement empêcher l'autoscaler d'ajouter des instances ;
    • ON pour réactiver toutes les activités de l'autoscaler conformément aux règles définies.

API

Pour mettre à jour le mode d'une ressource d'autoscaler pour un groupe d'instances géré zonal, utilisez la méthode patch de l'autoscaler. Pour un groupe d'instances géré régional, utilisez la méthode patch de l'autoscaler régional. Fournissez un corps de requête incluant la propriété autoscalingPolicy.mode.

PATCH https://www.googleapis.com/compute/v1/projects/my-project/regions/us-central1-f/autoscalers?autoscaler=my-autoscaler

{
  "autoscalingPolicy": {
    "mode":"mode"
  }
}

Remplacez les éléments suivants :

  • mode :
    • OFF pour désactiver l'autoscaler, mais conserver sa configuration ;
    • ONLY_UP pour uniquement empêcher l'autoscaler d'ajouter des instances ;
    • ON pour réactiver toutes les activités de l'autoscaler conformément aux règles définies.

Contrôler le taux de scaling d'un autoscaler (version bêta)

Si l'initialisation de vos charges de travail prend plusieurs minutes, configurez des contrôles de scaling pour réduire le risque de latence des réponses et de panne imputable à des événements de scaling brusques. Plus précisément, si vous prévoyez la survenue régulière de pics de charge peu après les baisses de charge, vous pouvez limiter le taux de scaling pour empêcher l'autoscaler de supprimer plus d'instances de VM d'un groupe d'instances géré que votre charge de travail ne peut tolérer.

Configurer des contrôles de scaling

Configurez les contrôles de scaling à l'aide de l'outil gcloud ou de l'API Compute Engine. La configuration des contrôles de scaling est facultative. Par défaut, les contrôles de scaling ne sont pas configurés. Si aucun contrôle de scaling n'est défini, l'autoscaler s'appuie toujours sur son mécanisme de stabilisation par défaut. Autrement dit, il maintient la taille recommandée au niveau requis pour absorber le pic de charge pendant la période de stabilisation des 10 dernières minutes.

gcloud

Vous pouvez configurer des contrôles de scaling lors de la création ou de la mise à jour d'un autoscaler.

Configurer des contrôles de scaling lors de la création d'un autoscaler

Définissez des contrôles de scaling lors de la création d'un autoscaler pour un groupe d'instances géré en utilisant l'option --scale-in-control avec la commande gcloud beta compute instance-groups managed set-autoscaling. Par exemple, utilisez la commande suivante pour configurer l'autoscaling pour un objet example-group :

gcloud beta compute instance-groups managed set-autoscaling instance-group-name \
    --target-cpu-utilization 0.6 \
    --max-num-replicas 50 \
    --scale-in-control max-scaled-in-replicas=max-scale-in-replicas,time-window=time-window

Configurer des contrôles de scaling lors de la mise à jour d'un autoscaler

Mettez à jour les contrôles de scaling dans l'autoscaler existant d'un groupe d'instances géré en utilisant l'option --scale-in-control avec la commande gcloud beta compute instance-groups managed update-autoscaling. Par exemple, utilisez la commande suivante pour définir des contrôles de scaling dans une configuration d'autoscaling existante pour example-group :

gcloud beta compute instance-groups managed update-autoscaling instance-group-name \
    --scale-in-control max-scaled-in-replicas=max-scale-in-replicas,time-window=time-window

Remplacez les éléments suivants :

  • instance-group-name : nom du MIG à mettre à jour.
  • max-scale-in-replicas : nombre maximal de VM pouvant être déduit de la taille maximale, provenant de la fenêtre temporelle de fin spécifiée. Le nombre d'instances de VM spécifié peut faire l'objet d'un scaling en une seule fois. Votre service devrait donc pouvoir se permettre de perdre autant de VM à la fois. Vous pouvez spécifier un nombre de VM ou un pourcentage. Utilisez le signe % pour les pourcentages, par exemple : 50%.
  • time-window : fenêtre temporelle de fin dans laquelle la taille maximale est obtenue. L'autoscaling ne dépassera pas le nombre maximal d'instances dupliquées autorisé, lequel est aligné sur la taille maximale obtenue dans cette fenêtre temporelle de fin. Spécifiez cette valeur en secondes dans un intervalle de [60, 3 600].

Par exemple, imaginons que vous définissiez la fenêtre temporelle sur 1 800 secondes (30 minutes). Lors du calcul de la taille actuelle recommandée pour le groupe d'instances géré, l'autoscaler utilise la taille maximale des 30 dernières minutes (100 VM) et max-scaled-in-replicas (10 VM, par exemple). Il ne définit donc pas la taille actuelle recommandée pour le groupe en dessous de 90 VM (100-10).

API

Configurez les contrôles de scaling en définissant les champs maxScaledDownReplicas et timeWindowSec dans la structure autoscalingPolicy.scaleDownControl d'une ressource d'autoscaler zonale ou régionale. Il n'existe aucune valeur par défaut pour ces champs. Vous devez fournir des valeurs pour les deux champs.

Vous pouvez configurer des contrôles de scaling lors de la création ou de la mise à jour d'un autoscaler.

Configurer des contrôles de scaling lors de la création d'un autoscaler

Pour un groupe d'instances géré zonal, utilisez la méthode autoscaler insert zonale. Pour un groupe d'instances géré régional, utilisez la méthode regionAutoscalers insert.

POST
https://www.googleapis.com/compute/beta/projects/project-id/regions/region/autoscalers

{
  "name": "name",
  "target": "https://compute.googleapis.com/compute/v1/projects/myproject/regions/region/instanceGroupManagers/instance-group-name",
  "autoscalingPolicy": {
    "minNumReplicas": 1,
    "maxNumReplicas": 5,
    "coolDownPeriodSec": 60,
    "cpuUtilization": {
      "utilizationTarget": 0.8
    },
    "scaleDownControl": {
      "maxScaledDownReplicas": {
           "fixed": max-scale-down-replicas
      },
      "timeWindowSec": time-window
    }
  }
}

Pour en savoir plus sur la création d'un autoscaler, consultez les articles suivants :

Configurer des contrôles de scaling lors de la mise à jour d'un autoscaler

Pour un groupe d'instances géré zonal, utilisez la méthode autoscaler patch zonale. Pour un groupe d'instances géré régional, utilisez la méthode regionAutoscalers patch.

PATCH
https://www.googleapis.com/compute/beta/projects/project-id/regions/region/autoscalers?autoscaler=name

{
  "autoscalingPolicy": {
    "minNumReplicas": 1,
    "maxNumReplicas": 5,
    "coolDownPeriodSec": 60,
    "cpuUtilization": {
      "utilizationTarget": 0.8
    },
    "scaleDownControl": {
      "maxScaledDownReplicas": {
           "fixed": max-scale-down-replicas
      },
      "timeWindowSec": time-window
    }
  }
}

Remplacez les éléments suivants :

  • name : nom de l'autoscaler à créer. Vous pouvez nommer votre autoscaler en fonction du groupe d'instances géré qui l'utilisera ou lui donner un autre nom.
  • instance-group-name : nom du groupe d'instances géré auquel ajouter l'autoscaler. Pour un groupe d'instances géré régional, remplacez zones/zone par regions/region.
  • max-scale-down-replicas : nombre maximal de VM pouvant être déduit de la taille cible maximale recommandée, provenant de la fenêtre temporelle de fin spécifiée. Le nombre d'instances de VM spécifié peut faire l'objet d'un scaling en une seule fois. Votre service devrait donc pouvoir se permettre de perdre autant de VM à la fois. Vous pouvez spécifier un nombre de VM ou un pourcentage. Utilisez la valeur maxScaledDownReplicas.percentage pour spécifier une valeur en pourcentage.
  • time-window : fenêtre temporelle de fin dans laquelle la taille maximale recommandée est obtenue. L'autoscaling ne dépassera pas le nombre maximal d'instances dupliquées autorisé, lequel est aligné sur la taille maximale obtenue dans cette fenêtre temporelle de fin. Spécifiez cette valeur en secondes dans un intervalle [60, 3 600], par exemple : 1800.

Par exemple, imaginons que vous définissiez la fenêtre temporelle sur 1 800 secondes (30 minutes). Lors du calcul de la taille actuelle recommandée pour le groupe d'instances géré, l'autoscaler utilise la taille maximale des 30 dernières minutes (100 VM) et max-scaled-down-replicas (10 VM, par exemple). Il ne définit donc pas la taille actuelle recommandée pour le groupe en dessous de 90 VM (100-10).

Pour en savoir plus sur le fonctionnement des contrôles de scaling, consultez la page Comprendre les décisions des autoscalers.

Obtenir la configuration actuelle des contrôles de scaling

Pour obtenir la configuration actuelle des contrôles de scaling, consultez la section Obtenir des informations sur un autoscaler.

Supprimer les contrôles de scaling

L'API Compute Engine vous permet de supprimer les contrôles de scaling afin de lever les restrictions sur la durée et l'ampleur des opérations de scaling.

Si aucun contrôle de scaling n'est défini, l'autoscaler s'appuie toujours sur son mécanisme de stabilisation par défaut. Autrement dit, il maintient la taille recommandée au niveau requis pour absorber le pic de charge pendant la période de stabilisation des 10 dernières minutes.

Pour supprimer les contrôles de scaling, utilisez la méthode autoscalers.patch et fournissez une configuration vide pour les contrôles de scaling. Pour un groupe d'instances géré régional, remplacez zones/zone par regions/region.

PATCH
https://www.googleapis.com/compute/beta/projects/project-id/zones/zone/autoscalers?autoscaler=name

{
  "autoscalingPolicy": {
    "scaleDownControl": null
  }
}

Remplacez les éléments suivants :

  • name : nom de l'autoscaler à mettre à jour. Pour obtenir la liste des autoscalers existants et de leurs groupes d'instances gérés cibles, utilisez la méthode zonale ou régionale aggregatedList.

Supprimer un autoscaler

Vous pouvez supprimer définitivement votre ressource d'autoscaler à l'aide de Google Cloud Console, de l'outil gcloud ou de l'API Compute Engine. Si vous souhaitez arrêter temporairement l'autoscaling et conserver la ressource d'autoscaler et sa configuration, vous pouvez désactiver l'autoscaler au lieu de le supprimer.

console

  1. Dans Cloud Console, 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 pour ouvrir la page d'informations concernant le groupe.

  3. Cliquez sur Modifier le groupe pour afficher la configuration actuelle du groupe, y compris ses paramètres d'autoscaling.

  4. Sous Autoscaling, cliquez sur Supprimer la configuration de l'autoscaling pour arrêter l'autoscaler et supprimer sa configuration.

gcloud

Utilisez la commande stop-autoscaling pour arrêter un autoscaler et supprimer sa configuration.

gcloud compute instance-groups managed stop-autoscaling name

L'arrêt d'un autoscaler le supprime du groupe d'instances géré. Si vous souhaitez redémarrer l'autoscaler, vous devez le recréer à l'aide de la commande set-autoscaling.

Si vous supprimez un groupe d'instances géré à l'aide de l'outil gcloud, tous les autoscalers associés à ce groupe sont également supprimés.

API

Pour arrêter un autoscaler et supprimer sa configuration, appelez la méthode delete. Pour un groupe d'instances géré régional, remplacez zones/zone par regions/region.

 DELETE https://compute.googleapis.com/compute/v1/projects/myproject/zones/zone/autoscalers/autoscaler-name

Commentaires

Nous souhaitons en savoir plus sur vos cas d'utilisation, les défis que vous rencontrez ou vos impressions sur l'autoscaling. Nous vous invitons à nous faire part de vos commentaires à l'adresse suivante : mig-discuss@google.com.

Étapes suivantes