Effectuer un scaling basé sur l'utilisation du processeur ou la capacité de diffusion de l'équilibrage de charge

Dans sa forme la plus simple, l'autoscaling consiste à effectuer un scaling en fonction de l'utilisation du processeur par un groupe d'instances de machines virtuelles. Vous pouvez également choisir d'effectuer un scaling en fonction de la capacité de diffusion de l'équilibrage de charge HTTP(S) d'un groupe d'instances.

Ce document décrit ces deux options.

Avant de commencer

Autoscaling basé sur l'utilisation du processeur

Vous pouvez procéder à un autoscaling en fonction de l'utilisation moyenne du processeur d'un groupe d'instances géré. L'utilisation de cette stratégie permet à l'autoscaler de collecter les données d'utilisation du processeur associées aux instances du groupe et de déterminer si un scaling est nécessaire. Vous définissez l'utilisation du processeur cible que l'autoscaler doit gérer et l'autoscaler s'occupe de maintenir ce niveau.

L'autoscaler traite l'objectif d'utilisation du processeur comme une fraction de l'utilisation moyenne de tous les processeurs virtuels au fil du temps dans le groupe d'instances. Si l'utilisation moyenne de l'ensemble de vos processeurs virtuels dépasse l'utilisation cible, l'autoscaler ajoute des machines virtuelles. Par exemple, définir une utilisation cible de 0,75 indique à l'autoscaler de maintenir une utilisation moyenne de 75 % parmi tous les processeurs virtuels du groupe d'instances.

Activer l'autoscaling basé sur l'utilisation du processeur

Console


  1. Accéder à la page Groupes d'instances.
  2. Si vous disposez d'un groupe d'instances, sélectionnez-le et cliquez sur Modifier le groupe. Si vous n'en avez pas, cliquez sur Créer un groupe d'instances.
  3. Dans Autoscaling, sélectionnez Activé.
  4. Sous Autoscaling basé sur, sélectionnez Utilisation.
  5. Saisissez l'utilisation du processeur cible souhaitée. Cette valeur est traitée comme un pourcentage. Par exemple, pour une utilisation du processeur à 60 %, saisissez 60.
  6. Indiquez une valeur correspondant au nombre maximal d'instances souhaité dans ce groupe d'instances. Vous pouvez également définir le nombre minimal d'instances et l'intervalle entre chaque période d'autoscaling. La période d'attente correspond au nombre de secondes pendant lesquelles l'autoscaler doit attendre le démarrage d'une VM avant de commencer à collecter des informations. Cela tient compte du temps nécessaire à l'initialisation d'une VM, pendant lequel les données collectées ne sont pas fiables pour l'autoscaling. Par défaut, l'intervalle entre chaque période d'autoscaling est de 60 secondes.
  7. Enregistrez les modifications.

gcloud


Utilisez la sous-commande set-autoscaling pour activer l'autoscaling pour un groupe d'instances géré. Par exemple, la commande suivante crée un autoscaler dont l'objectif d'utilisation du processeur est de 75 %. Outre le paramètre --target-cpu-utilization, le paramètre --max-num-replicas est également obligatoire lors de la création d'un autoscaler :

gcloud compute instance-groups managed set-autoscaling example-managed-instance-group \
    --max-num-replicas 20 \
    --target-cpu-utilization 0.75 \
    --cool-down-period 90

Vous pouvez également utiliser l'indicateur --cool-down-period, qui indique à l'autoscaler combien de secondes il doit attendre après le démarrage d'une nouvelle instance avant de prendre en compte les données de cette nouvelle instance. Cette période d'attente tient compte du temps nécessaire à l'initialisation de l'instance, pendant lequel les données d'utilisation collectées ne sont pas fiables pour l'autoscaling. Une fois la période d'attente écoulée, l'autoscaler commence à inclure les données d'utilisation de l'instance pour déterminer si le groupe doit évoluer. Par défaut, la période d'attente entre chaque période d'autoscaling est de 60 secondes.

