Configurer le regroupement de connexions géré

Cette page explique comment activer, connecter et surveiller le pooling de connexions géré dans AlloyDB pour PostgreSQL. Le regroupement de connexions géré est un modèle de conception qui optimise la gestion des connexions de base de données en conservant un pool de connexions préétablies. Ce pool de connexions est ensuite réutilisé par l'application au lieu d'ouvrir et de fermer des connexions pour chaque opération de base de données, ce qui améliore les performances et l'utilisation des ressources.

Le regroupement de connexions géré vous permet de faire évoluer vos charges de travail de base de données en optimisant l'utilisation des ressources et la latence de connexion pour vos instances AlloyDB. Le regroupement de connexions géré attribue dynamiquement des connexions de serveur aux requêtes entrantes lorsque cela est possible, à l'aide du regroupement et du multiplexage. Cette approche permet d'améliorer les performances, en particulier pour les connexions à grande échelle, en absorbant les pics de connexion soudains et en réutilisant les connexions à la base de données existantes. Au lieu de se connecter à une base de données spécifique, une application utilisant le regroupement de connexions géré se connecte à un pooler, ce qui permet de réduire les temps de connexion et d'améliorer l'évolutivité de vos charges de travail en lecture.

Bien que vous puissiez utiliser le regroupement de connexions géré pour n'importe quelle charge de travail transactionnelle, il est plus adapté aux applications qui contiennent davantage de connexions de courte durée ou qui peuvent connaître un pic de connexions.

Avant de commencer

Vous devez vous connecter à votre instance à l'aide d'une connexion directe. Le regroupement de connexions géré n'est pas compatible avec la connexion au proxy d'authentification AlloyDB ni aux connecteurs de langage AlloyDB.

Rôles requis

Pour obtenir l'autorisation nécessaire pour activer et utiliser le pool de connexions géré, demandez à votre administrateur de vous accorder le rôle IAM Administrateur Cloud AlloyDB (roles/alloydb.admin) sur l'instance AlloyDB. Pour en savoir plus sur l'attribution de rôles, consultez la page Gérer l'accès aux projets, aux dossiers et aux organisations.

Ce rôle prédéfini contient l'autorisation alloydb.instances.update, qui est nécessaire pour activer et utiliser le pooling de connexions géré.

Vous pouvez également obtenir cette autorisation avec des rôles personnalisés ou d'autres rôles prédéfinis.

Options de configuration avancées

Le regroupement de connexions géré AlloyDB est compatible avec les options de configuration avancées suivantes. Vous pouvez personnaliser le pooling de connexions gérées pour répondre aux besoins de votre instance à l'aide de ces options de configuration. Vous pouvez définir ces configurations au niveau de l'instance à l'aide de la consoleGoogle Cloud , de gcloud CLI ou de l'API AlloyDB.

Nom de la configuration Description
Mode de connexion
(connection-pooling-pool-mode)
Pour le mode de connexion, vous pouvez sélectionner "transaction" (par défaut) ou "session".

Transaction (transaction):
Regroupe les connexions au niveau d'une transaction. Une connexion serveur est attribuée à un client lors d'une transaction. Une fois la transaction terminée, la connexion au serveur est remise dans le pool.

Session (session):
Regroupe les connexions au niveau de la session. Une connexion serveur est attribuée au client pendant toute la durée de sa connexion. Une fois le client déconnecté, la connexion au serveur est remise dans le pool.
Taille maximale du pool 
(connection-pooling-max-pool-size)
Taille maximale du pool de connexions par paire utilisateur/base de données. La valeur par défaut est de 50 connexions.
Taille minimale du pool :
(connection-pooling-min-pool-size)
Taille minimale du pool de connexions. La valeur par défaut est de 0 connexion.
Délai d'inactivité des connexions client(s)
(connection-pooling-client-connection-idle-timeout)
Durée pendant laquelle une connexion client reste inactive avant d'expirer. Cette valeur peut être comprise entre 0 et 2 147 483 secondes. La valeur par défaut est de 0 seconde.
Délai d'inactivité des connexions au serveur(s)
(connection-pooling-server-connection-idle-timeout)
Durée pendant laquelle une connexion au serveur reste inactive avant d'expirer. Cette valeur peut être comprise entre 0 et 2 147 483 secondes. La valeur par défaut est de 600 secondes.
Délai d'attente avant expiration des requêtes(s)
(connection-pooling-query-wait-timeout)
Délai d'attente d'une requête avant expiration. Cette valeur peut être comprise entre 0 et 2 147 483 secondes. La valeur par défaut est de 120 secondes.
Nombre maximal d'instructions préparées
(connection-pooling-max-prepared-statements)
Nombre maximal de commandes d'instructions préparées envoyées en mode de regroupement des transactions. La valeur par défaut est 0.
Ignorer les paramètres de démarrage
(connection-pooling-ignore-startup-parameters)
Paramètres à ignorer, qui ne sont pas suivis par défaut dans les paquets de démarrage.
Durée de vie des serveurs(s)
(connection-pooling-server-lifetime)
Durée maximale pendant laquelle une connexion au serveur reste inutilisée avant que le regroupement de connexions gérées ne la ferme. La valeur par défaut est de 3 600 secondes.

