Visão geral de grupos de endpoints de rede da Internet

Um grupo de endpoints da rede (NEG) define um conjunto de endpoints de back-end para um balanceador de carga. Um NEG de Internet é um back-end que fica fora do Google Cloud. É possível usar um NEG de Internet como back-end para um serviço de back-end de um balanceador de carga HTTP(S) externo do Google Cloud. É preciso fazer isso para exibir o conteúdo de uma origem hospedada fora do Google Cloud e para que seu balanceador de carga HTTP(S) externo seja 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 a origem personalizada.
  • Usar o Cloud CDN para a origem personalizada.
  • 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 grupos de endpoints de rede da Internet com balanceamento de carga HTTP(S) externo. Não é possível usar NEGs da Internet com outros tipos de balanceador de carga.

Os termos "origem personalizada", "endpoint externo" e "endpoint da Internet" podem ser usados de forma intercambiável porque têm o mesmo significado. Neste documento, o termo internet NEG é utilizado como o recurso que contém um internet endpoint.

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.

Visão geral

Os grupos de endpoints de rede (NEGs) da Internet são recursos globais hospedados em uma infraestrutura local ou em uma infraestrutura fornecida por provedores terceirizados.

É possível usar um NEG da Internet como back-end em um serviço de back-end para um balanceador de carga HTTP(S) externo e atribuir o NEG da Internet como origem do Cloud CDN.

Tipos de endpoint

Ao criar um grupo de endpoints de rede 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 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). Use este endpoint quando a origem externa puder ser resolvida por meio de um nome de domínio totalmente qualificado com DNS público.
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 para especificar um endereço IP que pode ser acessado publicamente e uma porta para 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.

Especificações e componentes do balanceamento de carga

É possível usar um grupo de endpoints de rede da Internet em um balanceador de carga que utilize o nível de serviço de rede Premium.

No entanto, como é permitido apenas um endpoint da Internet 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 redireciona o tráfego via proxy para o endpoint da Internet 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 NEG da Internet.

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 NEG da Internet.

Grupos de endpoints de rede da Internet no balanceamento de carga (clique para ampliar)
Grupos de endpoints de rede da Internet no balanceamento de carga (clique para ampliar)

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 perímetro global do Google para encerrar solicitações de usuários na frente de uma origem personalizada.

Quando você adiciona um NEG da Internet como back-end em 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 ou HTTP2.

  • Os recursos do serviço de back-end são compatíveis com o uso de um NEG de Internet como back-end. Esses recursos incluem:

Verificações de integridade

Um serviço de back-end que usa um NEG da Internet como back-end não é compatível com uma verificação de integridade. O Google Cloud não fornece verificação de integridade para origens personalizadas ou endpoints da Internet.

Caso seu endpoint da Internet 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 NEG da Internet:

  • Consulte o registro TXT do DNS _cloud-eoips.googleusercontent.com usando uma ferramenta como dig ou nslookup. 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).
  • 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 endpoint da Internet.

Quando você cria um endpoint da Internet usando INTERNET_FQDN_PORT, o balanceador de carga valida o certificado do servidor SSL apresentado pelo endpoint da Internet 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 endpoint da Internet 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 endpoint da Internet, 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 endpoint da Internet, 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, como Set-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 ou HTTPS:

    • 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 para User-Agent e content-encoding é alterado para Content-Encoding.

    • Alguns cabeçalhos, como TE, codificação de transferência, e Accept-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 e X-Forwarded-For.

Limitações

  • É necessário que endpoints da Internet com FQDN definido possam ser resolvidos pelo DNS público do Google.
  • Um endpoint da Internet tem que ser um endereço IPv4 roteável publicamente ou ser resolvido para um endereço desse tipo:
    • Um endpoint da Internet 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 endpoint da Internet referenciar um serviço ou uma API do Google, o serviço precisará ser acessível pela porta TCP 80 ou 443 com o protocolo "HTTP,HTTPSorHTTP/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} para INTERNET_FQDN_PORT.
  • Ao usar um NEG com o tipo de endpoint INTERNET_FQDN_PORT ou INTERNET_IP_PORT, apenas um endpoint pode ser adicionado ao NEG. Isso significa que, ao usar um NEG com o tipo de endpoint de rede INTERNET_FQDN_PORT ou INTERNET_IP_PORT em um backendService, não é possível anexar vários NEGs a backendService.
  • O balanceamento de carga ainda não é compatível com endpoints da Internet. 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 endpoint da Internet.
  • 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.
  • Não é realizada nenhuma verificação de integridade no NEG da Internet. Caso seu endpoint da Internet 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 uma origem personalizada 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çalho Host 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çalho Host 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 origem personalizada.

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 origens personalizadas.

A seguir