Procéder au scaling d'une instance

Vous pouvez faire évoluer une instance AlloyDB pour ajuster la capacité et les performances de votre cluster afin de répondre aux besoins changeants de votre charge de travail. Le scaling permet de gérer les coûts et de gérer plus facilement les pics de trafic.

Vous effectuez un scaling vertical (en modifiant le nombre de vCPU et la RAM) en changeant le type de machine d'une instance principale ou d'une instance de pool de lecture. Vous pouvez effectuer un scaling horizontal en modifiant le nombre de nœuds d'une instance de pool de lecture. Vous pouvez gérer le scaling vertical et horizontal à l'aide de processus manuels. Vous pouvez également gérer le scaling horizontal automatiquement en activant l'autoscaling du pool de lecture.

Vous pouvez effectuer le scaling des instances AlloyDB de différentes manières.

Type de scaling Méthode Automatisation Instances principales Instances de pool de lecture
Verticale Modifier le type de machine Manuel Compatible Compatible
Horizontale Modification du nombre de nœuds… Manuelle et automatique Non compatible Compatible

Avant de commencer

  • Le projet Google Cloud que vous utilisez doit avoir été activé pour accéder à AlloyDB.
  • Vous devez disposer de l'un de ces rôles IAM dans le projet Google Cloud que vous utilisez :
    • roles/alloydb.admin (rôle IAM prédéfini d'administrateur AlloyDB)
    • roles/owner (rôle IAM de base "Propriétaire")
    • roles/editor (rôle IAM de base Éditeur)

    Si vous ne disposez d'aucun de ces rôles, contactez l'administrateur de votre organisation pour demander l'accès.

Effectuer le scaling manuel d'une instance

Cette section décrit les méthodes manuelles permettant de faire évoluer vos instances AlloyDB. Par exemple, vous pouvez faire évoluer verticalement une instance en modifiant son type de machine et faire évoluer horizontalement une instance de pool de lecture en modifiant son nombre de nœuds.

Procéder au scaling du type de machine d'une instance

Vous pouvez faire évoluer verticalement les instances principales et de pool de lecture en modifiant le type de machine de l'instance, ce qui modifie son nombre de vCPU et sa RAM.

Console

  1. Dans la console Google Cloud , accédez à la page Clusters.

    accéder aux clusters

  2. Cliquez sur un cluster dans la colonne Nom de la ressource.

  3. Sur la page Présentation, accédez à la section Instances dans votre cluster, puis cliquez sur Modifier l'instance principale ou Modifier le pool de lecture.

  4. Sélectionnez l'une des séries de machines suivantes :

    • C4A (série de machines Google Axion)
    • N2 (série de machines x86). Il s'agit de la série de machines par défaut.
    • C4 (série de machines x86)
    • Z3 (série de machines basées sur Intel Xeon)
  5. Sélectionnez un type de machine.

    • C4A est compatible avec 1, 2, 4, 8, 16, 32, 48, 64 et 72 vCPU.
    • N2 accepte 2, 4, 8, 16, 32, 64, 96 et 128 vCPU.
    • La série C4 est compatible avec 4, 8, 16, 24, 32, 48, 96, 144, 192 et 288 vCPU.
    • Z3 est compatible avec 8, 14, 16, 22, 32, 44 et 88 vCPU.

    Pour en savoir plus sur l'utilisation de la série de machines C4A basée sur Axion, y compris le type de machine à 1 vCPU, consultez Remarques concernant l'utilisation de la série de machines C4A basée sur Axion.

  6. Cliquez sur Mettre à jour l'instance ou Mettre à jour le pool de lecture.

gcloud

Pour utiliser la gcloud CLI, vous pouvez installer et initialiser la Google Cloud CLI, ou utiliser Cloud Shell.

Utilisez la commande gcloud alloydb instances update pour modifier le type de machine de l'instance principale.

gcloud alloydb instances update INSTANCE_ID \
     --cpu-count=CPU_COUNT \
     --machine-type=MACHINE_TYPE \
     --region=REGION_ID \
     --cluster=CLUSTER_ID \
     --project=PROJECT_ID

Remplacez les éléments suivants :

  • INSTANCE_ID : ID de l'instance que vous mettez à jour.

  • CPU_COUNT : nombre de processeurs virtuels N2 que vous souhaitez pour l'instance. N2 est la valeur par défaut. Les valeurs valides sont les suivantes:

    • 2 : 2 vCPU, 16 Go de RAM
    • 4 : 4 vCPU, 32 Go de RAM
    • 8 : 8 vCPU, 64 Go de RAM
    • 16 : 16 vCPU, 128 Go de RAM
    • 32 : 32 vCPU, 256 Go de RAM
    • 64 : 64 vCPU, 512 Go de RAM
    • 96 : 96 vCPU, 768 Go de RAM
    • 128 : 128 vCPU, 864 Go de RAM

  • MACHINE_TYPE : facultatif. Sélectionnez un type de machine dans la liste des types de machines compatibles, par exemple n2-highmem-4, c4-highmem-4-lssd ou c4a-highmem-4-lssd. Pour en savoir plus, consultez Choisir un type de machine AlloyDB.

    Lorsque vous utilisez MACHINE_TYPE et CPU_COUNT ensemble, les valeurs de CPU_COUNT et MACHINE_TYPE doivent correspondre, sinon une erreur se produit.

  • REGION_ID : région où se trouve l'instance.

  • CLUSTER_ID : ID du cluster où l'instance est placée.

  • PROJECT_ID : ID du projet dans lequel le cluster est placé.

Si la commande renvoie un message d'erreur incluant l'expression invalid cluster state MAINTENANCE, cela signifie que le cluster fait l'objet d'une maintenance de routine. Cela empêche temporairement la reconfiguration de l'instance. Exécutez à nouveau la commande une fois que le cluster est revenu à l'état READY. Pour vérifier l'état du cluster, consultez Afficher les détails du cluster.

Accélérer les mises à jour des types de machines

Pour mettre à jour le type de machine plus rapidement, utilisez l'option FORCE_APPLY avec la commande gcloud beta alloydb instances update.

 gcloud beta alloydb instances update INSTANCE_ID \
  --cpu-count=CPU_COUNT \
  --machine-type=MACHINE_TYPE \
  --region=REGION_ID \
  --cluster=CLUSTER_ID \
  --project=PROJECT_ID \
  --update-mode=FORCE_APPLY
  • L'instance subit environ une minute de temps d'arrêt.

  • Le type de machine d'une instance change au bout de 10 à 15 minutes.

Terraform

Pour modifier le type de machine d'une instance, mettez à jour le bloc machine_config dans la ressource google_alloydb_instance.

resource "google_alloydb_instance" "default" {
  cluster       = google_alloydb_cluster.default.name
  instance_id   = "alloydb-instance"
  instance_type = "PRIMARY" # or "READ_POOL"

  machine_config {
    cpu_count = 4
  }
}

Effectuer un scaling du nombre de nœuds d'une instance de pool de lecture

AlloyDB vous permet de faire évoluer le nombre de nœuds d'une instance de pool de lecture sans aucun temps d'arrêt au niveau de l'instance. Lorsque vous augmentez le nombre de nœuds, les connexions client ne sont pas affectées.

Lorsque vous réduisez le nombre de nœuds, tous les clients connectés à un nœud en cours d'arrêt peuvent se reconnecter aux autres nœuds à l'aide du point de terminaison de l'instance.

Console

  1. Dans la console Google Cloud , accédez à la page Clusters.

    accéder aux clusters

  2. Cliquez sur un cluster dans la colonne Nom de la ressource.

  3. Sur la page Présentation, accédez à la section Instances dans votre cluster, puis cliquez sur Modifier le pool de lecture.

  4. Dans le champ Nombre de nœuds, saisissez un nombre de nœuds.

  5. Cliquez sur Mettre à jour le pool de lecture.

gcloud

Pour utiliser la gcloud CLI, vous pouvez installer et initialiser la Google Cloud CLI, ou utiliser Cloud Shell.

Utilisez la commande gcloud alloydb instances update pour modifier le nombre de nœuds dans une instance de pool avec accès en lecture.

gcloud alloydb instances update INSTANCE_ID \
    --read-pool-node-count=NODE_COUNT \
    --region=REGION_ID \
    --cluster=CLUSTER_ID \
    --project=PROJECT_ID
  • INSTANCE_ID : ID de l'instance de pool de lecture.

  • NODE_COUNT : nombre de nœuds dans l'instance de pool de lecture. Spécifiez un nombre compris entre 1 et 20 inclus. Notez que vous ne pouvez pas avoir plus de 20 nœuds sur l'ensemble des instances de pool de lecture d'un cluster.

  • REGION_ID : région où se trouve l'instance.

  • CLUSTER_ID : ID du cluster dans lequel se trouve l'instance.

  • PROJECT_ID : ID du projet dans lequel se trouve le cluster.

Si la commande renvoie un message d'erreur incluant l'expression invalid cluster state MAINTENANCE, cela signifie que le cluster fait l'objet d'une maintenance de routine. Cela empêche temporairement la reconfiguration de l'instance. Exécutez à nouveau la commande une fois que le cluster est revenu à l'état READY. Pour vérifier l'état du cluster, consultez Afficher les détails du cluster.

Terraform

Pour modifier le nombre de nœuds dans une instance de pool de lecture, mettez à jour le champ node_count dans le bloc read_pool_config de la ressource google_alloydb_instance.

resource "google_alloydb_instance" "default" {
  cluster       = google_alloydb_cluster.default.name
  instance_id   = "alloydb-read-pool-instance"
  instance_type = "READ_POOL"

  read_pool_config {
    node_count = 3
  }
}

Configurer l'autoscaling du pool de lecture

L'autoscaling des pools de lecture AlloyDB vous permet de modifier automatiquement et de manière adaptative le nombre de nœuds de lecture en fonction de l'utilisation des ressources en temps réel. Cela vous aide à gérer les changements d'utilisation et à réduire les dépenses.

Vous pouvez configurer l'autoscaling à l'aide des règles suivantes :

  • Basé sur l'utilisation du processeur : effectue un scaling du nombre de nœuds en fonction d'une utilisation cible du processeur.
  • Basé sur une planification : effectue un scaling du nombre de nœuds jusqu'à un nombre minimal pendant une période spécifiée.

Vous pouvez utiliser ces règles ensemble. Lorsque plusieurs règles sont actives, l'autoscaler sélectionne celle qui recommande le plus grand nombre de nœuds.

Limites

L'autoscaler de pool de lecture présente les limites suivantes :

  • Répartition de la charge pour les connexions de longue durée : pour établir une répartition uniforme du trafic et utiliser pleinement la capacité ajoutée par l'autoscaling, nous vous recommandons de créer des connexions client. L'autoscaler ne ferme pas les connexions de longue durée existantes lorsqu'il ajoute des nœuds. Par conséquent, le trafic de ces connexions n'est pas acheminé vers les nœuds nouvellement ajoutés.
  • Préchauffage du cache pour les nouveaux nœuds : lorsque l'autoscaler ajoute de nouveaux nœuds, il peut s'écouler quelques minutes avant que leurs caches ne soient préchauffés et qu'ils n'atteignent des performances de requête optimales.

Activer l'autoscaling du pool de lecture sur une nouvelle instance de pool de lecture

Vous pouvez activer et configurer le scaling automatique lorsque vous créez une instance de pool de lecture à l'aide d'une règle basée sur le processeur, d'une règle basée sur une planification ou des deux.

Créer une instance de pool de lecture avec une règle basée sur le processeur

Pour créer une instance de pool de lecture avec une règle de scaling automatique basée sur une utilisation cible du processeur, exécutez la commande suivante :

gcloud beta alloydb instances create INSTANCE_ID \
    --instance-type=READ_POOL \
    --read-pool-node-count=NODE_COUNT \
    --region=REGION_ID \
    --cluster=CLUSTER_ID \
    --project=PROJECT_ID \
    --enable-autoscaler \
    --autoscaler-max-node-count=MAX_NODE_COUNT \
    --autoscaler-cool-down-period-seconds=COOLDOWN_PERIOD \
    --autoscaler-target-cpu-usage=TARGET_CPU_USAGE \
    {--cpu-count=CPU_COUNT | --machine-type=MACHINE_TYPE}

Remplacez les éléments suivants :

  • INSTANCE_ID : ID de l'instance de pool de lecture.

  • NODE_COUNT : nombre minimal de nœuds que l'autoscaler peut créer dans l'instance de pool de lecture. Spécifiez un nombre compris entre 1 et 20 inclus. Vous ne pouvez pas avoir plus de 20 nœuds sur l'ensemble des instances de pool de lecture d'un cluster.

  • REGION_ID : région où se trouve l'instance.

  • CLUSTER_ID : ID du cluster dans lequel l'instance est placée.

  • PROJECT_ID : ID du projet dans lequel le cluster est placé.

  • MAX_NODE_COUNT : nombre maximal de nœuds que l'autoscaler peut créer dans l'instance de pool de lecture. Le nombre total de nœuds sur toutes les instances de pool de lecture d'un même cluster ne peut pas dépasser 20.

  • COOLDOWN_PERIOD : durée en secondes pendant laquelle AlloyDB attend avant de prendre en compte l'utilisation des ressources de l'instance du pool de lecture dans l'algorithme d'autoscaling. La valeur par défaut est de 300 secondes.

  • TARGET_CPU_USAGE : utilisation cible du processeur pour votre instance de pool de lecture, exprimée sous la forme d'une valeur décimale comprise entre 0,0 et 1,0. Par exemple, 0,7 pour 70%.

  • CPU_COUNT : nombre de processeurs virtuels N2 que vous souhaitez pour l'instance. Vous devez indiquer soit --cpu-count, soit --machine-type.

  • MACHINE_TYPE : sélectionnez un type de machine dans la liste des types de machines compatibles, par exemple n2-highmem-4, c4-highmem-4-lssd ou c4a-highmem-4-lssd. Pour en savoir plus, consultez Choisir un type de machine AlloyDB.

Créer une instance de pool de lecture avec une règle basée sur une planification

Pour créer une instance de pool de lecture avec une règle de scaling automatique basée sur une planification qui définit un nombre minimal de nœuds pour une période spécifique, exécutez la commande suivante :

gcloud beta alloydb instances create INSTANCE_ID \
    --instance-type=READ_POOL \
    --read-pool-node-count=NODE_COUNT \
    --region=REGION_ID \
    --cluster=CLUSTER_ID \
    --project=PROJECT_ID \
    --enable-autoscaler \
    --autoscaler-max-node-count=MAX_NODE_COUNT \
    --autoscaler-cool-down-period-seconds=COOLDOWN_PERIOD \
    --autoscaler-set-schedule=SCHEDULE_NAME \
    --autoscaler-schedule-cron-exp=CRON_EXPRESSION \
    --autoscaler-schedule-duration-seconds=DURATION_SECONDS \
    --autoscaler-schedule-time-zone=TIME_ZONE \
    --autoscaler-schedule-min-node-count=MIN_NODE_COUNT \
    --autoscaler-schedule-description="DESCRIPTION" \
    {--cpu-count=CPU_COUNT | --machine-type=MACHINE_TYPE}

Remplacez les éléments suivants :

  • MAX_NODE_COUNT : nombre maximal de nœuds que l'autoscaler peut créer dans l'instance de pool de lecture. Le nombre total de nœuds sur toutes les instances de pool de lecture d'un même cluster ne peut pas dépasser 20.

  • COOLDOWN_PERIOD : durée en secondes pendant laquelle AlloyDB attend avant de prendre en compte l'utilisation des ressources de l'instance du pool de lecture dans l'algorithme d'autoscaling. La valeur par défaut est de 300 secondes.

  • SCHEDULE_NAME : nom unique de la planification de scaling.

  • CRON_EXPRESSION : planification au format cron qui spécifie l'heure de début de l'événement de scaling.

  • DURATION_SECONDS : durée en secondes pendant laquelle la programmation reste active après son démarrage. Après cette période, l'instance effectue un scaling à la baisse pour atteindre le nombre de nœuds déterminé par d'autres règles ou par sa configuration d'origine.

  • TIME_ZONE : fuseau horaire facultatif pour la programmation. Exemple :America/Los_Angeles

  • MIN_NODE_COUNT : nombre minimal de nœuds vers lequel l'autoscaler effectue le scaling de l'instance de pool de lecture lorsque la programmation est active.

  • DESCRIPTION : description textuelle facultative de la programmation.

  • CPU_COUNT : nombre de processeurs virtuels N2 que vous souhaitez pour l'instance. Vous devez indiquer soit --cpu-count, soit --machine-type.

  • MACHINE_TYPE : sélectionnez un type de machine dans la liste des types de machines compatibles, par exemple n2-highmem-4, c4-highmem-4-lssd ou c4a-highmem-4-lssd. Pour en savoir plus, consultez Choisir un type de machine AlloyDB.

Créer une instance de pool de lecture avec des règles basées sur le processeur et la planification

Pour créer une instance de pool de lecture avec des règles de scaling automatique basées sur le processeur et sur la planification, exécutez la commande suivante :

gcloud beta alloydb instances create INSTANCE_ID \
    --instance-type=READ_POOL \
    --read-pool-node-count=NODE_COUNT \
    --region=REGION_ID \
    --cluster=CLUSTER_ID \
    --project=PROJECT_ID \
    --enable-autoscaler \
    --autoscaler-max-node-count=MAX_NODE_COUNT \
    --autoscaler-cool-down-period-seconds=COOLDOWN_PERIOD \
    --autoscaler-target-cpu-usage=TARGET_CPU_USAGE \
    --autoscaler-set-schedule=SCHEDULE_NAME \
    --autoscaler-schedule-cron-exp=CRON_EXPRESSION \
    --autoscaler-schedule-duration-seconds=DURATION_SECONDS \
    --autoscaler-schedule-time-zone=TIME_ZONE \
    --autoscaler-schedule-min-node-count=MIN_NODE_COUNT \
    --autoscaler-schedule-description="DESCRIPTION" \
    {--cpu-count=CPU_COUNT | --machine-type=MACHINE_TYPE}

Pour obtenir une description des espaces réservés utilisés dans cette commande, consultez Créer une instance de pool de lecture avec une règle basée sur le processeur et Créer une instance de pool de lecture avec une règle basée sur une planification.

Activer ou mettre à jour l'autoscaling sur une instance de pool de lecture existante

Vous pouvez activer, désactiver ou modifier les paramètres de scaling automatique sur une instance de pool de lecture existante.

Pour activer l'autoscaling pour la première fois sur une instance existante ou pour mettre à jour une règle existante, utilisez la commande gcloud beta alloydb instances update. Par exemple, pour mettre à jour l'utilisation cible du processeur, exécutez la commande suivante :

gcloud beta alloydb instances update INSTANCE_ID \
    --region=REGION_ID \
    --cluster=CLUSTER_ID \
    --project=PROJECT_ID \
    --enable-autoscaler \
    --autoscaler-target-cpu-usage=NEW_TARGET_CPU_USAGE

Remplacez NEW_TARGET_CPU_USAGE par la nouvelle utilisation cible du processeur que vous souhaitez définir pour votre instance de pool de lecture, exprimée sous la forme d'une valeur décimale comprise entre 0,0 et 1,0.

Pour ajouter une deuxième programmation à une configuration existante, exécutez la commande de mise à jour avec un nouveau nom de programmation. Si le nom de la programmation existe déjà, la commande met à jour la programmation existante. Sinon, elle crée une programmation.

gcloud beta alloydb instances update INSTANCE_ID \
    --region=REGION_ID \
    --cluster=CLUSTER_ID \
    --project=PROJECT_ID \
    --enable-autoscaler \
    --autoscaler-set-schedule=NEW_SCHEDULE_NAME \
    --autoscaler-schedule-cron-exp=CRON_EXPRESSION \
    --autoscaler-schedule-duration-seconds=DURATION_SECONDS \
    --autoscaler-schedule-min-node-count=MIN_NODE_COUNT

Remplacez NEW_SCHEDULE_NAME par le nom unique de la programmation de scaling nouvelle ou mise à jour. Si le nom fourni correspond à une programmation existante, la commande met à jour les paramètres de cette programmation. Si le nom n'existe pas, la commande crée une programmation portant ce nom.

Évaluation des règles d'autoscaling

Lorsque plusieurs règles de scaling automatique sont actives, l'autoscaler évalue chaque règle et choisit celle qui recommande le plus grand nombre de nœuds.

Prenons l'exemple d'une configuration avec deux règles :

  • Une règle basée sur le processeur avec une utilisation cible de 60 %.
  • Une règle basée sur une planification qui nécessite au moins trois nœuds en semaine entre 8h et 17h.

Si nous sommes un jour de semaine à midi et que l'utilisation du processeur est de 80%, la règle basée sur le processeur peut recommander d'effectuer un scaling à la hausse jusqu'à quatre nœuds, tandis que la règle basée sur la planification en recommande trois. L'autoscaler effectue un scaling de l'instance à quatre nœuds.

Autoscaling dans

En plus d'effectuer un autoscaling horizontal de votre instance de pool de lecture, AlloyDB effectue également un autoscaling de votre instance lorsque vous n'avez pas besoin d'autant de nœuds de lecture pour prendre en charge votre workflow. Lors d'un autoscaling vertical, AlloyDB réduit le nombre de nœuds à la valeur que vous avez définie pour le champ --read-pool-node-count.

Pour déterminer quand votre instance de pool de lecture doit faire l'objet d'un scaling à la baisse, AlloyDB attend que votre planification d'autoscaling soit inactive ou que l'utilisation de votre processeur soit inférieure à votre objectif d'utilisation pendant 10 minutes.

Pour en savoir plus sur le scaling horizontal, consultez Comprendre les décisions de l'autoscaler.

Désactiver l'autoscaling

Pour désactiver le scaling automatique, utilisez l'option --no-enable-autoscaler. Cela rétablit le nombre de nœuds d'origine du pool de lecture avant l'activation de l'autoscaling.

gcloud beta alloydb instances update INSTANCE_ID \
    --region=REGION_ID \
    --cluster=CLUSTER_ID \
    --project=PROJECT_ID \
    --no-enable-autoscaler

Afficher le nombre de nœuds mis à l'échelle automatiquement

Vous pouvez afficher le nombre de nœuds vers lesquels l'autoscaler a effectué un scaling dans une instance.

Console

  1. Dans la console Google Cloud , accédez à la page Clusters.

    accéder aux clusters

  2. Cliquez sur un cluster dans la colonne Nom de la ressource.

  3. Dans le menu de navigation, cliquez sur Insights sur le système.

  4. Sélectionnez une instance dans la liste déroulante Instance.

  5. Consultez le nombre de nœuds sous Nombre de nœuds actifs.

gcloud

Pour utiliser la gcloud CLI, vous pouvez installer et initialiser la Google Cloud CLI, ou utiliser Cloud Shell.

Exécutez la commande gcloud alloydb instances describe pour afficher la liste des nœuds de l'instance.

gcloud alloydb instances describe INSTANCE_ID \
     --region=REGION_ID \
     --cluster=CLUSTER_ID \
     --project=PROJECT_ID \
     --view=FULL \
     --format="yaml(nodes)"

Remplacez les éléments suivants :

  • INSTANCE_ID : ID de l'instance que vous mettez à jour.

  • REGION_ID : région où se trouve l'instance.

  • CLUSTER_ID : ID du cluster où l'instance est placée.

  • PROJECT_ID : ID du projet dans lequel le cluster est placé.