Configurar o agrupamento de conexões gerenciado

Esta página descreve como ativar, se conectar e monitorar o agrupamento de conexões gerenciadas no AlloyDB para PostgreSQL. O pool de conexões gerenciado é um padrão de design que otimiza o gerenciamento de conexões de banco de dados ao manter um pool de conexões pré-estabelecidas. Esse pool de conexões é reutilizado pelo aplicativo em vez de abrir e fechar conexões para cada operação de banco de dados, o que melhora o desempenho e a utilização de recursos.

Com o pool de conexões gerenciado, é possível dimensionar as cargas de trabalho do banco de dados otimizando o uso de recursos e a latência de conexão para as instâncias do AlloyDB. O agrupamento de conexões gerenciado atribui dinamicamente conexões do servidor a solicitações recebidas sempre que possível usando agrupamento e multiplexação. Essa abordagem oferece melhorias de desempenho, especialmente para conexões escalonadas, absorvendo picos de conexão repentinos e reutilizando conexões de banco de dados existentes. Em vez de se conectar a um banco de dados específico, ao usar o pooling de conexões gerenciado, um aplicativo se conecta a um pooler, que oferece tempos de conexão mais curtos e escalonabilidade para as cargas de trabalho de leitura.

Embora seja possível usar o pooling de conexões gerenciado para qualquer carga de trabalho transacional, ele é mais adequado para aplicativos que contêm mais conexões de curta duração ou que podem ter um aumento de conexões.

Antes de começar

É necessário se conectar à instância usando uma conexão direta. O pooling de conexões gerenciado não oferece suporte à conexão com o proxy de autenticação do AlloyDB ou aos conectores de linguagem do AlloyDB.

Funções exigidas

Para receber a permissão necessária para ativar e usar o pool de conexões gerenciadas, peça ao administrador para conceder a você o papel do IAM de Administrador do Cloud 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 conseguir essa permissão com papéis personalizados ou outros papéis predefinidos.

Opções de configuração avançada