Par défaut, le pooling de connexions géré initie des connexions au serveur AlloyDB. Lorsqu'une connexion client est établie et authentifiée, le regroupement de connexions géré peut créer une ou plusieurs connexions serveur afin que la taille du pool corresponde à la configuration choisie. La connexion client est ensuite attribuée à une connexion serveur disponible. Les connexions au serveur sont maintenues jusqu'à ce qu'elles soient explicitement fermées ou qu'elles soient inactives pendant une période supérieure au délai d'inactivité des connexions au serveur.

Activer le regroupement de connexions géré

Vous pouvez activer le pool de connexions géré pour toutes les instances existantes ou nouvelles.

Activer pour une nouvelle instance principale

Pour créer une instance principale avec le pooling de connexions géré activé, consultez Créer une instance principale. Vous pouvez activer le pooling de connexions géré pour une instance à l'aide de la consoleGoogle Cloud , de Google Cloud CLI ou de l'API AlloyDB.

Activer pour une nouvelle instance de pool de lecture

Pour créer une instance de pool de lecture avec le pooling de connexions géré activé, consultez Créer une instance de pool de lecture. Vous pouvez activer le pooling de connexions géré pour une instance à l'aide de la consoleGoogle Cloud , de Google Cloud CLI ou de l'API AlloyDB.

Activer pour une instance existante

Vous pouvez activer le pooling de connexions géré pour une instance existante à l'aide de la consoleGoogle Cloud , de Google Cloud CLI ou de l'API AlloyDB.

Console

  1. 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 à Instances de votre cluster.

  4. Cliquez sur Modifier le pool principal ou sur Modifier le pool de lecture.

  5. Sous Pool de connexions géré, cochez la case Activer le pool de connexions géré.

  6. Facultatif : Pour configurer les options de pool de connexions gérées, cliquez sur Options avancées du pool.

    Vous pouvez personnaliser les options de pool de connexions géré pour répondre aux besoins de votre instance. Pour en savoir plus, consultez la section Options de configuration avancées.

  7. Cliquez sur Enregistrer les modifications.

gcloud

Pour activer le pooling de connexions géré pour une instance de pool de lecture ou principal existante, utilisez la commande gcloud alpha alloydb instances update suivante :

gcloud alpha alloydb instances update INSTANCE_ID \
  --project=PROJECT_ID \
  --region=REGION_ID \
  --cluster=CLUSTER_ID \
  --enable-connection-pooling

Remplacez les éléments suivants :

  • INSTANCE_ID : ID de l'instance AlloyDB pour laquelle vous souhaitez activer le pooling de connexions géré.
  • PROJECT_ID : ID du projet.
  • REGION_ID : ID de la région.
  • CLUSTER_ID : ID du cluster.

Une fois que vous avez activé le pool de connexions géré, vous pouvez personnaliser les options de ce pool pour répondre aux besoins de votre instance en définissant les options de configuration avancées. Pour savoir comment définir les options de configuration, consultez Modifier le pool de connexions géré pour une instance.

REST

Pour activer le pooling de connexions géré pour une instance de pool de lecture ou principale existante, utilisez la commande suivante et définissez connectionPoolConfig :

Avant d'utiliser les données de requête ci-dessous, effectuez les remplacements suivants :

  • PROJECT_ID : ID du projet.
  • LOCATION_ID : ID de la région du cluster.
  • CLUSTER_ID : ID du cluster. Il doit commencer par une lettre minuscule et peut contenir des lettres minuscules, des chiffres et des traits d'union.
  • INSTANCE_ID : ID de l'instance

