Gerenciar conexões de banco de dados com endpoints de gravação

Nesta página, descrevemos como usar endpoints de gravação do AlloyDB para PostgreSQL para simplificar o gerenciamento de conexões de banco de dados para seus aplicativos.

Um endpoint é um recurso do AlloyDB que fornece um nome de serviço de nome de domínio (DNS) estável que seus aplicativos podem usar para se conectar a uma instância do AlloyDB. Ao usar um endpoint, você desacopla seu aplicativo do endereço IP específico ou do Identificador Uniforme de Recursos (URI) de uma instância. Essa abstração simplifica o gerenciamento de conexões durante eventos operacionais, como recuperação de desastres, restaurações de backup ou migrações, porque é possível redirecionar o nome DNS do endpoint para uma instância diferente sem mudar a configuração do aplicativo.

Os endpoints do AlloyDB são compatíveis com o tipo WRITE_ENDPOINT. Um endpoint de gravação direciona o tráfego para uma única instância principal do AlloyDB e atende ao tráfego de leitura e gravação.

Embora o nome DNS funcione como um recurso global, o recurso de endpoint em si é regional. Mesmo assim, cada endpoint pode se vincular a instâncias globalmente, e o nome DNS é resolvido de qualquer local.

Benefícios de usar endpoints

Usar um endpoint de gravação oferece os seguintes benefícios:

  • Recuperação de desastres simplificada:se você realizar uma substituição ou um failover entre regiões para um cluster secundário, o AlloyDB vai atualizar automaticamente o endpoint para apontar para a nova instância principal. Seus aplicativos podem se reconectar usando o mesmo nome DNS de endpoint, reduzindo o objetivo de tempo de recuperação (RTO).
  • Recuperação de backup sem problemas:quando você restaura uma instância de um backup, o AlloyDB cria uma nova instância com um novo endereço IP. Você pode atualizar o endpoint para apontar para a instância recém-restaurada. Isso permite que os aplicativos retomem a operação sem mudanças na configuração.
  • Migrações mais fáceis:durante as migrações, é possível alternar um endpoint de um banco de dados de origem para uma instância do AlloyDB com interrupção mínima do aplicativo.

Limitações

  • Os endpoints só são compatíveis com instâncias configuradas para usar o acesso a serviços particulares (PSA). Os endpoints não oferecem suporte a instâncias configuradas para usar o Private Service Connect (PSC).
  • O suporte aos Conectores de Linguagem e ao Proxy de Autenticação do AlloyDB não está disponível para o endpoint de gravação.
  • Não há suporte para operações simultâneas de modificação (como atualizações simultâneas ou uma operação de atualização e exclusão) em endpoints que apontam para a mesma instância de destino, e isso pode resultar em falha.

Antes de começar

  1. Instale e inicialize a Google Cloud CLI.
  2. Ative a API Cloud DNS.
  3. Verifique se você tem uma instância do AlloyDB para servir como destino do endpoint.
  4. Para receber as permissões necessárias para gerenciar endpoints, peça ao administrador para conceder a você a função do IAM Administrador do Identity and Access Management (roles/alloydb.admin) no projeto. Esse papel predefinido contém as permissões necessárias para gerenciar endpoints.

    Essas permissões também podem ser concedidas com papéis personalizados ou outros papéis predefinidos. As permissões específicas necessárias são:

    • alloydb.endpoints.create
    • alloydb.endpoints.update
    • alloydb.endpoints.get
    • alloydb.endpoints.list
    • alloydb.endpoints.delete

Para mais informações, consulte Papéis e permissões do IAM do AlloyDB.

É possível criar e gerenciar endpoints de gravação usando a Google Cloud CLI.

Crie um endpoint

Para criar um endpoint de gravação, use a Google Cloud CLI. O tipo de endpoint precisa ser WRITE_ENDPOINT e ter como destino uma única instância principal.

Console

  1. No console do Google Cloud , acesse a página Endpoints.

    Acessar o Endpoints

  2. Clique em Criar endpoint.

  3. No campo Nome do endpoint, insira um ID para o endpoint. Precisa conter letras minúsculas (a-z), números e hifens, começar com uma letra minúscula e terminar com uma letra minúscula ou um número.

  4. Selecione uma Região.

  5. Em Tipo de endpoint, selecione Gravar.

  6. No campo Instância de destino, selecione a instância principal a que este endpoint deve apontar.

  7. Clique em Criar.

gcloud

gcloud beta alloydb endpoints create ENDPOINT_ID \
    --project=PROJECT_ID \
    --region=REGION_ID \
    --endpoint-type=ENDPOINT_TYPE \
    --target-instances=TARGET_INSTANCE_NAME

Substitua:

  • ENDPOINT_ID: um identificador exclusivo do endpoint. Esse ID precisa ser exclusivo no projeto e no local especificados.
  • PROJECT_ID: o ID do projeto Google Cloud .
  • REGION_ID: o ID da região em que você quer criar o endpoint, por exemplo, us-central1.
  • ENDPOINT_TYPE: o tipo do recurso de endpoint. Somente WRITE_ENDPOINT é aceito.
  • TARGET_INSTANCE_NAME: o nome completo do recurso da instância do AlloyDB para PostgreSQL a que o endpoint se refere. O caminho completo do recurso de uma instância tem o seguinte formato: projects/$PROJECT/locations/$LOCATION/clusters/$CLUSTER/instances/$INSTANCE.

Conectar-se a uma instância usando um endpoint