O pool de conexões gerenciado do AlloyDB é compatível com as seguintes opções de configuração avançadas de pool. É possível personalizar o pool de conexões gerenciadas para atender às necessidades da sua instância usando essas opções de configuração. É possível definir essas configurações no nível da instância usando o console do Google Cloud, a CLI do 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 em um nível de 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 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. 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. O valor padrão é 0 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. Só é possível configurar esse parâmetro usando o console do Google Cloud.
Tempo limite de conexões inativas do servidor
(connection-pooling-server-connection-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 é de 600 segundos.
Tempo limite de espera da consulta
(connection-pooling-query-wait-timeout)
O tempo que uma consulta aguarda até o tempo limite. Esse valor pode variar de 0 a 2.147.483 segundos, e o valor padrão é de 120 segundos.
Instruções preparadas máximas
(connection-pooling-max-prepared-statements)
O número máximo de comandos de instruções preparadas enviados no modo de agrupamento de transações. O valor padrão é 0.
Ignorar parâmetros de inicialização
(connection-pooling-ignore-startup-parameters)
Os parâmetros que você quer que sejam ignorados e que não são rastreados nos pacotes de inicialização por padrão.
Ciclos 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. O valor padrão é de 3.600 segundos. Só é possível configurar esse parâmetro usando o console do Google Cloud.

Por padrão, o pool de conexões gerenciadas inicia conexões com o servidor 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 é então atribuída a uma conexão de servidor disponível. As conexões do servidor são mantidas até serem explicitamente fechadas ou permanecerem inativas por mais tempo do que o tempo limite de conexão inativa do servidor.

Ativar o agrupamento 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 principal com o pool de conexões gerenciado ativado, consulte Criar uma instância principal. É possível ativar o pool de conexões gerenciadas para uma instância usando o console do Google Cloud, a CLI do Google Cloud ou a API AlloyDB.

Ativar para uma nova instância do pool de leitura

Para criar uma nova instância do pool de leitura com o pool de conexões gerenciado ativado, consulte Criar uma instância do pool de leitura. É possível ativar o pool de conexões gerenciadas para uma instância usando o console do Google Cloud, a CLI do Google Cloud ou a API AlloyDB.

Ativar para uma instância

É possível ativar o pool de conexões gerenciadas para uma instância usando o console do Google Cloud, a CLI do Google Cloud ou a API AlloyDB.

Console

  1. Acesse a página Clusters.

    Acessar Clusters

  2. Clique em um cluster na coluna Nome do recurso.

  3. Na página Visão geral, navegue até Instâncias no cluster.

  4. Clique em Editar primário ou Editar pool de leitura.

  5. Em Pool de conexões gerenciado, marque a caixa Ativar o pool de conexões gerenciado.

  6. Opcional: para configurar as opções de agrupamento de conexões gerenciadas, clique em Opções avançadas de agrupamento.

    É possível personalizar as opções de agrupamento de conexões gerenciadas para atender às necessidades da sua instância. Para mais informações, consulte Opções de configurações avançadas.

  7. Clique em Salvar alterações.

gcloud

Para ativar o pool de conexões gerenciado em uma instância de pool de leitura ou principal existente, use o comando gcloud alpha alloydb instances update a seguir:

gcloud alpha 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 para a qual 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çadas. Para mais informações sobre como definir as opções de configuração, consulte Modificar o pool de conexões gerenciadas de uma instância.

REST

Para ativar o pool de conexões gerenciado para uma instância de pool de leitura ou principal existente, use o comando a seguir 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

Solicitar corpo JSON:

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

Conectar-se ao agrupamento de conexões gerenciado

A conexão com o pool de conexões gerenciado é idêntica às conexões diretas do banco de dados, exceto em uma porta diferente. O agrupamento 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 gerenciadas.

Conectar usando a autenticação integrada

O exemplo de comando conecta a instância do AlloyDB ao pool de conexões gerenciado usando a autenticação integrada.

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

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 gerenciadas. Por padrão, somente conexões SSL são aceitas. Para permitir conexões não criptografadas, use o comando gcloud alloydb instances update abaixo 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

Modificar o agrupamento de conexões gerenciado de uma instância

Depois de ativar o agrupamento de conexões gerenciado, você pode personalizar as opções de agrupamento de conexões gerenciado para atender às necessidades da sua instância usando as opções de configuração avançada. Essas opções de configuração são chamadas de flags de agrupamento de conexões gerenciadas. Para mais informações sobre as opções de configuração, os valores padrão e os intervalos, consulte opções de configuração avançadas.

É possível modificar as opções de configuração do pool de conexões gerenciadas de uma instância existente usando o console do Google Cloud, a CLI do Google Cloud ou a API AlloyDB.

Console

  1. Acesse a página Clusters.

    Acessar Clusters

  2. Clique em um cluster na coluna Nome do recurso.

  3. Na página Visão geral, navegue até Instâncias no cluster.

  4. Clique em Editar instância ou Editar pool de leitura na instância que você quer modificar.

  5. Em Pool de conexões gerenciado, expanda Opções avançadas de agrupamento.

  6. Modifique as opções de agrupamento avançado 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
    • Conexão máxima de clientes
    • Tempo limite de conexões de clientes inativas
    • Tempo limite de conexões inativas do servidor
    • Tempo limite de espera da consulta
    • Máximo de instruções preparadas
    • Ignorar parâmetros de inicialização
    • Ciclos de vida do servidor
  7. Clique em Atualizar instância.

gcloud

Para modificar as opções de configuração do pool de conexões gerenciadas de uma instância existente, use o seguinte comando gcloud alpha alloydb instances update:

  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 \
    }

Substitua:

  • INSTANCE_ID: o nome da instância do AlloyDB para a qual 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.
  • É possível configurar as seguintes opções:

    • --connection-pooling-pool-mode. Precisa ser 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

REST