Méthode HTTP et URL :

PATCH https://alloydb.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/clusters/CLUSTER_ID/instances/INSTANCE_ID

Corps JSON de la requête :

{
  "connectionPoolConfig": {
    "enabled": true
  }
}

Se connecter au regroupement de connexions géré

La connexion au regroupement de connexions géré est identique à celle aux connexions directes à la base de données, sauf qu'elle s'effectue sur un port différent. Le regroupement de connexions géré écoute sur le port 6432. Tout utilisateur ajouté à l'instance AlloyDB peut se connecter à l'aide du pool de connexions géré.

Se connecter à l'aide de l'authentification intégrée

L'exemple de commande connecte votre instance AlloyDB au pooling de connexions géré à l'aide de l'authentification intégrée.

psql postgresql://USERNAME:PASSWORD@IP_ADDRESS:6432/postgres

Se connecter à l'aide de connexions SSL

Le mode SSL de l'instance s'applique également à toutes les connexions au pool de connexions géré. Par défaut, seules les connexions SSL sont acceptées. Pour autoriser les connexions non chiffrées, utilisez la commande gcloud alloydb instances update suivante pour définir le mode SSL de l'instance sur ALLOW_UNENCRYPTED_AND_ENCRYPTED.

gcloud alloydb instances update INSTANCE_ID \
  --project=PROJECT_ID \
  --region=REGION_ID \
  --cluster=CLUSTER_ID \
  --ssl-mode=ALLOW_UNENCRYPTED_AND_ENCRYPTED

Modifier le regroupement de connexions géré pour une instance

Une fois le pooling de connexions géré activé, vous pouvez personnaliser les options de pooling de connexions géré pour répondre aux besoins de votre instance à l'aide des options de configuration avancées. Ces options de configuration sont appelées indicateurs de pool de connexions géré. Pour en savoir plus sur les options de configuration, leurs valeurs par défaut et leurs plages, consultez Options de configuration avancées.

Vous pouvez modifier les options de configuration du pool de connexions géré pour une instance existante à l'aide de la console Google Cloud , de Google Cloud CLI ou de l'API AlloyDB.

Console

  1. 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 à Instances de votre cluster.

  4. Cliquez sur Modifier l'instance ou Modifier le pool de lecture pour l'instance que vous souhaitez modifier.

  5. Sous Pool de connexions géré, développez Options avancées de regroupement.

  6. Modifiez les options de mise en commun avancées que vous souhaitez mettre à jour. Vous pouvez modifier les options suivantes :

    • Mode de connexion
    • Taille maximale du pool
    • Taille minimale du regroupement
    • Nombre maximal de connexions client
    • Délai d'inactivité des connexions client(s)
    • Délai d'inactivité des connexions au serveur(s)
    • Délai d'attente avant expiration des requêtes(s)
    • Nombre maximal d'instructions préparées
    • Ignorer les paramètres de démarrage
    • Durée de vie des serveurs(s)
  7. Cliquez sur Mettre à jour l'instance.

gcloud

Pour modifier les options de configuration du pooling de connexions géré pour une instance existante, utilisez la commande gcloud alpha alloydb instances update suivante :

  gcloud alpha alloydb instances update INSTANCE_ID \
    --project=PROJECT_ID \
    --region=REGION_ID \
    --cluster=CLUSTER_ID \
    { \
      --connection-pooling-pool-mode=CONNECTION_MODE \
      | --connection-pooling-max-pool-size=MAX_POOL_SIZE \
      | --connection-pooling-min-pool-size=MIN_POOL_SIZE \
      | --connection-pooling-max-client-connections=MAX_CLIENT_CONNECTION \
      | --connection-pooling-server-idle-timeout=SERVER_IDLE_TIMEOUT_PERIOD \
      | --connection-pooling-query-wait-timeout=QUERY_WAIT_TIMEOUT_PERIOD \
      | --connection-pooling-ignore-startup-parameters=IGNORE_STARTUP_PARAMETERS \
      | --connection-pooling-max-prepared-statements=MAX_PREPARED_STATEMENTS \
      | --connection-pooling-server-lifetime=SERVER_LIFETIME \
      | --connection-pooling-client-connection-idle-timeout=CLIENT_CONNECTION_IDLE_TIMEOUT \
    }

