IPv6 para balanceadores de carga de aplicativo e balanceadores de carga de rede de proxy

Neste documento, mostramos como o tráfego IPv6 é processado pelos balanceadores de carga de aplicativo e balanceadores de carga de rede de proxy. Esses balanceadores de carga são balanceadores de carga de proxy, o que significa que as conexões de entrada do cliente são encerradas no balanceador de carga. O balanceador de carga inicia uma nova conexão para encaminhar a solicitação do cliente para o back-end. Dependendo do tipo de balanceador de carga, é possível ativar o IPv6 para uma ou ambas as conexões.

Ativar o IPv6 no balanceador de carga tem os seguintes benefícios:

  • Usar apenas um endereço IPv6 anycast para implantações em várias regiões. Só é preciso um endereço IPv6 do balanceador de carga para instâncias de aplicativos em execução em várias regiões. Isso significa que o servidor DNS tem apenas um registro AAAA (em inglês) e que não é necessário fazer o balanceamento de carga de vários endereços IPv6. O armazenamento em cache de registros AAAA por clientes não é um problema porque haverá apenas um endereço a ser armazenado. A carga das solicitações de usuários para o endereço IPv6 é automaticamente balanceada e enviada para o back-end íntegro mais próximo com capacidade disponível.
  • Executar implantações de pilha dupla. Para atender aos clientes IPv6 e IPv4, crie dois endereços IP do balanceador de carga, um para IPv6 e outro para IPv4. Os clientes IPv4 se conectam ao endereço IPv4, enquanto os clientes IPv6 se conectam ao endereço IPv6. Em seguida, a carga desses clientes é balanceada automaticamente e enviada para os back-ends íntegros de pilha dupla IPv4 ou IPv6 com capacidade disponível. Para saber quais balanceadores de carga oferecem suporte a back-ends de pilha dupla, consulte Tabela: serviços de back-end e tipos de back-end com suporte. Nós fornecemos regras de encaminhamento de IPv6 sem cobrança. Assim, você paga apenas pelas regras de encaminhamento de IPv4.

  • Balancear carga do tráfego de cliente em HTTP, HTTPS, HTTP/2, TCP e SSL/TLS IPv6. O suporte a protocolos depende do tipo de balanceador de carga que você está usando e do protocolo da regra de encaminhamento.

  • Estourar a capacidade em várias regiões com apenas um endereço do balanceador de carga IPv6. Se os back-ends de uma região estiverem sem recursos ou não íntegros, o balanceador de carga global direcionará automaticamente as solicitações dos usuários para a região mais próxima com recursos disponíveis. Quando a região mais próxima tiver recursos disponíveis, o balanceamento de carga global voltará a ser veiculado nela. O balanceamento de carga global requer o nível Premium dos níveis de serviço de rede.

Suporte ao balanceador de carga

Para balanceadores de carga baseados em proxy, como balanceadores de carga de aplicativos e balanceadores de carga de rede de proxy, a conexão do cliente ao balanceador de carga e a segunda conexão do balanceador de carga ao back-end podem ser configuradas de forma independente. Por exemplo, o balanceador de carga pode aceitar tráfego IPv4 de um cliente, encerrar a conexão e encaminhar a solicitação do balanceador de carga para o back-end por uma nova conexão IPv6, desde que o back-end seja um back-end de pilha dupla equipado para processar conexões IPv6.

Para permitir que um balanceador de carga receba conexões IPv6 de clientes, é necessário usar um endereço IPv6 para a regra de encaminhamento do balanceador de carga. A conexão posterior do balanceador de carga para o back-end usa o IPv4 por padrão. No entanto, é possível ativar determinados balanceadores de carga para usar o IPv6 configurando a opção política de seleção de endereço IP no serviço de back-end.

A tabela a seguir descreve quais tipos de conexão são aceitos por todos os balanceadores de carga baseados em proxy:

