Para escalonar as cargas de trabalho do AlloyDB para PostgreSQL, absorver picos repentinos de conexão e reduzir a latência de conexão, ative o pool de conexões gerenciado. O pool de conexões gerenciado mantém um pool de conexões de servidor pré-estabelecidas e multiplexa dinamicamente as solicitações de clientes recebidas nessas conexões, em vez de abrir e fechar uma conexão de back-end para cada operação de banco de dados.
Em vez de se conectar diretamente ao back-end do banco de dados, seu aplicativo se conecta a um pooler, que oferece tempos de conexão mais curtos e melhor escalonabilidade para suas cargas de trabalho de leitura e gravação. Embora seja possível usar o pool de conexões gerenciado para qualquer carga de trabalho transacional, ele é mais adequado para aplicativos que usam conexões de curta duração ou que têm picos de conexão.
Antes de começar
O pool de conexões gerenciado também é compatível com conexões com o proxy de autenticação do AlloyDB ou os conectores de linguagem do AlloyDB.
Funções exigidas
Para receber a permissão necessária
para ativar e usar o pool de conexões gerenciado,
peça ao administrador para conceder a você o
papel do IAM de administrador do AlloyDB (roles/alloydb.admin) na instância do AlloyDB.
Para mais informações sobre a concessão de papéis, consulte Gerenciar o acesso a projetos, pastas e organizações.
Esse papel predefinido contém a permissão alloydb.instances.update, necessária para ativar e usar o pool de conexões gerenciadas.
Também é possível receber essa permissão com papéis personalizados ou outros papéis predefinidos.
Opções de configuração avançada
O pooling de conexões gerenciado do AlloyDB é compatível com as seguintes opções de configuração avançada de pooling. É possível personalizar o pool de conexões gerenciadas para atender às necessidades da instância definindo essas configurações em um nível de instância usando o console do Google Cloud , a CLI gcloud ou a API AlloyDB.
| Nome da configuração | Descrição |
|---|---|
|
Modo de conexão ( connection-pooling-pool-mode)
|
Para o modo de conexão, é possível selecionar transação (padrão) ou
sessão.
Transação ( transaction):
Agrupa conexões no nível da transação. Uma conexão de servidor é atribuída a um cliente durante uma transação. Depois que a transação é concluída, a conexão do servidor é colocada de volta no pool. Sessão ( session):
Agrupa conexões no nível da sessão. Uma conexão de servidor é atribuída ao cliente durante todo o tempo em que ele permanece conectado. Depois que o cliente se desconecta, a conexão do servidor é colocada de volta no pool. |
|
Tamanho máximo do pool ( connection-pooling-max-pool-size)
|
O tamanho máximo do pool de conexões por par de usuário e banco de dados. Esse
valor pode variar de 1 a 262,042 conexões,
e o valor padrão é 50 conexões.
|
|
Tamanho mínimo do pool ( connection-pooling-min-pool-size)
|
O tamanho mínimo do pool de conexões. Esse valor pode variar de
0 a 262,042 conexões, e o valor padrão
é 0 conexões.
|
|
Máximo de conexões de clientes ( connection-pooling-max-client-connections)
|
O número máximo de conexões de cliente simultâneas permitidas. Esse
valor pode variar de 1 a 262,042 conexões,
e o valor padrão é 5000 conexões.
|
|
Tempo limite de conexões inativas de clientes ( connection-pooling-client-connection-idle-timeout)
|
O tempo que uma conexão de cliente permanece inativa antes de atingir o tempo limite. Esse
valor pode variar de 0 a 2,147,483 segundos, e
o valor padrão é 0 segundos.
|
|
Tempo limite de conexões inativas do servidor ( connection-pooling-server-idle-timeout)
|
O tempo que uma conexão de servidor permanece inativa antes de expirar. Esse
valor pode variar de 0 a 2,147,483 segundos, e
o valor padrão é 600 segundos.
|
|
Tempo limite de espera da(s) consulta(s) ( connection-pooling-query-wait-timeout)
|
O tempo que uma consulta aguarda até expirar. Esse
valor pode variar de 0 a 2,147,483 segundos, e
o valor padrão é 120 segundos.
|
|
Máximo de instruções preparadas ( connection-pooling-max-prepared-statements)
|
O número máximo de comandos de instrução preparada enviados no modo de pool de transações. Esse valor pode variar de 0 a
262,042, e o valor padrão é 0.
|
|
Ignorar parâmetros de inicialização ( connection-pooling-ignore-startup-parameters)
|
Uma lista separada por vírgulas de parâmetros de inicialização que o pooler ignora quando
não são rastreados em pacotes de inicialização por padrão. O valor padrão é
extra_float_digits.
|
|
Ciclo(s) de vida do servidor ( connection-pooling-server-lifetime)
|
O tempo máximo que uma conexão de servidor fica sem uso antes que o pool de conexões gerenciadas
a feche. Esse valor pode variar de 0 a 2,147,483 segundos, e o valor padrão é 3600 segundos.
|
|
Usuários de estatísticas ( connection-pooling-stats-users)
|
Uma lista separada por vírgulas de usuários do banco de dados autorizados a se conectar ao console de estatísticas. Esse parâmetro pode ser configurado usando a Google Cloud CLI ou a API AlloyDB. Os usuários autorizados podem acessar métricas avançadas, que são mantidas no banco de dados alloydb_mcp_stats_{pooler_id} para cada pooler.
|
Por padrão, o pool de conexões gerenciado inicia conexões com o servidor do AlloyDB. Quando uma conexão de cliente é estabelecida e autenticada, o pool de conexões gerenciado pode criar uma ou mais conexões de servidor para que o tamanho do pool corresponda à configuração escolhida. A conexão do cliente recebe uma conexão de servidor disponível. As conexões do servidor são mantidas até serem explicitamente fechadas ou ficarem inativas por mais tempo do que o período de tempo limite de conexão inativa do servidor.
Quando você ativa o pool de conexões gerenciado, as conexões do servidor proxy de autenticação do AlloyDB também são agrupadas usando um pool separado que inclui apenas conexões em pool com o proxy de autenticação do AlloyDB ativado.
Ative o pool de conexões gerenciado
É possível ativar o pool de conexões gerenciado para qualquer instância nova ou atual.
Ativar para uma nova instância principal
Para criar uma nova instância primária com o pool de conexões gerenciado ativado, consulte Criar uma instância primária. É possível ativar o pool de conexões gerenciadas para uma instância usando o console doGoogle Cloud , a Google Cloud CLI ou a API AlloyDB.
Ativar para uma nova instância do pool de leitura
Para criar uma nova instância de pool de leitura com o pool de conexões gerenciado ativado, consulte Criar uma instância de pool de leitura. É possível ativar o pool de conexões gerenciadas para uma instância usando o console doGoogle Cloud , a Google Cloud CLI ou a API AlloyDB.
Ativar para uma instância atual
É possível ativar o pool de conexões gerenciadas para uma instância atual usando o console doGoogle Cloud , a Google Cloud CLI ou a API AlloyDB.
Console
Acesse a página Clusters.
Clique em um cluster na coluna Nome do recurso.
Na página Visão geral, acesse Instâncias no seu cluster.
Clique em Editar primário ou Editar pool de leitura.
Em Pool de conexões gerenciado, marque a caixa de seleção Ativar pool de conexões gerenciado.
Opcional: para configurar as opções de pooling de conexão gerenciado, clique em Opções avançadas de pooling.
É possível personalizar as opções de pool de conexões gerenciadas para atender às necessidades da sua instância. Para mais informações, consulte Opções de configuração avançadas.
Clique em Salvar alterações.
gcloud
Para ativar o pool de conexões gerenciado em uma instância principal ou de pool de leitura, use o seguinte comando gcloud alloydb instances update:
gcloud alloydb instances update INSTANCE_ID \
--project=PROJECT_ID \
--region=REGION_ID \
--cluster=CLUSTER_ID \
--enable-connection-pooling
Substitua:
INSTANCE_ID: o ID da instância do AlloyDB em que você quer ativar o pool de conexões gerenciado.PROJECT_ID: o ID do projeto.REGION_ID: o ID da região.CLUSTER_ID: o ID do cluster.
Depois de ativar o pool de conexões gerenciado, é possível personalizar as opções de pool de conexões gerenciado para atender às necessidades da sua instância, definindo as opções de configuração avançada. Para mais informações sobre como definir as opções de configuração, consulte Modificar o pool de conexões gerenciadas para uma instância.
REST
Para ativar o pool de conexões gerenciado em uma instância principal ou de pool de leitura, use o seguinte comando e defina connectionPoolConfig:
Antes de usar os dados da solicitação, faça as substituições a seguir:
PROJECT_ID: o ID do projeto.LOCATION_ID: o ID da região do cluster.CLUSTER_ID: o ID do cluster. Ele precisa começar com uma letra minúscula e pode conter letras minúsculas, números e hifens.INSTANCE_ID: o ID da instância.
Método HTTP e URL:
PATCH https://alloydb.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/clusters/CLUSTER_ID/instances/INSTANCE_ID
Corpo JSON da solicitação:
{
"connectionPoolConfig": {
"enabled": true
}
}
Conectar-se ao pool de conexões gerenciado
A conexão com o pooling de conexões gerenciado é idêntica às conexões diretas de banco de dados, exceto por uma porta diferente. O pooling de conexões gerenciado detecta a
porta 6432. Qualquer usuário adicionado à instância do AlloyDB pode se conectar usando o pool de conexões gerenciado.
Conectar-se usando a autenticação integrada
O exemplo de comando conecta sua instância do AlloyDB ao pool de conexões gerenciado usando a autenticação integrada.
psql postgresql://USERNAME:PASSWORD@IP_ADDRESS:6432/postgres
Substitua:
USERNAME: o nome de usuário do banco de dados para se conectar à instância do AlloyDB.PASSWORD: a senha do usuário.IP_ADDRESS: o endereço IP da instância do AlloyDB.
Conectar usando conexões SSL
O modo SSL da instância também se aplica a todas as conexões com o pool de conexões
gerenciado. Por padrão, apenas conexões SSL são aceitas. Para permitir conexões não criptografadas, use o seguinte comando gcloud alloydb instances update para definir o modo SSL da instância como 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
Conectar usando a autenticação do IAM
É possível se conectar ao pool de conexões gerenciado usando a autenticação do IAM de duas maneiras:
Autenticar com um token OAuth 2.0: use a CLI gcloud para receber um token OAuth 2.0 e use-o como senha ao se conectar à porta
6432. Para mais informações, consulte Autenticar com um token do OAuth 2.0.Autenticar automaticamente: use o proxy de autenticação do AlloyDB com a flag
--auto-iam-authnou ative a autenticação do IAM de maneira programática com os conectores de linguagem do AlloyDB.
Ver estatísticas sobre pools de conexões gerenciados
Ao ativar o pool de conexões gerenciado na instância do AlloyDB,
é possível se conectar ao console de estatísticas integrado para ver informações detalhadas
em tempo real sobre os pools de conexões. É possível acessar o console de estatísticas na porta 6432 por um endereço IP particular usando o acesso a serviços particulares ou o Private Service Connect. O console de estatísticas é útil para monitorar
conexões ativas ou inativas, solucionar problemas de tempos de espera e otimizar tamanhos
de pool.
Para usar o console de estatísticas, siga estas etapas:
Por padrão, nenhum usuário do banco de dados tem autorização para acessar o console de estatísticas. Use a Google Cloud CLI para especificar quais usuários do banco de dados podem se conectar, o que os coloca na lista de permissões para acesso ao console de estatísticas.
Para adicionar um usuário do console de estatísticas, use o comando
gcloud alloydb instances update:gcloud alloydb instances update INSTANCE_ID \ --project=PROJECT_ID \ --region=REGION_ID \ --cluster=CLUSTER_ID \ --connection-pooling-stats-users=STATS_USERSSubstitua:
INSTANCE_ID: o nome da instância do AlloyDB em que você quer autorizar os usuários do console de estatísticas.STATS_USERS: uma lista separada por vírgulas de nomes de usuário do banco de dados.PROJECT_ID: o ID do projeto.REGION_ID: o ID da região.CLUSTER_ID: o ID do cluster.
Conecte-se à instância na porta
6432. Cada instância individual de pooler de conexões mantém as próprias métricas em um banco de dados com numeração exclusiva. Especifique o banco de dados de estatísticas relevante para o pooler que você quer monitorar:- Para poolers padrão, use
alloydb_mcp_stats_POOLER_ID. O ID é1, até o número de poolers em execução na instância. - Para o pooler do proxy de autenticação, use
alloydb_mcp_stats_authproxy_pooler1.
psql postgresql://USERNAME:PASSWORD@IP_ADDRESS:6432/alloydb_mcp_stats_1Substitua:
POOLER_ID: o ID do pool de conexões. O ID é1, até o número de poolers em execução na instância.USERNAME: o nome de usuário do banco de dados para se conectar à instância do AlloyDB.PASSWORD: a senha do usuário.IP_ADDRESS: o endereço IP da instância do AlloyDB. Precisa ser um endereço do Private Service Connect (PSC) ou do acesso a serviços particulares (PSA).
- Para poolers padrão, use
Depois de se conectar, execute comandos
SHOWcompatíveis com o PgBouncer para conferir as métricas, por exemplo:SHOW STATS;: exibe estatísticas gerais de cada banco de dados.SHOW POOLS;: lista o status de todos os pools de conexão atuais.SHOW CLIENTS;: mostra informações sobre as conexões atuais do cliente.
Para uma lista completa de comandos disponíveis, consulte a documentação oficial do PgBouncer.
Modificar o pool de conexões gerenciado de uma instância
Depois de ativar o pool de conexões gerenciado, é possível personalizar as opções de pool de conexões gerenciado para atender às necessidades da sua instância usando as opções de configuração avançadas. Essas opções de configuração são chamadas de flags de pool de conexões gerenciadas. Para mais informações, consulte Opções de configuração avançadas. Essas opções também se aplicam ao pooler do proxy de autenticação do AlloyDB.
É possível modificar as opções de configuração do pool de conexões gerenciadas de uma instância usando o console do Google Cloud , a Google Cloud CLI ou a API AlloyDB.
Console
Acesse a página Clusters.
Clique em um cluster na coluna Nome do Recurso.
Na página Visão geral, acesse Instâncias no seu cluster.
Clique em Editar instância ou Editar pool de leitura na instância que você quer modificar.
Em Pool de conexões gerenciado, expanda Opções avançadas de pooling.
Modifique as opções avançadas de pooling que você quer atualizar. É possível modificar as seguintes opções:
- Modo de conexão
- Tamanho máximo do pool
- Tamanho mínimo do pool
- Máximo de conexões de clientes
- Tempo limite de conexões inativas de clientes
- Tempo limite de conexões inativas do servidor
- Tempo limite de espera da(s) consulta(s)
- Máximo de instruções preparadas
- Ignorar parâmetros de inicialização
- Ciclo(s) de vida do servidor
Clique em Atualizar instância.
gcloud
Para modificar as opções de configuração do pool de conexões gerenciadas de uma instância
atual, use o seguinte comando
gcloud alloydb instances update:
gcloud 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_CONNECTIONS \
| --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 \
}
Substitua:
INSTANCE_ID: o nome da instância do AlloyDB em que você quer modificar as opções de pool de conexões gerenciadas.PROJECT_ID: o ID do projeto.REGION_ID: o ID da região.CLUSTER_ID: o ID do cluster.É possível configurar as seguintes opções:
--connection-pooling-pool-mode. Precisa sersessionoutransaction.--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
Para modificar as opções de configuração do pool de conexões gerenciadas de uma instância
atual, use o seguinte comando e defina connectionPoolConfig:
Antes de usar os dados da solicitação, faça as substituições a seguir:
PROJECT_ID: o ID do projeto.LOCATION_ID: o ID da região do cluster.CLUSTER_ID: o ID do cluster. Ele precisa começar com uma letra minúscula e pode conter letras minúsculas, números e hifens.INSTANCE_ID: o ID da instância.É possível configurar as seguintes opções:
POOL_MODE. Precisa sersessionoutransaction.MAX_POOL_SIZEMIN_POOL_SIZEMAX_CLIENT_CONNECTIONSSERVER_IDLE_TIMEOUTQUERY_WAIT_TIMEOUTIGNORE_STARTUP_PARAMETERSMAX_PREPARED_STATEMENTSSERVER_LIFETIMECLIENT_CONNECTION_IDLE_TIMEOUTSTATS_USERS
Método HTTP e URL:
PATCH https://alloydb.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/clusters/CLUSTER_ID/instances/INSTANCE_ID
Corpo JSON da solicitação:
{
"connectionPoolConfig": {
"enabled": true,
"flags": {
"pool_mode": "POOL_MODE",
"max_pool_size": "MAX_POOL_SIZE",
"min_pool_size": "MIN_POOL_SIZE",
"max_client_connections": "MAX_CLIENT_CONNECTIONS",
"server_connection_idle_timeout": "SERVER_IDLE_TIMEOUT",
"query_wait_timeout": "QUERY_WAIT_TIMEOUT",
"ignore_startup_parameters": "IGNORE_STARTUP_PARAMETERS",
"max_prepared_statements": "MAX_PREPARED_STATEMENTS",
"server_lifetime": "SERVER_LIFETIME",
"client_connection_idle_timeout": "CLIENT_CONNECTION_IDLE_TIMEOUT",
"stats_users": "STATS_USERS"
}
}
}
Ver o status do pool de conexões gerenciado de uma instância
É possível conferir o status do pool de conexões gerenciado de uma instância usando o console do Google Cloud , a Google Cloud CLI ou a API AlloyDB.
Console
Acesse a página Clusters.
Clique em um cluster na coluna Nome do Recurso.
Na página Visão geral, encontre a instância em que você quer ver o status do pool de conexões gerenciadas. O campo Pool de conexões gerenciadas mostra se ele está ativado ou desativado.
gcloud
Para conferir o status do pool de conexões gerenciadas de uma instância,
use o seguinte comando
gcloud alloydb instances describe:
gcloud alloydb instances describe INSTANCE_ID \
--project=PROJECT_ID \
--region=REGION_ID \
--cluster=CLUSTER_ID \
--format="value(connectionPoolConfig.enabled)"
Substitua:
INSTANCE_ID: o nome da instância do AlloyDB em que você quer conferir o status do pool de conexões gerenciado.PROJECT_ID: o ID do projeto.REGION_ID: o ID da região.CLUSTER_ID: o ID do cluster.
Se o pool de conexões gerenciado estiver ativado, a seguinte resposta será retornada:
True
REST
Para conferir o status do pool de conexões gerenciado da sua
instância do AlloyDB, use o seguinte comando e procure connectionPoolConfig:
Antes de usar os dados da solicitação, faça as substituições a seguir:
PROJECT_ID: o ID do projeto.LOCATION_ID: o ID da região do cluster.CLUSTER_ID: o ID do cluster. Ele precisa começar com uma letra minúscula e pode conter letras minúsculas, números e hifens.INSTANCE_ID: o ID da instância.
Método HTTP e URL:
GET https://alloydb.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/clusters/CLUSTER_ID/instances/INSTANCE_ID
Desativar o pool de conexões gerenciado para uma instância atual
É possível desativar o pool de conexões gerenciadas para uma instância atual usando o console doGoogle Cloud , a Google Cloud CLI ou a API AlloyDB.
Console
Acesse a página Clusters.
Clique em um cluster na coluna Nome do Recurso.
Na página Visão geral, acesse Instâncias no seu cluster.
Clique em Editar instância ou Editar pool de leitura na instância em que você quer desativar o pool de conexões gerenciado.
Em Pool de conexões gerenciado, desmarque a caixa de seleção Ativar pool de conexões gerenciado.
Clique em Atualizar instância.
gcloud
Para desativar o pool de conexões gerenciado em uma instância, use o seguinte comando gcloud alloydb instances update:
gcloud alloydb instances update INSTANCE_ID \
--project=PROJECT_ID \
--region=REGION_ID \
--cluster=CLUSTER_ID \
--no-enable-connection-pooling
Substitua:
INSTANCE_ID: o nome da instância do AlloyDB em que você quer desativar o pool de conexões gerenciado.PROJECT_ID: o ID do projeto.REGION_ID: o ID da região.CLUSTER_ID: o ID do cluster.
REST
Para desativar o pool de conexões gerenciadas em uma instância,
use o seguinte comando e defina connectionPoolConfig.enabled como false:
Antes de usar os dados da solicitação, faça as substituições a seguir:
PROJECT_ID: o ID do projeto.LOCATION_ID: o ID da região do cluster.CLUSTER_ID: o ID do cluster. Ele precisa começar com uma letra minúscula e pode conter letras minúsculas, números e hifens.INSTANCE_ID: o ID da instância.
Método HTTP e URL:
PATCH https://alloydb.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/clusters/CLUSTER_ID/instances/INSTANCE_ID
Corpo JSON da solicitação:
{
"connectionPoolConfig": {
"enabled": false
}
}
Monitorar o pooling de conexões gerenciado
O AlloyDB fornece as seguintes métricas para ajudar a monitorar como o pool de conexões gerenciado está sendo executado na sua instância. Cada métrica é identificada com o ID do pooler. É possível conferir essas métricas usando o Metrics Explorer.
| Nome da métrica | Descrição |
|---|---|
Número de pools de conexão/database/conn_pool/num_pools |
O número total de pools de conexões por banco de dados. |
Conexões do cliente/database/conn_pool/client_connections |
Rastreia o número de conexões de cliente agrupadas pelo
status da conexão de cliente por banco de dados. Os status
incluídos nessa métrica são:
|
Conexões do servidor/database/conn_pool/server_connections |
Rastreia o número de conexões de servidor agrupadas pelo
status da conexão de servidor por banco de dados. Os status
incluídos nessa métrica são:
|
Tempo médio de espera/database/conn_pool/client_connections_avg_wait_time |
O tempo médio gasto por todos os clientes em estado de espera por um servidor em microssegundos por banco de dados. |
Para mais informações, consulte Métricas do AlloyDB.
Limitações
Considere as seguintes limitações:
- Se você usar o pool de conexões gerenciado no modo de pool de transações,
os seguintes recursos do SQL não serão compatíveis:
SET/RESETLISTENWITH HOLD CURSORPREPARE/DEALLOCATEPRESERVE/DELETE ROWtabela temporáriaLOAD- Bloqueios consultivos no nível da sessão
- Planos preparados no nível do protocolo
- O pooling de conexões gerenciado não é compatível com conexões por IP público.
- Não há suporte para conexões de usuários com o papel PostgreSQL
REPLICATION.