Remplacez les éléments suivants :

  • INSTANCE_ID : nom de l'instance AlloyDB pour laquelle vous souhaitez désactiver le pooling de connexions géré.
  • PROJECT_ID : ID du projet.
  • REGION_ID : ID de la région.
  • CLUSTER_ID : ID du cluster.
  • Vous pouvez configurer les options suivantes :

    • --connection-pooling-pool-mode. Il doit s'agir de l'une des valeurs suivantes : session ou transaction.
    • --connection-pooling-max-pool-size
    • --connection-pooling-min-pool-size
    • --connection-pooling-max-client-connections
    • --connection-pooling-server-idle-timeout
    • --connection-pooling-query-wait-timeout
    • --connection-pooling-ignore-startup-parameters
    • --connection-pooling-max-prepared-statements
    • --connection-pooling-server-lifetime
    • --connection-pooling-client-connection-idle-timeout

REST

Pour modifier les options de configuration du pooling de connexions géré pour une instance de pool de lecture existante, utilisez la commande suivante et définissez connectionPoolConfig :

Avant d'utiliser les données de requête ci-dessous, effectuez les remplacements suivants :

  • PROJECT_ID : ID du projet.
  • LOCATION_ID : ID de la région du cluster.
  • CLUSTER_ID : ID du cluster que vous créez. Il doit commencer par une lettre minuscule et peut contenir des lettres minuscules, des chiffres et des traits d'union.
  • INSTANCE_ID : ID de l'instance que vous créez.
  • Vous pouvez configurer les options suivantes :

    • POOL_MODE. Il doit s'agir de l'une des valeurs suivantes : session ou transaction.
    • MAX_POOL_SIZE
    • MIN_POOL_SIZE
    • MAX_CLIENT_CONNECTION
    • SERVER_IDLE_TIMEOUT
    • QUERY_WAIT_TIMEOUT
    • IGNORE_STARTUP_PARAMETERS

Méthode HTTP et URL :

PATCH https://alloydb.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/clusters/CLUSTER_ID/instances/INSTANCE_ID

Corps JSON de la requête :

{
  "connectionPoolConfig": {
    "enabled": true,
    "flags": {
      "pool_mode": "POOL_MODE",
      "max_pool_size": "MAX_POOL_SIZE",
      "min_pool_size": "MIN_POOL_SIZE",
      "max_client_connection": "MAX_CLIENT_CONNECTION",
      "server_idle_timeout": "SERVER_IDLE_TIMEOUT",
      "query_wait_timeout": "QUERY_WAIT_TIMEOUT",
      "ignore_startup_parameters": "IGNORE_STARTUP_PARAMETERS"
    },
  }
}

Afficher l'état du regroupement de connexions géré pour une instance

Vous pouvez afficher l'état du pool de connexions géré pour une instance à l'aide de la console Google Cloud , de Google Cloud CLI ou de l'API AlloyDB.

Console

  1. 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, recherchez l'instance pour laquelle vous souhaitez afficher l'état du pooling de connexions géré. Le champ Pool de connexions géré indique s'il est activé ou désactivé.

gcloud

Pour afficher l'état du pooling de connexions géré pour une instance existante, utilisez la commande gcloud alpha alloydb instances describe suivante :

gcloud alpha alloydb instances describe INSTANCE_ID \
  --project=PROJECT_ID \
  --region=REGION_ID \
  --cluster=CLUSTER_ID \
  --format="value(connectionPoolConfig.enabled)"

Remplacez les éléments suivants :

  • INSTANCE_ID : nom de l'instance AlloyDB pour laquelle vous souhaitez modifier les options de pooling de connexions gérées.
  • PROJECT_ID : ID du projet.
  • REGION_ID : ID de la région.
  • CLUSTER_ID : ID du cluster.

Si le regroupement de connexions géré est activé, la réponse suivante est renvoyée :

True

REST

Pour afficher l'état du pooling de connexions géré pour votre instance AlloyDB, utilisez la commande suivante et recherchez connectionPoolConfig :

Avant d'utiliser les données de requête ci-dessous, effectuez les remplacements suivants :

  • PROJECT_ID : ID du projet.
  • LOCATION_ID : ID de la région du cluster.
  • CLUSTER_ID : ID du cluster que vous créez. Il doit commencer par une lettre minuscule et peut contenir des lettres minuscules, des chiffres et des traits d'union.
  • INSTANCE_ID : ID de l'instance que vous créez.