Vous pouvez vérifier que l'autoscaling est activé à l'aide de la sous-commande instance-groups managed describe, qui décrit le groupe d'instances géré correspondant et fournit des informations sur les fonctionnalités d'autoscaling de ce groupe d'instances :

gcloud compute instance-groups managed describe example-managed-instance-group

Pour obtenir la liste des commandes et indicateurs gcloud disponibles, consultez la référence .

API


Remarque : Même si l'autoscaling est une fonctionnalité des groupes d'instances gérés, il s'agit d'une ressource d'API distincte. Gardez cela à l'esprit lorsque vous créez des demandes d'API pour l'autoscaling.

Dans l'API, envoyez une requête POST à la méthode autoscalers.insert :

POST https://compute.googleapis.com/compute/v1/projects/[PROJECT_ID]/zones/[ZONE]/autoscalers/

Le corps de votre requête doit contenir les champs name, target et autoscalingPolicy. autoscalingPolicy doit définir cpuUtilization et maxNumReplicas.

Vous pouvez également utiliser le champ coolDownPeriodSec, qui indique à l'autoscaler combien de secondes il devra attendre après le démarrage d'une nouvelle instance avant de prendre en compte les données de cette nouvelle instance. Cette période d'attente tient compte du temps nécessaire à l'initialisation de l'instance, pendant lequel les données d'utilisation collectées ne sont pas fiables pour l'autoscaling. Une fois la période d'attente écoulée, l'autoscaler commence à inclure les données d'utilisation de l'instance pour déterminer si le groupe doit évoluer. Par défaut, la période d'attente entre chaque période d'autoscaling est de 60 secondes.

{
 "name": "example-autoscaler",
 "target": "https://compute.googleapis.com/compute/v1/projects/myproject/zones/us-central1-f/instanceGroupManagers/example-managed-instance-group",
 "autoscalingPolicy": {
    "maxNumReplicas": 10,
    "cpuUtilization": {
       "utilizationTarget": 0.8
     },
    "coolDownPeriodSec": 90
  }
}

Pour plus d'informations sur l'activation de l'autoscaling en fonction de l'utilisation du processeur, suivez le didacticiel Utilisation de l'autoscaling pour les applications hautement évolutives.

Comment l'autoscaler gère une utilisation intensive du processeur

En période d'utilisation intensive du processeur, si le taux d'utilisation atteint près de 100 %, l'autoscaler estime que le groupe est peut-être déjà surchargé. Dans ce cas, l'autoscaler augmente le nombre de machines virtuelles de 50 % au maximum.

Autoscaling basé sur la capacité de diffusion de l'équilibrage de charge HTTP(S)

Compute Engine est compatible avec l'équilibrage de charge au sein de vos groupes d'instances. Vous pouvez utiliser l'autoscaling en conjonction avec l'équilibrage de charge en configurant un autoscaler dont le fonctionnement est basé sur la charge de vos instances.

Un équilibreur de charge HTTP(S) répartit la charge sur les services de backend, ce qui permet de distribuer le trafic entre les groupes d'instances. Dans le service de backend, vous pouvez définir la capacité de diffusion de l'équilibrage de charge des groupes d'instances associés au backend par le biais des options suivantes : utilisation maximale du processeur, nombre maximal de requêtes par seconde (RPS) ou nombre maximal de requêtes par seconde du groupe. Lorsqu'un groupe d'instances atteint la capacité de traitement, le service backend commence à envoyer le trafic vers un autre groupe d'instances.

Lorsque vous associez un autoscaler à un équilibreur de charge HTTP, l'autoscaler fait évoluer le groupe d'instances géré pour maintenir une fraction de la capacité de traitement d'équilibrage de charge.

Supposons par exemple que la capacité de diffusion de l'équilibrage de charge d'un groupe d'instances géré soit définie sur 100 RPS par instance. Si vous créez un autoscaler avec la règle d'équilibrage HTTP(S) et que vous définissez un niveau d'utilisation cible de 0,8 ou 80 %, l'autoscaler ajoute ou supprime des instances du groupe d'instances géré afin de maintenir la capacité de diffusion à 80 % de sa capacité totale, soit 80 RPS par instance.

