Configure a partilha de ligações gerida

Esta página descreve como ativar, estabelecer ligação e monitorizar o agrupamento de ligações geridas no AlloyDB para PostgreSQL. A pool de ligações gerida é um padrão de design que otimiza a gestão de ligações à base de dados através da manutenção de uma pool de ligações pré-estabelecidas. Este conjunto de ligações é reutilizado pela aplicação em vez de abrir e fechar ligações para cada operação de base de dados, o que melhora o desempenho e a utilização de recursos.

Com a pool de ligações gerida, pode dimensionar as cargas de trabalho da base de dados otimizando a utilização de recursos e a latência de ligação para as instâncias do AlloyDB. A gestão de pool de ligações atribui dinamicamente ligações de servidor a pedidos recebidos quando possível através de pooling e multiplexagem. Esta abordagem oferece melhorias no desempenho, especialmente para ligações dimensionadas, através da absorção de picos súbitos de ligações e da reutilização de ligações de bases de dados existentes. Em vez de se ligar a uma base de dados específica, quando usa o agrupamento de ligações geridas, uma aplicação liga-se a um agrupador, que oferece tempos de ligação mais curtos e escalabilidade para as suas cargas de trabalho de leitura.

Embora possa usar a pool de ligações gerida para qualquer carga de trabalho transacional, a pool de ligações gerida é mais adequada para aplicações que contenham mais ligações de curta duração ou aplicações que possam sofrer um aumento repentino de ligações.

Antes de começar

Tem de estabelecer ligação à sua instância através de uma ligação direta. A gestão de pools de ligações não suporta a ligação ao proxy de autenticação do AlloyDB nem aos conetores de linguagem do AlloyDB.

Funções necessárias

Para receber a autorização de que precisa para ativar e usar o conjunto de ligações gerido, peça ao seu administrador para lhe conceder a função de IAM administrador do AlloyDB no Google Cloud (roles/alloydb.admin) na instância do AlloyDB. Para mais informações sobre a atribuição de funções, consulte o artigo Faça a gestão do acesso a projetos, pastas e organizações.

Esta função predefinida contém a autorização alloydb.instances.update , que é necessária para ativar e usar o conjunto de ligações gerido.

Também pode obter esta autorização com funções personalizadas ou outras funções predefinidas.

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

A funcionalidade de agrupamento de ligações gerido do AlloyDB suporta as seguintes opções de configuração de agrupamento avançadas. Pode personalizar o conjunto de ligações geridas para satisfazer as necessidades da sua instância através destas opções de configuração. Pode definir estas configurações ao nível da instância através daGoogle Cloud consola, da CLI gcloud ou da API AlloyDB.

Nome da configuração Descrição
Modo de ligação
(connection-pooling-pool-mode)
Para o modo de ligação, pode selecionar a transação (predefinição) ou a sessão.

Transação (transaction):
Agrupa as ligações ao nível da transação. Uma ligação de servidor é atribuída a um cliente durante uma transação. Após a conclusão da transação, a ligação do servidor é reposta no conjunto.

Sessão (session):
Agrupa as ligações ao nível da sessão. É atribuída uma ligação de servidor ao cliente durante todo o tempo em que este permanece ligado. Depois de o cliente se desligar, a ligação ao servidor é novamente colocada no conjunto.
Tamanho máximo da piscina:
(connection-pooling-max-pool-size)
O tamanho máximo do conjunto de ligações por par de utilizador e base de dados. O valor predefinido é 50 associações.
Tamanho mínimo do conjunto
(connection-pooling-min-pool-size)
O tamanho mínimo do conjunto de ligações. O valor predefinido é 0 connections.
Limites de tempo de inatividade da ligação do cliente
(connection-pooling-client-connection-idle-timeout)
O tempo que uma ligação de cliente permanece inativa antes de expirar. Este valor pode variar entre 0 e 2 147 483 segundos, e o valor predefinido é 0 segundos.
Limites de tempo de inatividade da ligação ao servidor
(connection-pooling-server-connection-idle-timeout)
O tempo que uma ligação de servidor permanece inativa antes de expirar o tempo limite. Este valor pode variar entre 0 e 2 147 483 segundos, e o valor predefinido é 600 segundos.
Tempos limite de espera da consulta
(connection-pooling-query-wait-timeout)
O tempo que uma consulta aguarda até exceder o tempo limite. Este valor pode variar entre 0 e 2 147 483 segundos, e o valor predefinido é 120 segundos.
Máximo de declarações preparadas:
(connection-pooling-max-prepared-statements)
O número máximo de comandos de declarações preparadas enviados no modo de agrupamento de transações. O valor predefinido é 0.
Ignorar parâmetros de arranque
(connection-pooling-ignore-startup-parameters)
Os parâmetros que quer ignorar e que não são acompanhados nos pacotes de arranque por predefinição.
Tempo de vida do servidor
(connection-pooling-server-lifetime)
O tempo máximo durante o qual uma ligação de servidor fica sem utilização antes de a pool de ligações geridas a fechar. O valor predefinido é 3600 segundos.