Balanceador de carga Conexão de clientes ao balanceador de carga Conexão do balanceador de carga aos back-ends
Balanceador de carga de aplicativo externo global
Balanceador de carga de rede de proxy externo global
As conexões IPv4 e IPv6 podem ser encerradas. Uma das seguintes opções:
  • Conexão IPv4: compatível com back-ends somente IPv4 ou de pilha dupla
  • Conexão IPv6: aceita apenas back-ends de pilha dupla*
Balanceador de carga de aplicativo clássico
Balanceador de carga de rede de proxy clássico
As conexões IPv4 e IPv6 podem ser encerradas. Somente conexão IPv4
Balanceador de carga de aplicativo externo regional
Balanceador de carga de rede de proxy externo regional
Balanceador de carga de aplicativo interno regional
Balanceador de carga de rede de proxy interno regional
Balanceador de carga de aplicativo interno entre regiões
Balanceador de carga de rede de proxy interno entre regiões
Somente IPv4. O tráfego de IPv6 não é compatível. Uma das seguintes opções:
  • Conexão IPv4: compatível com back-ends somente IPv4 ou de pilha dupla
  • Conexão IPv6: aceita apenas back-ends de pilha dupla*
* Somente grupos de instâncias e NEGs zonais (com endpoints GCE_VM_IP_PORT) podem ser configurados como pilha dupla.

Como a terminação IPv6 funciona

O encerramento do IPv6 é compatível com os balanceadores de carga de aplicativo globais e clássicos e os balanceadores de carga de rede de proxy. A configuração da terminação IPv6 para esses balanceadores de carga permite que os back-ends apareçam como aplicativos IPv6 para os clientes IPv6, como mostrado na figura a seguir:

Encerramento do IPv6 no balanceamento de carga
Terminação IPv6 para balanceamento de carga (clique para ampliar).

Quando um usuário se conecta ao balanceador de carga via IPv6, acontece o seguinte:

  1. O balanceador de carga, com o endereço IPv6 e a regra de encaminhamento, aguarda as conexões do usuário.
  2. Um cliente IPv6 se conecta ao balanceador de carga via IPv6.
  3. O balanceador de carga atua como um proxy reverso e encerra a conexão do cliente IPv6. Com base na política de seleção de endereço IP do serviço de back-end, ele coloca a solicitação em uma conexão IPv4 ou IPv6 com um back-end.
  4. No caminho inverso, o balanceador de carga recebe a resposta do back-end e, em seguida, coloca-a na conexão IPv6 de volta para o cliente original.

Alocação de endereços IPv6 para regras de encaminhamento do balanceador de carga

Ao configurar um balanceador de carga externo, você fornece uma ou mais regras de encaminhamento, cada uma com um endereço IP IPv4 ou IPv6 externo e roteado publicamente (ou ambos). É possível usar esse endereço IP nos registros DNS do seu site.

Ao criar uma regra de encaminhamento, você pode usar um endereço IP estático reservado para seu projeto ou fazer com que a regra de encaminhamento adquira automaticamente um endereço IP temporário durante a criação da regra. Um endereço IP estático é reservado ao seu projeto, e você pode mantê-lo até liberá-lo deliberadamente. Um endereço temporário pertence à regra de encaminhamento enquanto ela existir. Se você excluir a regra de encaminhamento, o endereço temporário será liberado no pool do Google Cloud.

Se você precisa de um endereço IPv4 e IPv6 para seu balanceador de carga, é possível criar duas regras de encaminhamento associando um endereço IPv4 a uma delas e um endereço IPv6 à outra. Em seguida, associe as duas regras ao mesmo balanceador de carga.

Formato de endereço IPv6

O Google Cloud aloca um intervalo de endereços IPv6 /64 para as regras de encaminhamento de IPv6. A CLI do Google Cloud lista endereços IPv6 com 64 bits menos significativos definidos como 0, mas o balanceador de carga aceita tráfego no intervalo completo. Portanto, será possível ver outros endereços IPv6 do balanceador de carga no intervalo alocado nos cabeçalhos X-Forwarded-For, dependendo do endereço IP do servidor IPv6 a que o cliente se conectou.

Ao formatar um endereço IPv6, o Google Cloud segue as recomendações da RFC 5952, seção 4.

