Um grupo de endpoints de rede (NEG) da Internet define um back-end externo de um balanceador de carga. Um back-end externo reside fora do Google Cloud. Use esse tipo de back-end com um balanceador de carga HTTP(S) externo. É preciso fazer isso para exibir o conteúdo de um back-end externo e para fazer o balanceador de carga HTTP(S) externo ser o front-end.
Isso permite tomar as seguintes ações:
- Usar a infraestrutura do Google Edge para encerrar conexões de usuário.
- Direcionar as conexões para o back-end externo.
- Usar o Cloud CDN para armazenar em cache o conteúdo do back-end externo.
- Enviar tráfego para o endpoint público por meio do backbone privado do Google, o que aumenta a confiabilidade e pode diminuir a latência entre o cliente e o servidor.
Neste documento, você aprenderá a usar back-ends externos com o balanceador de carga HTTP(S) externo global (versão clássica). Não é possível usar back-ends externos com o balanceador de carga HTTP(S) externo global com recurso de gerenciamento de tráfego avançado, o balanceador de carga HTTP(S) regional ou qualquer outro balanceador de carga. tipos. No entanto, é possível usar back-ends externos com o Traffic Director. Para saber como fazer isso, consulte Traffic Director com grupos de endpoints de rede da Internet.
Para mais informações sobre NEGs zonais, consulte Visão geral de grupos de endpoints de rede zonais.
Para informações sobre NEGs sem servidor, consulte Visão geral do grupo de endpoints de rede sem servidor.
Terminologia
Às vezes, os termos a seguir são usados de maneira intercambiável porque têm significados iguais ou semelhantes:
- Back-end externo: um back-end que reside fora do Google Cloud e pode ser acessado pela Internet. O endpoint em um NEG da Internet.
- Origem personalizada: igual a um back-end externo. Na CDN, origem é o termo padrão do setor para uma instância de back-end que exibe conteúdo da web.
- Grupo de endpoints da rede na Internet (NEG): o recurso da API Google Cloud usado para especificar um back-end externo.
- Endpoint externo: igual a um back-end externo.
Este documento usa o termo back-end externo, exceto ao se referir ao recurso de API do NEG da Internet.
Visão geral
Os NEGs da Internet são recursos globais hospedados em infraestrutura local ou fornecida por terceiros.
Tipos de endpoint
Ao criar um NEG da
Internet, você especifica
o tipo de endpoint de rede INTERNET_FQDN_PORT
ou INTERNET_IP_PORT
:
Endereço do endpoint | Tipo | Definição | Quando usar |
---|---|---|---|
Nome do host e uma porta opcional | INTERNET_FQDN_PORT |
Para balanceamento de carga de HTTP(S) externo, um nome de domínio totalmente qualificado que pode ser resolvido publicamente e uma porta opcional, por exemplo, backend.example.com:443 (portas padrão: 80 para HTTP e 443 para HTTPS).Para o Traffic Director, a ordem de resolução de nomes da rede VPC é usada para resolver o FQDN. |
Use este endpoint com balanceamento de carga HTTP(S) externo quando o back-end
externo puder ser resolvida
com um nome de domínio totalmente qualificado com DNS público. Use esse endpoint com o Traffic Director para enviar tráfego para serviços externos. |
Endereço IP e uma porta opcional | INTERNET_IP_PORT |
Um endereço IP que pode ser acessado publicamente e uma porta opcional.
Por exemplo, 8.8.8.8 ou 8.8.8.8:443 (portas padrão:
80 para HTTP e 443 para HTTPS). |
Use este endpoint somente com balanceamento de carga de HTTP(S) externo para especificar um endereço IP que pode ser acessado publicamente e uma porta à qual se conectar. |
Em um NEG da Internet, não é possível ter mais de um endpoint. Os grupos de endpoints de rede
da Internet não são compatíveis com o tipo de endpoint GCE_VM_IP_PORT
.
As seções a seguir explicam como os back-ends externos são usados com balanceadores de carga HTTP(S) externos. Quando você usa um back-end externo com o Traffic Director, o DNS, a verificação de integridade e o roteamento de tráfego se comportam de maneira diferente. Para mais informações, consulte Traffic Director com grupos de endpoints de rede da Internet.
Especificações e componentes do balanceamento de carga
É possível usar um back-end externo em um balanceador de carga com o nível de serviço de rede Premium.
No entanto, como é permitido apenas um endpoint em cada NEG da Internet, o balanceamento de carga não é realmente realizado. Isso significa que não é possível usar nenhum dos modos de balanceamento de carga, como taxa ou utilização. O balanceador de carga serve apenas como front-end e faz o proxy do tráfego para o back-end externo especificado.
A seleção de encaminhamento é baseada em um mapa de URLs. Para proxies HTTP(S) de destino, o serviço de back-end usado é determinado pela verificação do nome do host e do caminho da solicitação no mapa de URLs. Os balanceadores de carga HTTP(S) podem ter vários serviços de back-end referenciados no mapa de URLs.
Cada balanceador de carga HTTP(S) externo tem sua própria regra de encaminhamento externo global para direcionar o tráfego para o objeto apropriado do proxy de destino.
Se o mapa de URLs enviar a solicitação para um serviço de back-end que contenha um NEG da Internet, o serviço de back-end direcionará o tráfego para esse back-end externo.
Na ilustração a seguir, há um balanceador de carga HTTP(S) externo com vários tipos de back-end, sendo que um deles é um back-end externo.
Serviço de back-end
Como mostrado na seção anterior, um NEG da Internet é um tipo de back-end compatível com um serviço de back-end de um balanceador de carga HTTP(S) externo. Ele permite usar a infraestrutura de borda global do Google para encerrar solicitações de usuários na frente de um back-end externo.
Quando você adiciona um NEG da Internet a um serviço de back-end:
O serviço de back-end também não pode usar NEGs zonais ou grupos de instâncias como back-ends. Todos os back-ends de um serviço de back-end precisam ser do mesmo tipo.
Só é possível adicionar um back-end de NEG da Internet ao mesmo serviço de back-end.
Apenas um endpoint pode ser adicionado a um NEG da Internet.
O serviço de back-end não pode fazer referência a uma verificação de integridade.
O esquema de balanceamento de carga do serviço de back-end precisa ser
EXTERNAL
e o respectivo protocolo tem que ser uma destas opções:HTTP
,HTTPS
ouHTTP2
.Os recursos do serviço de back-end são compatíveis com o uso de um NEG da Internet. Esses recursos incluem:
Verificações de integridade
Um serviço de back-end com um NEG da Internet não é compatível com uma verificação de integridade. O Google Cloud não fornece verificação de integridade para nenhum back-end externo.
Caso o back-end externo se torne inacessível ou o nome de host (FQDN) configurado não possa ser resolvido, o balanceador de carga HTTP(S) externo retornará aos clientes a resposta "HTTP 502 (Bad Gateway)".
Como autenticar solicitações
Para permitir que um balanceador de carga HTTP(S) externo envie solicitações ao back-end externo:
Consulte o registro TXT
_cloud-eoips.googleusercontent.com
do DNS usando uma ferramenta comodig
ounslookup
.Exemplos:
dig _cloud-eoips.googleusercontent.com txt @8.8.8.8
nslookup -q=TXT _cloud-eoips.googleusercontent.com 8.8.8.8
Observe os CIDRs (após
ip4:
) e verifique se esses intervalos são permitidos pelo firewall ou pela lista de controle de acesso (ACL, na sigla em inglês) da nuvem. Para ver um exemplo, consulte Como adicionar os intervalos de IPs necessários à lista de permissões.Defina um cabeçalho personalizado para indicar que a solicitação veio de um balanceador de carga HTTP(S) externo do Google Cloud usando um cabeçalho de solicitação personalizado.
- Por exemplo, é possível usar 16 ou mais bytes criptograficamente aleatórios como uma chave compartilhada.
Também é possível ativar o Identity-Aware Proxy (IAP) e verificar se o JWT assinado no cabeçalho da solicitação é assinado pelo Google e se a declaração
aud
(público) contém o número do projeto em que o balanceador de carga HTTP(S) externo está definido. O IAP não é compatível com o Cloud CDN.
Validação da certificação do servidor SSL e validação do SAN
Com HTTPS ou HTTP/2 como protocolo de back-end, é recomendável usar
INTERNET_FQDN_PORT
para criar o back-end externo.
Ao criar um back-end externo usando INTERNET_FQDN_PORT
, o balanceador de
carga valida o certificado do servidor SSL apresentado pelo back-end externo
e verifica se:
- o certificado é assinado por CAs conhecidas;
- o certificado não expirou;
- a assinatura do certificado é válida;
- O FQDN configurado corresponde a um dos nomes alternativos para o requerente (SANs) no certificado.
Compatibilidade com a extensão de indicação de nome do servidor (SNI) SSL
A SNI só é aceita quando você usa INTERNET_FQDN_PORT
com HTTPS ou HTTP/2 como
protocolo de back-end. Nesse caso, o FQDN configurado recebe uma SNI no
client hello durante o handshake de SSL entre o balanceador de carga e o endpoint
externo. A SNI não é enviada quando você configura o endpoint como
INTERNET_IP_PORT
porque literais de endereço IP não são permitidos no
campo HostName
de um payload de SNI.
Resolução de endereço IP para endpoints FQDN
Quando um endpoint INTERNET_FQDN_PORT
aponta para um registro DNS que retorna
vários endereços IP, o endereço IP é resolvido da seguinte forma:
O balanceador de carga HTTP(S) externo tenta se conectar ao primeiro endereço IP na resposta DNS. Se esse endereço IP não estiver acessível, o balanceador de carga retornará a resposta "HTTP 502 (Bad Gateway)". Isso ocorre mesmo que outros endereços IP da resposta DNS estejam disponíveis.
O balanceador de carga HTTP(S) externo usa um resolvedor de DNS na região do Google Cloud mais próxima do cliente na Internet. Se o registro DNS do endpoint
INTERNET_FQDN_PORT
retornar endereços IP diferentes com base na localização do cliente, verifique se cada um deles pode ser acessado pelo balanceador de carga.
Para mais informações sobre os intervalos de IP e os locais usados pela infraestrutura do resolvedor de DNS do Google, consulte a documentação do DNS público do Google.
Registros
As solicitações encaminhadas por proxy para um back-end externo são registradas no Cloud Logging da mesma forma que as solicitações de outros back-ends de balanceamento de carga HTTP(S). Para mais informações, consulte Geração de registros e monitoramento de balanceamento de carga HTTP(S).
Se você ativar o Cloud CDN para um back-end externo, as ocorrências em cache também serão registradas.
Processamento de cabeçalho
Quando um balanceador de carga HTTP(S) externo encaminha solicitações por proxy para um back-end externo, ele ajusta os cabeçalhos HTTP das seguintes maneiras:
Alguns cabeçalhos são agrupados. Quando houver várias instâncias da mesma chave de cabeçalho (por exemplo,
Via
), o balanceador de carga combinará os valores delas em uma lista separada por vírgulas para uma chave de cabeçalho. Serão agrupados somente cabeçalhos com valores que possam ser representados como uma lista separada por vírgulas. Outros cabeçalhos, comoSet-Cookie
, nunca são agrupados.Os cabeçalhos têm a primeira letra de cada palavra exibida em maiúscula quando o protocolo do serviço de back-end é
HTTP
ouHTTPS
:A primeira letra da chave do cabeçalho e todas as letras após um hífen (
-
) são exibidas em maiúsculas para preservar a compatibilidade com clientes HTTP/1.1. Por exemplo,user-agent
é alterado paraUser-Agent
econtent-encoding
é alterado paraContent-Encoding
.Alguns cabeçalhos, como
TE
, codificação de transferência, eAccept-CH
, hints do cliente, são convertidos para corresponder à representação padrão em letras mistas.
Alguns cabeçalhos são adicionados ou têm valores anexados a eles. Os balanceadores de carga HTTP(S) externos sempre adicionam ou modificam determinados cabeçalhos, como
Via
eX-Forwarded-For
.
Limitações
- Não é possível usar NEGs da Internet como back-ends para balanceadores de carga HTTP(S) externos regionais.
- Um back-end externo com um FQDN definido precisa ser resolvível pelo DNS público do Google. Os nomes que não puderem ser resolvidos pelo sistema DNS público não poderão ser usados como um back-end externo.
- Um back-end externo precisa ser um endereço IPv4 roteável publicamente ou
ser resolvido para um endereço deste tipo:
- Um back-end externo não pode ser um endereço RFC 1918.
- Ele precisa ser acessível pela Internet. O endpoint não pode ser acessível apenas por meio do Cloud VPN ou do Cloud Interconnect.
- Se o back-end externo se referir a um serviço ou uma API do Google, o serviço
precisará ser acessível pela porta TCP
80
ou443
usando o protocoloHTTP
,HTTPS
ouHTTP/2
.
- Só é possível usar NEGs da Internet no nível de serviço de rede Premium, que é o nível padrão. Para mais informações, consulte a documentação dos Níveis de serviço de rede.
- Use IP:{optional port} para o endpoint
INTERNET_IP_PORT
ou FQDN:{optional port} paraINTERNET_FQDN_PORT
. - Ao usar um NEG com o tipo de endpoint
INTERNET_FQDN_PORT
ouINTERNET_IP_PORT
, apenas um endpoint pode ser adicionado ao NEG. Isso significa que, ao usar um NEG com o tipo de endpoint de redeINTERNET_FQDN_PORT
ouINTERNET_IP_PORT
em umbackendService
, não é possível anexar vários NEGs abackendService
. - No momento, o balanceamento de carga não é compatível com back-ends externos. As solicitações são apenas encaminhadas por proxy para o endpoint. A infraestrutura do Google Edge encerra as conexões de usuário e direciona as conexões para o back-end externo.
- Os NEGs da Internet podem ser usados sem o Cloud CDN ativado. Com essa configuração, ainda não é possível anexar vários NEGs ao serviço de back-end. Ou seja, a restrição de apenas um endpoint permanece.
- Nenhuma verificação de integridade é executada para o back-end externo. Caso o back-end externo se torne inacessível ou esteja especificado como FQDN, mas não possa ser resolvido, o Cloud CDN enviará uma mensagem "HTTP 502 (Bad Gateway)" em resposta às solicitações de usuários.
- Ao usar um back-end externo que espera um valor específico para o cabeçalho
Host
da solicitação HTTP, configure o serviço de back-end para definir o cabeçalhoHost
com esse valor esperado. Se você não configurar um cabeçalho de solicitação personalizado, um serviço de back-end preservará o cabeçalhoHost
usado pelo cliente para se conectar ao balanceador de carga HTTP(S) externo do Google Cloud. Para informações gerais sobre cabeçalhos de solicitação personalizados, consulte Como criar cabeçalhos de solicitação personalizados. Para ver um exemplo específico, consulte Como configurar um balanceador de carga com um back-end externo.
Cota
A cota atual de grupos de endpoints de rede é que estabelece quantos NEGs com endpoints de rede externos poderão ser configurados. Para mais informações, consulte Back-ends de NEG e Endpoints por NEG.
Preço
O tráfego de saída para o endpoint de um NEG da Internet (tipo
INTERNET_FQDN_PORT
ou INTERNET_IP_PORT
) é cobrado de acordo com as taxas de saída
da Internet para redes do nível Premium.
A origem é baseada na localização do cliente, e o destino é baseado na localização do endpoint público.
Para mais informações, consulte Preços do Cloud CDN para back-ends externos.
A seguir
- Como configurar um balanceador de carga HTTP(S) externo com um NEG da Internet
- Traffic Director com grupos de endpoints de rede da Internet
- Configuração do Traffic Director para grupos de endpoints de rede da Internet