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

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. É possível usar esse tipo de back-end com um balanceador de carga HTTP(S) externo do Google Cloud. É 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, discutimos o uso de back-ends externos com o balanceamento de carga HTTP(S) externo. Não é possível usar back-ends externos com outros tipos de balanceador de carga. 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.

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 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 ou HTTP2.

  • 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:

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, 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

  • 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 ou 443 usando o protocolo HTTP, HTTPS ou HTTP/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.
  • 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 umback-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ç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 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