Por predefinição, o conjunto de ligações gerido inicia ligações ao servidor do AlloyDB. Quando uma ligação de cliente é estabelecida e autenticada, a gestão de conjuntos de ligações pode criar uma ou mais ligações de servidor para que a dimensão do conjunto corresponda à configuração escolhida. Em seguida, é atribuída uma ligação de servidor disponível à ligação de cliente. As ligações ao servidor são mantidas até serem fechadas explicitamente ou ficarem inativas durante um período superior ao período de tempo limite de ligação inativa do servidor.

Ative a partilha de ligações gerida

Pode ativar o conjunto de ligações gerido para instâncias existentes ou novas.

Ative-o para uma nova instância principal

Para criar uma nova instância principal com a funcionalidade de agrupamento de ligações geridas ativada, consulte o artigo Crie uma instância principal. Pode ativar o conjunto de ligações gerido para uma instância através da Google Cloud consola, da Google Cloud CLI ou da API AlloyDB.

Ative para uma nova instância de conjunto de leitura

Para criar uma nova instância de banco de leitura com a funcionalidade de agrupamento de ligações gerido ativada, consulte o artigo Crie uma instância de banco de leitura. Pode ativar o conjunto de ligações gerido para uma instância através da Google Cloud consola, da Google Cloud CLI ou da API AlloyDB.

Ative para uma instância existente

Pode ativar o conjunto de ligações gerido para uma instância existente através da Google Cloud consola, da Google Cloud CLI ou da API AlloyDB.

Consola

  1. Aceda à página Clusters.

    Aceda a Clusters

  2. Clique num cluster na coluna Nome do recurso.

  3. Na página Vista geral, navegue para Instâncias no seu cluster.

  4. Clique em Editar principal ou Editar conjunto de leitura.

  5. Em Conjunto de ligações gerido, selecione a caixa Ativar conjunto de ligações gerido.

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

    Pode personalizar as opções de agrupamento de ligações geridas para satisfazer as necessidades da sua instância. Para mais informações, consulte as opções de configurações avançadas.

  7. Clique em Guardar alterações.

gcloud

Para ativar a pool de ligações gerida para uma instância principal ou de leitura 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 \
  --enable-connection-pooling

Substitua o seguinte:

  • INSTANCE_ID: o ID da instância do AlloyDB para a qual quer ativar o pool de ligações gerido.
  • PROJECT_ID: o ID do projeto.
  • REGION_ID: o ID da região.
  • CLUSTER_ID: o ID do cluster.

Depois de ativar a partilha de ligações gerida, pode personalizar as opções de partilha de ligações gerida para satisfazer as 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 o artigo Modifique a partilha de ligações gerida para uma instância.

REST

Para ativar a partilha de ligações geridas para uma instância principal ou de leitura existente, use o seguinte comando e defina connectionPoolConfig:

Antes de usar qualquer um dos dados do pedido, faça as seguintes substituições:

  • PROJECT_ID: o ID do projeto.
  • LOCATION_ID: o ID da região do cluster.
  • CLUSTER_ID: o ID do cluster. Tem de começar com uma letra minúscula e pode conter letras minúsculas, números e hífenes.
  • 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 do pedido:

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

Ligue-se à gestão de conjuntos de ligações

A ligação à partilha de ligações gerida é idêntica às ligações diretas à base de dados, exceto num porto diferente. A pool de ligações gerida escuta na porta 6432. Qualquer utilizador adicionado à instância do AlloyDB pode estabelecer ligação através da partilha de ligações gerida.

