Esta página examina maneiras diferentes de se conectar a um cluster do AlloyDB para PostgreSQL fora da nuvem privada virtual (VPC) configurada. Ele pressupõe que você já criou um cluster do AlloyDB.
Sobre as conexões externas
Seu cluster do AlloyDB é composto por vários nós em uma Google Cloud VPC. Ao criar um cluster, você também configura o acesso a serviços particulares entre uma das VPCs e a VPC gerenciada pelo Google que contém o novo cluster. Essa conexão com peering permite usar endereços IP particulares para acessar recursos na VPC do cluster como se eles fizessem parte da sua própria VPC, usando endereços IP particulares.
Há situações em que o aplicativo precisa se conectar ao cluster de fora da VPC conectada:
O aplicativo é executado em outro lugar do ecossistema Google Cloud , fora da VPC que você conectou ao cluster pelo acesso a serviços particulares.
Seu aplicativo é executado em uma VPC que existe fora da rede do Google.
Seu aplicativo é executado "localmente", em uma máquina localizada em algum outro lugar na Internet pública.
Em todos esses casos, você precisa configurar um serviço extra para ativar esse tipo de conexão externa com seu cluster do AlloyDB.
Resumo das soluções de conexão externa
Recomendamos duas soluções gerais para fazer conexões externas, dependendo das suas necessidades:
Para desenvolvimento ou prototipagem de projetos ou para um ambiente de produção relativamente baixo, configure uma máquina virtual (VM) intermediária, também conhecida como bastion, na sua VPC. Existem vários métodos para usar essa VM intermediária como uma conexão segura entre um ambiente de aplicativo externo e seu cluster do AlloyDB.
Para ambientes de produção que exigem alta disponibilidade, considere estabelecer uma conexão permanente entre a VPC e seu aplicativo por meio do Cloud VPN ou do Cloud Interconnect.
As próximas seções descrevem essas soluções de conexão externa em detalhes.
Conectar-se por uma VM intermediária
Para estabelecer uma conexão com um cluster do AlloyDB de fora da VPC usando ferramentas de código aberto e um mínimo de recursos adicionais, execute um serviço de proxy em uma VM intermediária configurada nessa VPC. É possível configurar uma nova VM para essa finalidade ou usar uma que já esteja em execução na VPC do cluster do AlloyDB.
Como solução autogerenciada, o uso de uma VM intermediária geralmente custa menos e tem um tempo de configuração mais rápido do que usar um produto de conectividade de rede. Isso também tem desvantagens: a disponibilidade, a segurança e a capacidade de dados da conexão dependem da VM intermediária, que você precisa manter como parte do projeto.
Conecte-se pelo IAP
Com o Identity-Aware Proxy (IAP), é possível se conectar ao cluster com segurança sem a necessidade de expor o endereço IP público da VM intermediária. Use uma combinação de regras de firewall e gerenciamento de identidade e acesso (IAM) para limitar o acesso por essa rota. Isso faz com que o IAP seja uma boa solução para usos que não sejam de produção, como desenvolvimento e prototipagem.
Para configurar o acesso do IAP ao cluster, siga estas etapas:
Instale a Google Cloud CLI no cliente externo.
Prepare seu projeto para o encaminhamento TCP do IAP.
Ao definir a nova regra de firewall, permita o tráfego TCP de entrada na porta
22
(SSH). Se você estiver usando a rede padrão do seu projeto com a regradefault-allow-ssh
preenchida previamente ativada, não não é preciso definir uma regra adicional.Configure o encaminhamento de portas entre o cliente externo e a VM intermediária usando SSH pelo IAP:
gcloud compute ssh my-vm \ --tunnel-through-iap \ --zone=ZONE_ID \ --ssh-flag="-L PORT_NUMBER:ALLOYDB_IP_ADDRESS:5432"
Substitua:
ZONE_ID
: o ID da zona em que o cluster está localizado, por exemplo,us-central1-a
.ALLOYDB_IP_ADDRESS
: o endereço IP da instância do AlloyDB à qual você quer se conectar.PORT_NUMBER
: o número da porta da VM.
Teste a conexão usando
psql
no cliente externo, conectando-o à porta local especificada na etapa anterior. Por exemplo, para se conectar como o papel de usuáriopostgres
à porta5432
:psql -h localhost -p 5432 -U USERNAME
Substitua:
USERNAME
: o usuário do PostgreSQL que você quer conectar à instância, por exemplo, o usuário padrãopostgres
.
Conectar-se por meio de um proxy SOCKS
A execução de um serviço SOCKS na VM intermediária fornece uma conexão flexível e escalonável ao cluster do AlloyDB, com criptografia de ponta a ponta fornecida pelo proxy de autenticação do AlloyDB. Com a configuração adequada, é possível tornar o serviço adequado para cargas de trabalho de produção.
Esta solução inclui as seguintes etapas:
Instale, configure e execute um servidor SOCKS na VM intermediária. Um exemplo é o Dante, uma solução de código aberto conhecida.
Configure o servidor para se vincular à interface de rede
ens4
da VM para conexões externas e internas. Especifique qualquer porta que você queira para conexões internas.Configure o firewall da VPC para permitir o tráfego TCP do intervalo ou do endereço IP apropriado até a porta configurada do servidor SOCKS.
Instale o proxy de autenticação do AlloyDB no cliente externo.
Execute o proxy de autenticação do AlloyDB no cliente externo com a variável de ambiente
ALL_PROXY
definida como o endereço IP da VM intermediária e especificando a porta que o servidor SOCKS usa.Este exemplo configura o proxy de autenticação do AlloyDB para se conectar ao banco de dados em
my-main-instance
, por um servidor SOCKS em execução em198.51.100.1
na porta1080
:ALL_PROXY=socks5://198.51.100.1:1080 ./alloydb-auth-proxy \ /projects/PROJECT_ID/locations/REGION_ID/clusters/CLUSTER_ID/instances/INSTANCE_ID
Se você estiver se conectando a partir de uma VPC com peering, use o endereço IP interno da VM intermediária. Caso contrário, use o endereço IP externo.
Teste a conexão usando
psql
no cliente externo, conectando-o à porta que o proxy de autenticação do AlloyDB ouve. Por exemplo, para se conectar como o papel de usuáriopostgres
à porta5432
:psql -h IP_ADDRESS -p PORT_NUMBER -U USERNAME
Conectar usando um pooler do PostgreSQL
Se você precisar instalar e executar o proxy de autenticação do AlloyDB na VM intermediária, em vez de em um cliente externo, ative conexões seguras com ele pareando-o com um proxy com reconhecimento de protocolo, também conhecido como pooler. Os pools de código aberto conhecidos para PostgreSQL incluem Pgpool-II e PgBouncer.
Nesta solução, você executa o proxy de autenticação do AlloyDB e o pooler na VM intermediária. Seu cliente ou aplicativo pode se conectar com segurança diretamente ao pooler por SSL, sem a necessidade de executar outros serviços. O pooler transmite as consultas do PostgreSQL para o cluster do AlloyDB pelo proxy de autenticação.
Como cada instância em um cluster do AlloyDB tem um endereço IP interno separado, cada serviço de proxy pode se comunicar com apenas uma instância específica: a instância principal, a de espera ou um pool de leitura. Portanto, é necessário executar um serviço de pooler separado, com um certificado SSL configurado corretamente, para cada instância no cluster.
Conectar-se por meio do Cloud VPN ou do Cloud Interconnect
Para trabalhos de produção que exigem alta disponibilidade (HA, na sigla em inglês), recomendamos o uso de um produto de conectividade de rede do Google Cloud: Cloud VPN ou Cloud Interconnect, dependendo das necessidades e da topologia de rede do serviço externo. Em seguida, configure o Cloud Router para divulgar as rotas apropriadas.
Embora o uso de um produto de conectividade de rede seja um processo mais complexo do que configurar uma VM intermediária, essa abordagem transfere o peso do tempo de atividade e da disponibilidade para o Google. 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 conectividade de rede também dispensam a necessidade de manter uma VM separada e segura como parte do aplicativo, evitando os riscos de ponto único de falha inerentes a essa abordagem.
Para saber mais sobre essas soluções, consulte Como escolher um produto de conectividade de rede.
A seguir
- Saiba mais sobre acesso a serviços particulares e conectividade local em VPCs Google Cloud .