Para modificar as opções de configuração de agrupamento de conexões gerenciadas de uma instância de pool de leitura, use o comando a seguir 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 criado. 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 criada.
  • É possível configurar as seguintes opções:

    • POOL_MODE. Precisa ser session ou transaction.
    • MAX_POOL_SIZE
    • MIN_POOL_SIZE
    • MAX_CLIENT_CONNECTION
    • SERVER_IDLE_TIMEOUT
    • QUERY_WAIT_TIMEOUT
    • IGNORE_STARTUP_PARAMETERS

Método HTTP e URL:

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

Solicitar corpo JSON:

{
  "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"
    },
  }
}

Conferir o status do pool de conexões gerenciado de uma instância

É possível conferir o status do pool de conexões gerenciadas de uma instância usando o console do Google Cloud, a CLI do Google Cloud ou a API AlloyDB.

Console

  1. Acesse a página Clusters.

    Acessar Clusters

  2. Clique em um cluster na coluna Nome do recurso.

  3. Na página Visão geral, encontre a instância para a qual você quer conferir o status do pool de conexões gerenciado. 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 comando gcloud alpha alloydb instances describe a seguir:

gcloud alpha 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 para a qual você quer modificar as opções de agrupamento de conexões gerenciadas.
  • PROJECT_ID: o ID do projeto.
  • REGION_ID: o ID da região.
  • CLUSTER_ID: o ID do cluster.

Se o agrupamento de conexões gerenciadas estiver ativado, a seguinte resposta será retornada:

True

REST

Para conferir o status do pool de conexões gerenciadas da sua instância do AlloyDB, use o comando a seguir 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 criado. 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 criada.

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 agrupamento de conexões gerenciado para uma instância

É possível desativar o pool de conexões gerenciadas para uma instância atual usando o console do Google Cloud, a CLI do Google Cloud ou a API AlloyDB.

Console

  1. Acesse a página Clusters.

    Acessar Clusters

  2. Clique em um cluster na coluna Nome do recurso.

  3. Na página Visão geral, navegue até Instâncias no cluster.

  4. Clique em Editar instância ou Editar pool de leitura para a instância que você quer desativar a conexão do pool gerenciado.

  5. Em Pool de conexões gerenciado, desmarque a caixa Ativar pool de conexões gerenciado.

  6. Clique em Atualizar instância.

gcloud

Para desativar o pool de conexões gerenciadas em uma instância atual, use o seguinte comando gcloud alpha alloydb instances update:

gcloud alpha 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 para a qual você quer desativar o agrupamento 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 gerenciado em uma instância de pool de leitura, use o comando a seguir e defina connectionPoolConfig 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 criado. 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 criada.

Método HTTP e URL:

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

Solicitar corpo JSON:

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

Monitorar o agrupamento de conexões gerenciado

O AlloyDB fornece as métricas a seguir para ajudar a monitorar como o pool de conexão gerenciado está sendo executado na sua instância. É 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 de clientes

/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 nesta métrica são:
  • active: o número de conexões ativas por banco de dados, incluindo os clientes inativos que não têm solicitações de consulta pendentes.
  • waiting: o número de clientes aguardando uma conexão de servidor por banco de dados.
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 nesta métrica são:
  • active: o número de conexões ativas por banco de dados.
  • idle: o número de conexões de servidor ociosas por banco de dados.
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 para um servidor em microssegundos por banco de dados.

Para mais informações, consulte Métricas do AlloyDB.

Limitações

As limitações a seguir se aplicam à versão de pré-lançamento e estão sujeitas a alterações ou remoção após a versão de GA ou depois:

  • O pooling de conexões gerenciado não oferece suporte à conexão com o proxy de autenticação do AlloyDB ou aos conectores de linguagem do AlloyDB.
  • Se você usar o agrupamento de conexões gerenciado no modo de agrupamento de transações, os seguintes recursos do SQL não terão suporte:
    • SET/RESET
    • LISTEN
    • WITH HOLD CURSOR
    • PREPARE/DEALLOCATE
    • PRESERVE/DELETE ROW tabelas temporárias
    • LOAD
    • Bloqueios de aviso no nível da sessão
    • Planos preparados no nível do protocolo