Estabeleça ligação a um cluster a partir do exterior da respetiva VPC

Esta página examina diferentes formas de estabelecer ligação a um cluster do AlloyDB para PostgreSQL a partir do exterior da respetiva nuvem privada virtual (VPC) configurada. Parte do princípio de que já criou um cluster do AlloyDB.

Acerca das ligações externas

O seu cluster do AlloyDB compreende vários nós numa Google Cloud VPC. Quando cria um cluster, também configura o acesso privado aos serviços entre uma das suas VPCs e a VPC gerida pela Google que contém o novo cluster. Esta ligação de peering permite-lhe usar endereços IP privados para aceder a recursos na VPC do cluster como se fizessem parte da sua própria VPC, usando endereços IP privados.

Existem situações em que a sua aplicação tem de estabelecer ligação ao cluster a partir do exterior desta VPC ligada:

  • A sua aplicação é executada noutro local no ecossistema Google Cloud , fora da VPC que associou ao cluster através do acesso a serviços privados.

  • A sua aplicação é executada numa VPC que existe fora da rede da Google.

  • A sua aplicação é executada "no local", num computador localizado noutro lugar na Internet pública.

Em todos estes casos, tem de configurar um serviço adicional para ativar este tipo de ligação externa ao seu cluster do AlloyDB.

Resumo das soluções de ligação externa

Recomendamos duas soluções gerais para estabelecer ligações externas, dependendo das suas necessidades:

As secções seguintes descrevem estas soluções de ligação externa em detalhe.

Ligue-se através de uma VM intermediária

Para estabelecer uma ligação a um cluster do AlloyDB a partir de fora da respetiva VPC através de ferramentas de código aberto e um mínimo de recursos adicionais, execute um serviço proxy numa VM intermediária configurada nessa VPC. Pode configurar uma nova VM para este fim ou usar uma VM já em execução na VPC do cluster do AlloyDB.

Como solução autogerida, a utilização de uma VM intermediária geralmente custa menos e tem um tempo de configuração mais rápido do que a utilização de um produto de conetividade de rede. Também tem desvantagens: a disponibilidade, a segurança e a taxa de transferência de dados da ligação passam a depender da VM intermediária, que tem de manter como parte do seu projeto.

Estabeleça ligação através do IAP

Com o Identity-Aware Proxy (IAP), pode ligar-se em segurança ao seu cluster sem ter de expor o endereço IP público da VM intermediária. Usa uma combinação de regras de firewall e gestão de identidade e de acesso (IAM) para limitar o acesso através desta rota. Isto torna as CAs uma boa solução para utilizações que não sejam de produção, como desenvolvimento e criação de protótipos.

Para configurar o acesso da IAP ao seu cluster, siga estes passos:

  1. Instale a CLI Google Cloud no seu cliente externo.

  2. Prepare o seu projeto para o encaminhamento TCP da CNA.

    Quando definir a nova regra de firewall, permita o tráfego TCP de entrada para a porta 22 (SSH). Se estiver a usar a rede predefinida do seu projeto com a regra default-allow-ssh pré-preenchida ativada, não precisa de definir uma regra adicional.

  3. Configure o encaminhamento de portas entre o cliente externo e a VM intermediária usando o SSH através do IAP.

    gcloud compute ssh my-vm \
           --tunnel-through-iap \
           --zone=ZONE_ID \
           --ssh-flag="-L PORT_NUMBER:ALLOYDB_IP_ADDRESS:5432"

    Substitua o seguinte:

    • ZONE_ID: o ID da zona onde o cluster está localizado, por exemplo, us-central1-a.
    • ALLOYDB_IP_ADDRESS: o endereço IP da instância do AlloyDB à qual quer estabelecer ligação.
    • PORT_NUMBER: o número da porta da sua VM.
  4. Teste a ligação através de psql no cliente externo, fazendo com que este se ligue à porta local que especificou no passo anterior. Por exemplo, para estabelecer ligação como a função de utilizador postgres para transferir a porta 5432:

    psql -h localhost -p 5432 -U USERNAME

    Substitua o seguinte:

    • USERNAME: o utilizador do PostgreSQL ao qual quer ligar-se à instância, por exemplo, o utilizador predefinido postgres.