Estabeleça ligação através da autenticação integrada

O exemplo de comando associa a sua instância do AlloyDB à partilha de ligações gerida através da autenticação incorporada.

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

Ligue através de ligações SSL

O modo SSL da instância também se aplica a quaisquer ligações ao conjunto de ligações gerido. Por predefinição, apenas são aceites ligações SSL. Para permitir ligações não encriptadas, 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

Modifique o conjunto de ligações gerido para uma instância

Depois de ativar a partilha de ligações gerida, pode personalizar as opções de partilha de ligações gerida de acordo com as necessidades da sua instância através das opções de configuração avançadas. Estas opções de configuração são denominadas flags de agrupamento de ligações geridas. Para mais informações sobre as opções de configuração, os respetivos valores predefinidos e intervalos, consulte as opções de configuração avançadas.

Pode modificar as opções de configuração do conjunto de ligações gerido para uma instância existente através da Google Cloud consola, da CLI Google Cloud ou da API AlloyDB.

Consola

  1. Aceda à página Clusters.

    Aceda a Clusters

  2. Clique num cluster na coluna Nome do recurso.

  3. Na página Vista geral, navegue para Instâncias no seu cluster.

  4. Clique em Editar instância ou Editar conjunto de leitura para a instância que quer modificar.

  5. Em Conjunto de ligações gerido, expanda as Opções avançadas de agrupamento.

  6. Modifique as opções de união avançadas que quer atualizar. Pode modificar as seguintes opções:

    • Modo de ligação
    • Tamanho máximo do conjunto
    • Tamanho mínimo da piscina
    • Associação máxima de clientes
    • Limites de tempo de inatividade da ligação do cliente
    • Limites de tempo de inatividade da ligação ao servidor
    • Tempo limite de espera da consulta
    • Número máximo de declarações preparadas
    • Ignorar parâmetros de arranque
    • Duração do servidor
  7. Clique em Atualizar instância.

gcloud

Para modificar as opções de configuração do conjunto de ligações geridas para 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 \
      | --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 o seguinte:

  • INSTANCE_ID: o nome da instância do AlloyDB para a qual quer desativar o conjunto de ligações gerido.
  • PROJECT_ID: o ID do projeto.
  • REGION_ID: o ID da região.
  • CLUSTER_ID: o ID do cluster.
  • Pode configurar as seguintes opções:

    • --connection-pooling-pool-mode. Tem de ser um dos seguintes: 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

Para modificar as opções de configuração do conjunto de ligações geridas para uma instância de conjunto de leitura existente, use o seguinte comando e defina connectionPoolConfig:

Antes de usar qualquer um dos dados do pedido, faça as seguintes substituições:

  • PROJECT_ID: o ID do projeto.
  • LOCATION_ID: o ID da região do cluster.
  • CLUSTER_ID: o ID do cluster que cria. Tem de começar com uma letra minúscula e pode incluir letras minúsculas, números e hífenes.
  • INSTANCE_ID: o ID da instância que cria.
  • Pode configurar as seguintes opções:

    • POOL_MODE. Tem de ser um dos seguintes: 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

Corpo JSON do pedido:

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

Veja o estado da partilha de ligações gerida para uma instância

Pode ver o estado da partilha de ligações gerida para uma instância através da consola, da CLI Google Cloud ou da API AlloyDB. Google Cloud

Consola

  1. Aceda à página Clusters.

    Aceda a Clusters

  2. Clique num cluster na coluna Nome do recurso.

  3. Na página Vista geral, encontre a instância para a qual quer ver o estado da gestão de pools de ligações. O campo Agrupamento de ligações gerido mostra se está ativado ou desativado.

gcloud

Para ver o estado da gestão de pool de ligações para uma instância existente, use o seguinte comando gcloud alpha alloydb instances describe:

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

Substitua o seguinte:

  • INSTANCE_ID: o nome da instância do AlloyDB para a qual quer modificar as opções de agrupamento de ligações geridas.
  • PROJECT_ID: o ID do projeto.
  • REGION_ID: o ID da região.
  • CLUSTER_ID: o ID do cluster.

Se a pool de ligações gerida estiver ativada, é devolvida a seguinte resposta:

True

REST