Le schéma suivant illustre l'interaction de l'autoscaler avec un groupe d'instances géré et un service backend :

Relations entre l'autoscaler, les groupes d'instances gérés et les services backend d'équilibrage de charge.
L'autoscaler surveille la capacité de diffusion du groupe d'instances géré défini dans le service de backend et effectue un scaling en fonction de l'objectif d'utilisation. Dans cet exemple, la capacité de traitement est mesurée dans la valeur maxRatePerInstance.

Configurations d'équilibrage de charge applicables

Vous pouvez définir l'une des trois options suivantes pour votre équilibrage de charge capacité de diffusion. Lorsque vous créez le backend, vous avez le choix de l'utilisation maximale du processeur, du nombre maximal de requêtes par seconde et du nombre maximal de requêtes par seconde pour l'ensemble du groupe. L'autoscaling fonctionne uniquement avec l'utilisation maximale du processeur et le nombre maximal de requêtes par seconde et par instance, car la valeur de ces paramètres peut être contrôlée en ajoutant ou en supprimant des instances. Par exemple, si vous définissez un backend pour gérer 10 requêtes par seconde et par instance alors que l'autoscaler est configuré pour conserver 80 % de ce débit, l'autoscaler peut ajouter ou supprimer des instances lorsque le nombre de requêtes par seconde et par instance change.

L'autoscaling ne fonctionne pas avec le nombre maximal de requêtes par groupe, car ce paramètre est indépendant du nombre d'instances présentes dans le groupe d'instances. L'équilibreur de charge envoie en continu le nombre maximal de requêtes par groupe au groupe d'instances, quel que soit le nombre d'instances présentes dans le groupe.

Par exemple, si vous définissez le backend pour gérer 100 requêtes maximum par groupe et par seconde, l'équilibreur de charge envoie 100 requêtes par seconde au groupe, que le groupe ait deux ou 100 instances. Cette valeur ne peut pas être ajustée. L'autoscaling ne fonctionne donc pas avec une configuration d'équilibrage de charge qui utilise le nombre maximal de requêtes par seconde et par groupe.

Activer l'autoscaling basé sur la capacité de diffusion de l'équilibrage de charge

Console


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

    Accéder à la page Groupes d'instances

  2. Si vous disposez d'un groupe d'instances, sélectionnez-le, puis cliquez sur Modifier le groupe. Si vous n'en avez pas, cliquez sur Créer un groupe d'instances.
  3. Dans Autoscaling, sélectionnez Activé.
  4. Dans Autoscaling basé sur, sélectionnez Utilisation de l'équilibrage de charge HTTP.
  5. Saisissez le taux d'utilisation cible de l'équilibrage de charge. Cette valeur est traitée comme un pourcentage. Par exemple, pour 60 % d'utilisation de l'équilibrage de la charge HTTP, saisissez 60.
  6. Indiquez une valeur correspondant au nombre maximal d'instances souhaité dans ce groupe d'instances. Vous pouvez également définir le nombre minimal d'instances et l'intervalle entre chaque période d'autoscaling. L'intervalle entre chaque période d'autoscaling correspond au nombre de secondes que l'autoscaler doit laisser passer, après le démarrage d'une machine virtuelle, avant qu'il ne commence à collecter des informations. Cela tient compte du temps nécessaire à l'initialisation de l'instance, au cours duquel les données collectées ne sont pas fiables pour l'autoscaling. Par défaut, l'intervalle entre chaque période d'autoscaling est de 60 secondes.
  7. Enregistrez les modifications.

gcloud