Ligue-se através de um proxy SOCKS

A execução de um serviço SOCKS na VM intermediária oferece uma ligação flexível e escalável ao seu cluster do AlloyDB, com encriptação ponto a ponto fornecida pelo proxy de autorização do AlloyDB. Com a configuração adequada, pode torná-lo adequado para cargas de trabalho de produção.

Esta solução inclui os seguintes passos:

  1. Instale, configure e execute um servidor SOCKS na VM intermediária. Um exemplo é o Dante, uma solução de código aberto popular.

    Configure o servidor para associar à ens4interface de rede da VM para ligações externas e internas. Especifique qualquer porta que queira para ligações internas.

  2. Configure a firewall da VPC para permitir o tráfego TCP do endereço IP ou intervalo adequado para a porta configurada do servidor SOCKS.

  3. Instale o proxy de autenticação do AlloyDB no cliente externo.

  4. Execute o AlloyDB Auth Proxy no seu cliente externo, com a variável de ambiente ALL_PROXY definida para o endereço IP da VM intermediária e especificando a porta que o servidor SOCKS usa.

    Este exemplo configura o proxy Auth do AlloyDB para estabelecer ligação à base de dados em my-main-instance, através de um servidor SOCKS em execução em 198.51.100.1 na porta 1080:

    ALL_PROXY=socks5://198.51.100.1:1080 ./alloydb-auth-proxy \
    /projects/PROJECT_ID/locations/REGION_ID/clusters/CLUSTER_ID/instances/INSTANCE_ID

    Se estiver a estabelecer ligação a partir de uma VPC com peering, pode usar o endereço IP interno da VM intermediária; caso contrário, use o respetivo endereço IP externo.

  5. Teste a ligação através de psql no cliente externo, fazendo com que este se ligue à porta em que o proxy Auth do AlloyDB está a escutar. Por exemplo, para estabelecer ligação como a função de utilizador postgres para transferir a porta 5432:

    psql -h IP_ADDRESS -p PORT_NUMBER -U USERNAME

Ligue-se através de um pooler do PostgreSQL

Se precisar de instalar e executar o AlloyDB Auth Proxy na VM intermediária, em vez de num cliente externo, pode ativar ligações seguras ao mesmo sincronizando-o com um proxy com reconhecimento de protocolos, também conhecido como pooler. Os poolers de código aberto populares para o PostgreSQL incluem o Pgpool-II e o PgBouncer.

Nesta solução, executa o AlloyDB Auth Proxy e o pooler na VM intermediária. Em seguida, o cliente ou a aplicação podem ligar-se de forma segura diretamente ao pooler através de SSL, sem necessidade de executar serviços adicionais. O pooler encarrega-se de transmitir as consultas do PostgreSQL ao seu cluster do AlloyDB através do proxy de autorização.

Uma vez que cada instância num cluster do AlloyDB tem um endereço IP interno separado, cada serviço de proxy só pode comunicar com uma instância específica: a instância principal, a instância de reserva ou um conjunto de leitura. Por conseguinte, tem de executar um serviço de agrupamento separado com um certificado SSL configurado adequadamente para cada instância no cluster.

Estabeleça ligação através do Cloud VPN ou do Cloud Interconnect

Para o trabalho de produção que requer alta disponibilidade (HA), recomendamos a utilização de um produto Google Cloud Network Connectivity: o Cloud VPN ou o Cloud Interconnect, consoante as necessidades do seu serviço externo e a topologia de rede. Em seguida, configure o Cloud Router para anunciar as rotas adequadas.

Embora a utilização de um produto de conetividade de rede seja um processo mais complexo do que configurar uma VM intermediária, esta abordagem transfere os encargos de tempo de atividade e disponibilidade de si para a Google. Em particular, a VPN de alta disponibilidade oferece um SLA de 99,99%, o que a torna adequada para ambientes de produção.

As soluções de conetividade de rede também libertam o utilizador da necessidade de manter uma VM separada e segura como parte da sua aplicação, evitando os riscos de ponto único de falha inerentes a essa abordagem.

Para começar a saber mais sobre estas soluções, consulte o artigo Escolher um produto de conetividade de rede.

O que se segue?