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
, qui est nécessaire pour activer et utiliser le pooling de connexions géré.
alloydb.instances.update
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
Accédez à la page Clusters.
Cliquez sur un cluster dans la colonne Nom de la ressource.
Sur la page Présentation, accédez à Instances de votre cluster.
Cliquez sur Modifier le pool principal ou sur Modifier le pool de lecture.
Sous Pool de connexions géré, cochez la case Activer le pool de connexions géré.
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.
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
Accédez à la page Clusters.
Cliquez sur un cluster dans la colonne Nom de la ressource.
Sur la page Présentation, accédez à Instances de votre cluster.
Cliquez sur Modifier l'instance ou Modifier le pool de lecture pour l'instance que vous souhaitez modifier.
Sous Pool de connexions géré, développez Options avancées de regroupement.
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)
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
outransaction
.--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
outransaction
.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
Accédez à la page Clusters.
Cliquez sur un cluster dans la colonne Nom de la ressource.
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
Accédez à la page Clusters.
Cliquez sur un cluster dans la colonne Nom de la ressource.
Sur la page Présentation, accédez à Instances de votre cluster.
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é.
Sous Pool de connexions géré, décochez la case Activer le pool de connexions géré.
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 :
|
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 :
|
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.