Méthode HTTP et URL :

GET https://alloydb.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/clusters/CLUSTER_ID/instances/INSTANCE_ID

Désactiver le pool de connexions géré pour une instance existante

Vous pouvez désactiver le pooling de connexions géré pour une instance existante à l'aide de la consoleGoogle Cloud , de Google Cloud CLI ou de l'API AlloyDB.

Console

  1. 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 à Instances de votre cluster.

  4. Cliquez sur Modifier l'instance ou Modifier le pool de lecture pour l'instance pour laquelle vous souhaitez désactiver le pool de connexions géré.

  5. Sous Pool de connexions géré, décochez la case Activer le pool de connexions géré.

  6. Cliquez sur Mettre à jour l'instance.

gcloud

Pour désactiver le pool de connexions géré pour une instance existante, utilisez la commande gcloud alpha alloydb instances update suivante :

gcloud alpha alloydb instances update INSTANCE_ID \
  --project=PROJECT_ID \
  --region=REGION_ID \
  --cluster=CLUSTER_ID \
  --no-enable-connection-pooling

Remplacez les éléments suivants :

  • INSTANCE_ID : nom de l'instance AlloyDB pour laquelle vous souhaitez désactiver le pooling de connexions géré.
  • PROJECT_ID : ID du projet.
  • REGION_ID : ID de la région.
  • CLUSTER_ID : ID du cluster.

REST

Pour désactiver le pooling de connexions géré pour une instance de pool de lecture existante, utilisez la commande suivante et définissez connectionPoolConfig sur false :

Avant d'utiliser les données de requête ci-dessous, effectuez les remplacements suivants :

  • PROJECT_ID : ID du projet.
  • LOCATION_ID : ID de la région du cluster.
  • CLUSTER_ID : ID du cluster que vous créez. Il doit commencer par une lettre minuscule et peut contenir des lettres minuscules, des chiffres et des traits d'union.
  • INSTANCE_ID : ID de l'instance que vous créez.

Méthode HTTP et URL :

PATCH https://alloydb.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/clusters/CLUSTER_ID/instances/INSTANCE_ID

Corps JSON de la requête :

{
  "connectionPoolConfig": {
    "enabled": false
  }
}

Surveiller le regroupement de connexions géré

AlloyDB fournit les métriques suivantes pour vous aider à surveiller le fonctionnement du regroupement de connexions géré sur votre instance. Vous pouvez afficher ces métriques à l'aide de l'explorateur de métriques.

Nom de la métrique Description
Nombre de pools de connexions

/database/conn_pool/num_pools
Nombre total de pools de connexions par base de données.
Connexions client

/database/conn_pool/client_connections
Suit le nombre de connexions client regroupées par état de la connexion client par base de données. Les états inclus dans cette métrique sont les suivants :
  • active : nombre de connexions actives par base de données, y compris les clients inactifs qui n'ont aucune requête en attente.
  • waiting : nombre de clients en attente d'une connexion au serveur par base de données.
Connexions au serveur

/database/conn_pool/server_connections
Suit le nombre de connexions au serveur regroupées par état de la connexion au serveur par base de données. Les états inclus dans cette métrique sont les suivants :
  • active : nombre de connexions actives par base de données.
  • idle : nombre de connexions serveur inactives par base de données.
Temps d'attente moyen

/database/conn_pool/client_connections_avg_wait_time
Temps moyen passé par tous les clients en état d'attente pour un serveur (en microsecondes par base de données).

Pour en savoir plus, consultez Métriques AlloyDB.

Limites

Les limites suivantes s'appliquent pendant la version bêta et peuvent être modifiées ou supprimées lors de la disponibilité générale ou après :

  • Le regroupement de connexions géré n'est pas compatible avec la connexion au proxy d'authentification AlloyDB ni aux connecteurs de langage AlloyDB.
  • Si vous utilisez le pooling de connexions géré en mode de pooling de transactions, les fonctionnalités SQL suivantes ne sont pas compatibles :
    • SET/RESET
    • LISTEN
    • WITH HOLD CURSOR
    • PREPARE/DEALLOCATE
    • Tables temporaires PRESERVE/DELETE ROW
    • LOAD
    • Verrous consultatifs au niveau de la session
    • Plans préparés au niveau du protocole
  • Le regroupement de connexions géré n'est pas compatible avec les connexions IP publiques.