Cabeçalho de IP do cliente com terminação IPv6 para balanceadores de carga de aplicativos externos

Quando o balanceador de carga encaminha a conexão IPv6 do cliente via proxy a uma conexão IPv4 do seu back-end, o endereço IP inicial da origem é substituído pelo endereço IP do balanceador de carga. No entanto, muitas vezes o endereço IP original precisa ser conhecido pelos back-ends para geração de registros, tomada de decisões ou outras finalidades. O Google Cloud fornece um cabeçalho HTTP que se propaga para os back-ends e inclui o endereço IP do cliente IPv6 original.

Os cabeçalhos HTTP para IPv6 são semelhantes aos do IPv4. O formato das solicitações é o seguinte:

  • X-Forwarded-For: CLIENT_IP_ADDRESS, GLOBAL_FORWARDING_RULE_EXTERNAL_IP_ADDRESSES

O último elemento exibe o endereço IP do balanceador de carga. O penúltimo exibe o endereço IP do cliente visualizado pelo balanceador de carga. É possível que haja outros elementos no cabeçalho X-Forwarded-For quando o cliente ou os proxies intervenientes adicionarem outros cabeçalhos X-Forwarded-For antes de enviarem a solicitação ao balanceador de carga.

Este é um exemplo de cabeçalho X-Forwarded-For:

X-Forwarded-For: 2001:db8:abcd:1::1234, 2607:f8b0:4005:801::200e

2001:db8:abcd:1::1234 é o endereço IPv6 do cliente. 2607:f8b0:4005:801::200e é o endereço IPv6 do balanceador de carga de aplicativo externo.

Converter de somente IPv4 para pilha dupla

É possível converter recursos de balanceador de carga que usam apenas IPv4 (pilha única) para IPv4 e IPv6 (pilha dupla). Ao atualizar os recursos do balanceador de carga, você pode encaminhar automaticamente o tráfego IPv6 para seus back-ends.

Para instruções sobre como converter os recursos e back-ends do balanceador de carga para pilha dupla, consulte a seguinte documentação:

Balanceador de carga Documentação
Balanceador de carga de aplicativo externo global
Balanceador de carga de aplicativo interno entre regiões
Balanceador de carga de aplicativo externo regional
Balanceador de carga de aplicativo interno regional
Converter o balanceador de carga de aplicativo para IPv6
Balanceador de carga de rede de proxy externo global
Balanceador de carga de rede de proxy interno entre regiões
Balanceador de carga de rede de proxy externo regional
Balanceador de carga de rede de proxy interno regional
Converter o balanceador de carga de rede de proxy para IPv6

Preços

As regras de encaminhamento para a terminação IPv6 são fornecidas sem custo adicional. Você não é cobrado por endereços IPv6 temporários. Endereços IPv6 reservados são cobrados de acordo com as taxas atuais, estando em uso ou não. Caso contrário, o sistema de preços do balanceamento de carga IPv6 será igual ao preço do balanceamento de carga IPv4. Para detalhes sobre preços de balanceamento de carga, consulte Preços de rede.

Limitações

  • Os balanceadores de carga de rede de proxy clássico e os de aplicativo clássicos não são compatíveis com back-ends de pilha dupla. O tráfego IPv6 é encerrado pelo balanceador de carga e depois encaminhado por proxy por uma conexão IPv4 para os back-ends.
  • Balanceadores de carga de aplicativo externos regionais, balanceadores de carga de aplicativo internos regionais, balanceadores de carga de rede de proxy interno regional, balanceadores de carga de rede de proxy interno entre regiões, balanceadores de carga de aplicativo interno entre regiões, e balanceadores de carga de rede de proxy externo regional não oferecem suporte a front-ends IPv6. O tráfego IPv4 de entrada é encaminhado por proxy por uma conexão IPv4 ou IPv6 para os back-ends IPv4 e IPv6 (pilha dupla).

  • Apenas back-ends de grupos de instâncias de VM e grupos de endpoints de rede (NEGs) zonais com endpoints GCE_VM_IP_PORT oferecem suporte a back-ends de pilha dupla (IPv4 e IPv6).

A seguir