Aceda a serviços publicados através de back-ends
Este guia descreve como configurar um Application Load Balancer externo global com um back-end do Private Service Connect para aceder a um serviço que é publicado através do Private Service Connect.
Para mais informações, consulte o artigo Acerca dos back-ends do Private Service Connect.
Funções
A função de administrador do Compute Load Balancer
(roles/compute.loadBalancerAdmin) contém a autorização necessária para realizar
as tarefas descritas neste guia.
Antes de começar
Se quiser publicar o seu próprio serviço, consulte o artigo Publique serviços através do Private Service Connect.
Se estiver a associar um serviço publicado por terceiros, peça ao produtor do serviço as seguintes informações:
O URI da associação de serviço para o serviço ao qual quer estabelecer ligação. O anexo de serviço tem este formato:
projects/SERVICE_PROJECT/regions/REGION/serviceAttachments/SERVICE_NAMEQuaisquer requisitos para os nomes DNS que usa para enviar pedidos. Pode ter de usar nomes DNS específicos na configuração do mapa de URLs ou na configuração de DNS.
Crie um grupo de pontos finais de rede
Crie um NEG do Private Service Connect que aponte para a associação do serviço publicado ao qual quer aceder. Se o serviço publicado estiver implementado em várias regiões diferentes, crie um NEG por anexo de serviço.
Cada NEG do Private Service Connect consome um endereço IP /32 para que o balanceador de carga possa comunicar com ele.
Consola
Na Google Cloud consola, aceda à página Grupos de pontos finais de rede.
Clique em Criar grupo de pontos finais de rede.
Introduza um Nome para o grupo de pontos finais de rede.
Para o Tipo de grupo de pontos finais da rede, selecione Grupo de pontos finais da rede (Private Service Connect).
Selecione o tipo de destino Serviço publicado.
Para Serviço de destino, introduza o URI da associação de serviço.
Selecione a Rede e a Sub-rede onde quer criar o grupo de pontos finais de rede.
A sub-rede tem de estar na mesma região que o serviço publicado.
Clique em Criar.
gcloud
gcloud compute network-endpoint-groups create NEG_NAME \
--network-endpoint-type=private-service-connect \
--psc-target-service=TARGET_SERVICE \
--region=REGION \
--network=NETWORK \
--subnet=SUBNET
Substitua o seguinte:
NEG_NAME: um nome para o grupo de pontos finais da rede.TARGET_SERVICE: o anexo de serviço ao qual quer estabelecer ligação.REGION: a região na qual criar o grupo de pontos finais de rede. A região tem de ser a mesma região que o serviço de destino.NETWORK: a rede na qual criar o grupo de pontos finais de rede. Se for omitido, é usada a rede predefinida.SUBNET: a sub-rede na qual criar o grupo de pontos finais de rede. A sub-rede tem de estar na mesma região que o serviço de destino. Tem de fornecer uma sub-rede se fornecer a rede. Se a rede e a sub-rede forem omitidas, é usada a rede predefinida e a sub-rede predefinida na zona especificada.REGION
Reserve um endereço IP externo para o balanceador de carga
Para reservar um endereço IP externo para o equilibrador de carga, siga estes passos.
Consola
Na Google Cloud consola, aceda à página Endereços IP.
Para reservar um endereço IPv4, clique em Reservar endereço estático.
Atribua um nome ao recurso de endereço IP.
Defina o nível da rede como Premium.
Defina a versão do IP como IPv4.
Defina o Tipo como Global.
Clique em Reservar.
gcloud
Reserve um endereço IPv4 externo global para o balanceador de carga.
gcloud compute addresses create ADDRESS_NAME \ --ip-version=IPV4 --globalSubstitua
ADDRESS_NAMEpor um nome para o recurso de endereço IP.Execute este comando para ver o endereço IP reservado:
gcloud compute addresses describe ADDRESS_NAME \ --format="get(address)" --global
Crie um recurso de certificado SSL
Para criar um balanceador de carga HTTPS, tem de adicionar um recurso de certificado SSL ao front-end do balanceador de carga. Crie um recurso de certificado SSL usando um certificado SSL gerido pela Google ou um certificado SSL autogerido.
Certificados geridos pela Google. Recomendamos que use certificados geridos pela Google, porque Google Cloud obtém, gere e renova estes certificados automaticamente. Para criar um certificado gerido pela Google, tem de ter um domínio e os registos de DNS desse domínio para aprovisionar o certificado. Além disso, tem de atualizar o registo A do DNS do domínio para apontar para o endereço IP do balanceador de carga criado no passo anterior. Para ver instruções detalhadas, consulte o artigo Use certificados geridos pela Google.
Certificados autogeridos. Os certificados SSL autogeridos são certificados que obtém, aprovisiona e renova por si. Os certificados autogeridos podem ser assinados por uma autoridade de certificação ou podem ser autoassinados. Se forem assinados por uma autoridade de certificação, tem de ter um domínio. Além disso, tem de atualizar o registo A do DNS do domínio para apontar para o endereço IP do balanceador de carga criado no passo anterior. Para obter instruções detalhadas, consulte o artigo Use certificados SSL autogeridos.
Se não quiser configurar um domínio neste momento, pode usar um certificado SSL autoassinado para testes.
Estas instruções pressupõem que já criou um recurso de certificado SSL.
Configure o balanceador de carga
Configure um balanceador de carga de aplicações externo global com capacidades avançadas de gestão de tráfego (esquema de balanceamento de carga definido como EXTERNAL_MANAGED) para estabelecer ligação a um serviço gerido.
Se estiver a estabelecer ligação a um serviço publicado implementado em várias regiões, e tiver criado vários NEGs do Private Service Connect para estabelecer ligação a cada associação do serviço, pode adicionar todos os NEGs ao serviço de back-end.
Embora o NEG do Private Service Connect seja regional, todos os outros componentes de equilíbrio de carga nesta configuração são globais.
Consola
Selecione o tipo de balanceador de carga
Na Google Cloud consola, aceda à página Equilíbrio de carga.
- Clique em Criar equilibrador de carga.
- Em Tipo de balanceador de carga, selecione Balanceador de carga de aplicações (HTTP/HTTPS) e clique em Seguinte.
- Para Público ou interno, selecione Público (externo) e clique em Seguinte.
- Para a Implementação global ou de região única, selecione Melhor para cargas de trabalho globais e clique em Seguinte.
- Para Geração do balanceador de carga, selecione Balanceador de carga de aplicações externo global e clique em Seguinte.
- Clique em Configurar.
Configuração básica
- Introduza um nome do balanceador de carga.
- Mantenha a janela aberta para continuar.
Configuração da interface
- Clique em Configuração do front-end.
- Clique em Adicionar IP e porta do front-end.
- Introduza um nome para o equilibrador de carga.
- No campo Protocolo, selecione HTTPS (inclui HTTP/2).
- Certifique-se de que a Porta está definida como
443para permitir o tráfego HTTPS. Para Endereço IP, selecione o endereço IP que reservou.
Clique na lista Certificado e selecione o certificado que criou.
Clique em OK.
Clique em Concluído.
Configuração do back-end
O grupo de pontos finais da rede do Private Service Connect é um tipo de back-end do balanceador de carga. Adicione todos os NEGs do Private Service Connect para o mesmo serviço gerido ao serviço de back-end.
- Clique em Configuração de back-end.
- Clique na lista Serviços de back-end e contentores de back-end e, de seguida, clique em Criar um serviço de back-end.
- Introduza um nome para o serviço de back-end.
- Defina o Tipo de back-end como Grupo de pontos finais da rede do Private Service Connect.
- Na secção Back-ends, clique na lista Grupo de pontos finais da rede do Private Service Connect e selecione o NEG do Private Service Connect que criou. Clique em Concluído.
Se criou mais do que um NEG do Private Service Connect, clique em Adicionar back-end para selecionar outro NEG.
Repita este passo até que todos os NEGs para este serviço gerido sejam adicionados ao serviço de back-end.
Clique em Criar.
Regras de encaminhamento
Uma vez que esta configuração contém apenas um serviço de back-end, a regra de encaminhamento predefinida é suficiente e não tem de fazer alterações nesta secção.
Reveja e finalize
- Para rever a configuração, clique em Rever e finalizar.
- Clique em Criar.
gcloud
Crie um serviço de back-end para o serviço gerido ao qual quer estabelecer ligação.
gcloud compute backend-services create BACKEND_SERVICE_NAME \ --load-balancing-scheme=EXTERNAL_MANAGED \ --protocol=HTTPS \ --globalSubstitua
BACKEND_SERVICE_NAMEpelo nome do serviço de back-end.Adicione o NEG do Private Service Connect que aponta para o serviço de destino.
Se criou vários NEGs em diferentes regiões para o mesmo serviço, repita este passo para adicionar todos os NEGs ao serviço de back-end.
gcloud compute backend-services add-backend BACKEND_SERVICE_NAME \ --network-endpoint-group=NEG_NAME \ --network-endpoint-group-region=REGION \ --global
Substitua o seguinte:
BACKEND_SERVICE_NAME: o nome do serviço de back-end.NEG_NAME: o nome do grupo de pontos finais da rede.REGION: a região do grupo de pontos finais da rede.
Crie um mapa de URLs para o balanceador de carga.
Um mapa de URLs tem de fazer referência a um serviço de back-end predefinido. Configure o serviço de back-end que criou como o serviço de back-end predefinido.
gcloud compute url-maps create URL_MAP_NAME \ --default-service=BACKEND_SERVICE_NAME \ --global
Substitua o seguinte:
URL_MAP_NAME: um nome para o mapa de URLs.BACKEND_SERVICE_NAME: o nome do serviço de back-end predefinido do balanceador de carga. A predefinição é usada quando nenhuma regra de anfitrião corresponde ao nome do anfitrião pedido.
Crie o proxy HTTPS de destino.
Use o recurso de certificado SSL que criou para criar um proxy HTTPS de destino.
gcloud compute target-https-proxies create PROXY_NAME \ --url-map=URL_MAP_NAME \ --ssl-certificates=CERTIFICATE
Substitua o seguinte:
PROXY_NAME: um nome para o proxy HTTPS de destino.URL_MAP_NAME: o nome do mapa de URLs.CERTIFICATE: o nome do recurso do certificado.
Crie a regra de encaminhamento.
gcloud compute forwarding-rules create FWD_RULE \ --load-balancing-scheme=EXTERNAL_MANAGED \ --network-tier=PREMIUM \ --address=ADDRESS_NAME \ --target-https-proxy=PROXY_NAME \ --ports=443 \ --globalSubstitua o seguinte:
FWD_RULE: um nome para a regra de encaminhamento.ADDRESS_NAME: o recurso de endereço IP que reservou para usar na regra de encaminhamento.PROXY_NAME: o nome do proxy HTTPS de destino.
Configure registos de DNS
Se quiser aceder ao back-end do Private Service Connect através de um nome DNS, crie nomes DNS para cada regra de encaminhamento externo. O registo DNS tem de corresponder a um nome no mapa de URLs. A menos que o mapa de URLs reescreva os nomes, o registo DNS também tem de corresponder aos nomes que o serviço de produtor espera.
Se estiver a usar o Cloud DNS para gerir o DNS, consulte o artigo sobre como adicionar um registo DNS.
Valide a configuração
Crie a instância de VM.
gcloud compute instances create VM_NAME \ --network=NETWORK \ --image-project=debian-cloud --image-family=debian-11 \ --zone=ZONESubstitua o seguinte:
VM_NAME: um nome para a máquina virtual.NETWORK: a rede para a VM.ZONE: a zona da VM.
Estabeleça ligação à VM.
gcloud compute ssh VM_NAME --zone=ZONE
Use
curlpara validar a configuração. Este comando define o cabeçalhoHoste ignora a resolução de DNS especificando um endereço IP definido pelo utilizador. Pode omitir a porta se estiver a usar a porta predefinida para o protocolo, por exemplo, usar a porta 443 para HTTPS.Pode ignorar a validação de certificados com a flag
-k. Pode ter de ignorar a validação se usou um certificado autoassinado para configurar o proxy HTTPS de destino ou se a VM não tiver o certificado da autoridade de certificação que assinou o seu certificado.curl [-k] -s 'https://HOST:443/RESOURCE_URI' \ -H 'Host: HOST' \ --connect-to HOST:443:FWD_RULE_IP_ADDRESS:443Substitua o seguinte:
HOST: o nome do anfitrião configurado no mapa de URLs.RESOURCE_URI: o resto do URI do recurso que quer usar para validação.FWD_RULE_IP_ADDRESS: o endereço IP atribuído à regra de encaminhamento.
Problemas conhecidos
Falhas de verificações de funcionamento com NEGs globais
Existe um problema conhecido com os NEGs do Private Service Connect do consumidor que estão configurados para acesso global. Um NEG do Private Service Connect está configurado para acesso global se estiver associado a um serviço de back-end global.
Se associar um NEG do Private Service Connect configurado para acesso global a um balanceador de carga do produtor e o produtor de serviços desativar o acesso global para esse balanceador de carga, as verificações de estado não funcionam corretamente. Como resultado, o tráfego pode ser enviado para back-ends não íntegros e eliminado.
Se aceder a um serviço publicado através de um NEG do Private Service Connect configurado para acesso global e o seu back-end for afetado por este problema, faça uma das seguintes ações:
- Se quiser usar o acesso global, peça ao produtor do serviço para ativar o acesso global para o respetivo equilibrador de carga.
- Se não quiser usar o acesso global, reconfigure o NEG do Private Service Connect para acesso regional. Para o fazer, tem de remover o NEG do Private Service Connect do serviço de back-end global e, em seguida, anexar o NEG a um serviço de back-end regional.
Resolução de problemas
A criação do back-end é bem-sucedida, mas a conetividade não é estabelecida
Se criar com êxito um back-end para serviços publicados, mas a conetividade não for estabelecida, verifique o estado da ligação do back-end. O estado da ligação pode indicar os passos que pode seguir para resolver o problema.
A criação do back-end é bem-sucedida, mas o produtor está a recusar a ligação
Se receber um erro connection refused, significa normalmente que o servidor de back-end do produtor não está a ouvir na porta à qual o cliente está a tentar estabelecer ligação.
Peça ao produtor do serviço para verificar se o respetivo serviço está a ouvir na porta que especificou.
Se o serviço do produtor estiver alojado num equilibrador de carga de passagem interno que use várias portas, especifique a porta do produtor adequada na configuração do NEG do Private Service Connect. Consulte a configuração da porta do produtor.
O back-end tem problemas de desempenho ou limites de tempo de ligação
Se o seu back-end tiver problemas de desempenho ou limites de tempo de ligação intermitentes, tal pode dever-se a pacotes perdidos. Pode investigar os pacotes perdidos verificando as métricas descritas nas secções seguintes.
Pacotes rejeitados para o serviço publicado
A métrica private_service_connect/consumer/dropped_sent_packets_count
monitoriza pacotes de um consumidor do Private Service Connect, como
um back-end para um serviço publicado que são ignorados porque o back-end
excedeu as respetivas ligações máximas
ao serviço.
Se um back-end comunicar valores para esta métrica, considere as seguintes soluções:
- Crie back-ends adicionais que se liguem ao serviço publicado.
- Reduza o número de ligações através deste back-end.
- Peça ao produtor do serviço para aumentar a capacidade do serviço publicado, por exemplo, adicionando mais instâncias de máquinas virtuais (VM) ou pontos finais de rede.
Pacotes rejeitados de serviços publicados
O Private Service Connect só permite ligações iniciadas a partir da rede VPC do consumidor. Quando um consumidor inicia uma ligação, a ligação é monitorizada para fazer corresponder os pacotes de resposta do serviço publicado a uma ligação existente. Se o Private Service Connect não conseguir encontrar uma correspondência para um pacote de resposta, o pacote é rejeitado.
O Private Service Connect pode não encontrar uma correspondência para um pacote de resposta se um serviço publicado enviar pacotes de resposta após o tempo limite de uma ligação ter expirado. Se vir valores para esta métrica, contacte o produtor do serviço. Podem conseguir configurar o respetivo serviço para evitar este problema.