Pour activer un autoscaler qui évolue en fonction de la capacité de traitement, utilisez la sous-commande set-autoscaling. Par exemple, la commande suivante crée un autoscaler qui effectue un scaling du groupe d'instances géré cible afin de maintenir 60 % de la capacité de diffusion. Outre le paramètre --target-load-balancing-utilization, le paramètre --max-num-replicas est également obligatoire lors de la création d'un autoscaler :

gcloud compute instance-groups managed set-autoscaling example-managed-instance-group \
    --max-num-replicas 20 \
    --target-load-balancing-utilization 0.6 \
    --cool-down-period 90

Vous pouvez également utiliser l'indicateur --cool-down-period, qui indique à l'autoscaler combien de secondes il doit attendre après le démarrage d'une nouvelle instance avant de prendre en compte les données de cette nouvelle instance. Cette période d'attente tient compte du temps nécessaire à l'initialisation de l'instance, pendant lequel les données d'utilisation collectées ne sont pas fiables pour l'autoscaling. Une fois la période d'attente écoulée, l'autoscaler commence à inclure les données d'utilisation de l'instance pour déterminer si le groupe doit évoluer. Par défaut, l'intervalle entre chaque période d'autoscaling est de 60 secondes.

Vous pouvez vérifier que l'autoscaler a bien été créé à l'aide de la sous-commande describe :

gcloud compute instance-groups managed describe example-managed-instance-group

Pour obtenir la liste des commandes et indicateurs gcloud disponibles, consultez la référence .

API


Remarque : Même si l'autoscaling est une fonctionnalité des groupes d'instances gérés, il s'agit d'une ressource d'API distincte. Gardez cela à l'esprit lorsque vous créez des requêtes API pour l'autoscaling.

Dans l'API, envoyez une requête POST à la méthode autoscalers.insert :

POST https://compute.googleapis.com/compute/v1/projects/[PROJECT_ID]/zones/[ZONE]/autoscalers/

Le corps de votre requête doit contenir les champs name, target et autoscalingPolicy. autoscalingPolicy doit définir loadBalancingUtilization.

Vous pouvez également utiliser le champ coolDownPeriodSec, qui indique à l'autoscaler combien de secondes il devra attendre après le démarrage d'une nouvelle instance avant de prendre en compte les données de cette nouvelle instance. Cette période d'attente tient compte du temps nécessaire à l'initialisation de l'instance, pendant lequel les données d'utilisation collectées ne sont pas fiables pour l'autoscaling. Une fois la période d'attente écoulée, l'autoscaler commence à inclure les données d'utilisation de l'instance pour déterminer si le groupe doit évoluer. Par défaut, l'intervalle entre chaque période d'autoscaling est de 60 secondes.

{

 "name": "example-autoscaler",
 "target": "zones/us-central1-f/instanceGroupManagers/example-managed-instance-group",
 "autoscalingPolicy": {
    "maxNumReplicas": 20,
    "loadBalancingUtilization": {
       "utilizationTarget": 0.8
     },
    "coolDownPeriodSec": 90
  }
}

Pour plus d'informations sur l'activation de l'autoscaling basé sur la capacité de diffusion de l'équilibrage de charge, suivez le tutoriel Procéder à l'autoscaling d'un service Web à l'échelle mondiale sur Compute Engine.

Autoscaling basé sur l'équilibrage de charge réseau

Un équilibreur de charge réseau distribue la charge à l'aide de protocoles de niveau inférieur tels que TCP et UDP. L'équilibrage de charge réseau vous permet de distribuer le trafic qui n'exploite pas le protocole HTTP(S), tel que SMTP.

Vous pouvez procéder à un autoscaling sur un groupe d'instances géré faisant partie d'un pool cible de l'équilibreur de charge réseau, en le basant sur l'utilisation du processeur ou bien des métriques personnalisées. Pour plus d'informations, consultez la section Autoscaling basé sur l'utilisation du processeur ou la page Effectuer un scaling basé sur les métriques Stackdriver Monitoring.

Cette page vous a-t-elle été utile ? Évaluez-la :

Envoyer des commentaires concernant…

Documentation Compute Engine