Para se conectar à sua instância do AlloyDB usando um endpoint, primeiro receba o nome DNS gerado automaticamente associado ao endpoint.

Acessar o nome DNS

É possível conferir o nome DNS de um endpoint usando a Google Cloud CLI.

Console

  1. No console do Google Cloud , acesse a página Endpoints.

    Acessar o Endpoints

  2. Encontre o endpoint a que você quer se conectar e copie o valor na coluna Nome do DNS.

gcloud

  1. Use o comando gcloud beta alloydb endpoints describe:

    gcloud beta alloydb endpoints describe ENDPOINT_ID \
        --project=PROJECT_ID \
        --region=REGION_ID
    

    Substitua:

    • ENDPOINT_ID: o ID do endpoint
    • PROJECT_ID: o ID do projeto do Google Cloud
    • REGION_ID: o ID da região em que o endpoint reside
  2. Na resposta ao comando, encontre o campo dnsName e copie o valor dele.

Conectar usando psql

Depois de ter o nome DNS, use-o como host na string de conexão ou na ferramenta de cliente. Por exemplo, para se conectar usando o cliente psql, execute o seguinte comando:

psql -h DNS_NAME -U USERNAME -d DATABASE_NAME

Substitua:

  • DNS_NAME: o nome DNS do endpoint
  • USERNAME: o usuário do banco de dados a ser conectado;
  • DATABASE_NAME: o nome do banco de dados a ser conectado;

Para mais informações sobre como usar psql, consulte Conectar usando o cliente psql.

Atualizar um endpoint

Para mudar a instância a que um endpoint aponta, como após uma operação de restauração, use os seguintes comandos:

Console

  1. No console do Google Cloud , acesse a página Endpoints.

    Acessar o Endpoints

  2. Na linha do endpoint que você quer atualizar, clique em Ações e selecione Editar.

  3. No campo Instância de destino, selecione a nova instância principal a que esse endpoint deve apontar.

  4. Clique em Atualizar.

gcloud

gcloud beta alloydb endpoints update ENDPOINT_ID \
    --project=PROJECT_ID \
    --region=REGION_ID \
    --target-instances=NEW_TARGET_INSTANCE_NAME

Substitua:

  • ENDPOINT_ID: o ID do endpoint a ser atualizado
  • PROJECT_ID: o ID do projeto do Google Cloud
  • REGION_ID: o ID da região em que o endpoint reside
  • NEW_TARGET_INSTANCE_NAME: o nome completo do recurso das novas instâncias de destino

Listar endpoints

Para listar todos os endpoints em um determinado projeto e região, use o seguinte comando:

Console

  1. No console do Google Cloud , acesse a página Endpoints.

    Acessar o Endpoints

    A página lista todos os endpoints no projeto atual.

gcloud

gcloud beta alloydb endpoints list --project=PROJECT_ID \
    --region=REGION_ID

Substitua:

  • PROJECT_ID: o ID do projeto do Google Cloud
  • REGION_ID: o ID da região em que o endpoint reside

Ver detalhes do endpoint

Para conferir os detalhes de um endpoint específico, use o seguinte comando da Google Cloud CLI:

gcloud

gcloud beta alloydb endpoints describe ENDPOINT_ID \
    --project=PROJECT_ID \
    --region=REGION_ID

Substitua:

  • ENDPOINT_ID: o ID do endpoint a ser descrito
  • PROJECT_ID: o ID do projeto do Google Cloud
  • REGION_ID: o ID da região em que o endpoint reside

No console do Google Cloud , é possível conferir os detalhes do endpoint na página Endpoints.

Excluir um endpoint

Para excluir um endpoint, use os seguintes comandos:

Console

  1. No console do Google Cloud , acesse a página Endpoints.

    Acessar o Endpoints

  2. Na linha do endpoint que você quer excluir, clique em Ações e selecione Excluir.

  3. Para confirmar, digite o ID do endpoint e clique em Excluir.

gcloud

gcloud beta alloydb endpoints delete ENDPOINT_ID \
    --project=PROJECT_ID \
    --region=REGION_ID

Substitua:

  • ENDPOINT_ID: o ID do endpoint a ser excluído
  • PROJECT_ID: o ID do projeto do Google Cloud
  • REGION_ID: o ID da região em que o endpoint reside

Comportamento do endpoint de gravação durante o switchover ou o failover entre regiões

Embora o nome DNS de um endpoint seja resolvido para o IP de uma instância específica na criação, esses endpoints são dinâmicos. Em caso de atividades de replicação entre regiões, como uma substituição ou um failover entre regiões (prévia), os endpoints de gravação do AlloyDB garantem conectividade contínua sem intervenção manual. Quando um cluster secundário é promovido para se tornar o novo cluster principal, o endpoint atualiza automaticamente o registro DNS para apontar para a nova instância principal. Esse comportamento elimina a reconfiguração manual das strings de conexão do aplicativo, reduzindo significativamente a complexidade operacional e minimizando o tempo de inatividade para atender a um objetivo de tempo de recuperação (RTO).

Depois que a operação e a propagação do DNS forem concluídas, o aplicativo poderá se reconectar à nova instância principal usando o mesmo nome DNS de endpoint.

Evitar gravações conflitantes durante o failover

Usar um endpoint de gravação durante um failover entre regiões ajuda a evitar gravações conflitantes, direcionando automaticamente o novo tráfego de gravação para longe do cluster primário original e para o novo. Para mais informações sobre o comportamento do endpoint de gravação durante o failover, consulte Usar endpoints de gravação para evitar o split-brain.

A seguir