Para ver o estado da partilha de ligações gerida para a sua instância do AlloyDB, use o seguinte comando e procure connectionPoolConfig:

Antes de usar qualquer um dos dados do pedido, faça as seguintes substituições:

  • PROJECT_ID: o ID do projeto.
  • LOCATION_ID: o ID da região do cluster.
  • CLUSTER_ID: o ID do cluster que cria. Tem de começar com uma letra minúscula e pode incluir letras minúsculas, números e hífenes.
  • INSTANCE_ID: o ID da instância que cria.

Método HTTP e URL:

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

Desative a partilha de ligações geridas para uma instância existente

Pode desativar o conjunto de ligações gerido para uma instância existente através da Google Cloud consola, da CLI Google Cloud ou da API AlloyDB.

Consola

  1. Aceda à página Clusters.

    Aceda a Clusters

  2. Clique num cluster na coluna Nome do recurso.

  3. Na página Vista geral, navegue para Instâncias no seu cluster.

  4. Clique em Editar instância ou Editar conjunto de leitura para a instância que quer desativar a associação gerida.

  5. Em Conjunto de ligações gerido, desmarque a caixa Ativar conjunto de ligações gerido.

  6. Clique em Atualizar instância.

gcloud

Para desativar a pool de ligações gerida para 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 \
  --no-enable-connection-pooling

Substitua o seguinte:

  • INSTANCE_ID: o nome da instância do AlloyDB para a qual quer desativar a partilha de ligações gerida.
  • PROJECT_ID: o ID do projeto.
  • REGION_ID: o ID da região.
  • CLUSTER_ID: o ID do cluster.

REST

Para desativar a pool de ligações gerida para uma instância de pool de leitura existente, use o seguinte comando e defina connectionPoolConfig como false:

Antes de usar qualquer um dos dados do pedido, faça as seguintes substituições:

  • PROJECT_ID: o ID do projeto.
  • LOCATION_ID: o ID da região do cluster.
  • CLUSTER_ID: o ID do cluster que cria. Tem de começar com uma letra minúscula e pode incluir letras minúsculas, números e hífenes.
  • INSTANCE_ID: o ID da instância que cria.

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 do pedido:

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

Monitorize a partilha de ligações gerida

O AlloyDB fornece as seguintes métricas para ajudar a monitorizar o funcionamento do conjunto de ligações gerido na sua instância. Pode ver estas métricas através do Explorador de métricas.

Nome da métrica Descrição
Número de pools de ligações

/database/conn_pool/num_pools
O número total de conjuntos de ligações por base de dados.
Ligações de clientes

/database/conn_pool/client_connections
Monitoriza o número de associações de clientes agrupadas pelo estado da associação de clientes por base de dados. Os estados incluídos nesta métrica são:
  • active: o número de ligações ativas por base de dados, incluindo os clientes inativos que não têm pedidos de consulta pendentes.
  • waiting: o número de clientes à espera de uma ligação ao servidor por base de dados.
Associações de servidor

/database/conn_pool/server_connections
Monitoriza o número de ligações ao servidor agrupadas pelo estado da ligação ao servidor por base de dados. Os estados incluídos nesta métrica são:
  • active: o número de ligações ativas por base de dados.
  • idle: o número de ligações de servidor inativas por base de dados.
Tempo de espera médio

/database/conn_pool/client_connections_avg_wait_time
O tempo médio gasto por todos os clientes no estado de espera por um servidor em microsegundos por base de dados.

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

Limitações

As seguintes limitações aplicam-se durante a versão de pré-visualização e estão sujeitas a alterações ou remoção após a versão de disponibilidade geral ou posteriormente:

  • A gestão de pools de ligações não suporta a ligação ao proxy de autenticação do AlloyDB nem aos conectores de linguagem do AlloyDB.
  • Se usar a pool de ligações gerida no modo de pool de transações, as seguintes funcionalidades SQL não são suportadas:
    • SET/RESET
    • LISTEN
    • WITH HOLD CURSOR
    • PREPARE/DEALLOCATE
    • PRESERVE/DELETE ROW tabelas temporárias
    • LOAD
    • Bloqueios consultivos ao nível da sessão
    • Planos preparados ao nível do protocolo
  • A partilha de ligações gerida não é suportada para ligações de IP público.