Neste documento, mostramos como migrar recursos e back-ends do balanceador de carga de rede de proxy externo global de apenas IPv4 (pilha única) para IPv4 e IPv6 (pilha dupla).
As instruções neste documento se aplicam aos balanceadores de carga de rede de proxy TCP e SSL externos globais.
Primeiro, é necessário migrar de IPv4 somente para back-ends IPv4 e IPv6 (pilha dupla). Depois, é possível mudar a política de seleção de endereço IP do serviço de back-end para especificar o tipo de tráfego enviado do GFE para seus back-ends. Para mais informações, consulte Configurar a política de seleção de endereço IP.
Sobre o processo de migração
O processo de migração exige que você atualize os seguintes recursos do balanceador de carga:
- Sub-rede. O tipo de pilha de IP da sub-rede pode ser atualizado para aceitar somente IPv4 (pilha única) ou IPv4 e IPv6 (pilha dupla). Não é possível fazer downgrade da sub-rede de endereços de pilha dupla para pilha única. Para atualizar, consulte Atualizar a sub-rede.
- Back-ends. O tipo de pilha de IP dos back-ends a seguir pode ser atualizado para
aceitar apenas IPv4 (pilha única) ou IPv4 e IPv6 (pilha dupla):
Todos os back-ends do grupo de instâncias: um ou mais back-ends gerenciados, não gerenciados ou uma combinação de back-ends do grupo de instâncias gerenciadas e não gerenciadas.
Para atualizar, consulte Atualizar a instância ou os modelos de VM.
Todos os NEGs por zona: um ou mais NEGs tipo
GCE_VM_IP_PORT
por zona.Para fazer a atualização, consulte Atualizar o NEG zonal.
- Regras de firewall: Crie uma regra de firewall para permitir que o tráfego das sondagens de verificação de integridade do IPv6 alcance back-ends. Para criar, consulte Criar regra de firewall de verificação de integridade IPv6.
- Serviço de back-end. A política de seleção de endereço IP do serviço de back-end pode ser atualizada para especificar o tipo de tráfego enviado do GFE para seus back-ends. Para atualizar, consulte Atualizar o serviço de back-end.
- Regra de encaminhamento. Criar uma regra de encaminhamento para IPv6
Não há validação para verificar se você atualizou todos os recursos necessários. Depois de atualizar todos os recursos, o tráfego deve fluir para os back-ends e é possível verificar os registros e conferir se a migração foi concluída.
Identificar os recursos que serão migrados
Para listar todas as sub-redes, execute o seguinte comando no Cloud Shell:
gcloud compute networks subnets list
Anote o nome da sub-rede com a pilha somente IPv4 a ser migrada para a pilha dupla. Depois, esse nome será chamado de
SUBNET
. A rede VPC será chamada posteriormente deNETWORK
.Para listar todos os serviços de back-end, execute o seguinte comando no Cloud Shell:
gcloud beta compute backend-services list
Anote o nome do serviço de back-end que será migrado para a pilha dupla. Depois, esse nome será chamado de
BACKEND_SERVICE
.Para listar todos os modelos de instância e instância de VM, execute o seguinte comando no Cloud Shell:
gcloud compute instances list
gcloud compute instance-templates list
Anote o nome das instâncias e modelos de instância que serão migrados para a pilha dupla. Depois, esse nome será chamado de
VM_INSTANCE
eINSTANCE_TEMPLATES
.Para listar todos os grupos de endpoints de rede (NEGs) zonais, execute o seguinte comando no Cloud Shell:
gcloud compute network-endpoint-groups list
Anote o nome dos grupos de endpoints de rede que serão migrados para a pilha dupla. Depois, esse nome será chamado de
ZONAL_NEG
.Para listar todos os proxies SSL de destino, execute o seguinte comando no Cloud Shell:
gcloud compute target-ssl-proxies list
Anote o nome do proxy de destino associado ao balanceador de carga. Depois, esse nome será chamado de
TARGET_PROXY
.Para listar todos os proxies TCP de destino, execute o seguinte comando no Cloud Shell:
gcloud compute target-tcp-proxies list
Anote o nome do proxy de destino associado ao balanceador de carga. Depois, esse nome será chamado de
TARGET_PROXY
.
Migrar de IPv4 para IPv4 e IPv6 (pilha dupla)
Nesta seção, descrevemos o procedimento para migrar o balanceador de carga e os back-ends usando endereços somente IPv4 para endereços IPv4 e IPv6 (pilha dupla).
Pré-requisitos
Antes de começar, configure um balanceador de carga de rede de proxy externo global de proxy TCP com pilha somente IPv4 com grupo de instâncias ou back-ends de NEG zonal.
Consulte a seguinte documentação:
- Configurar um balanceador de carga de rede (proxy SSL) de proxy externo global com back-ends de grupo de instâncias de VM
- Configurar um balanceador de carga de rede de proxy externo global (proxy TCP) com back-ends de grupo de instâncias de VM
É possível executar o seguinte comando para listar as informações do tipo de pilha de todas as instâncias de VM em um projeto:
gcloud
gcloud compute instances list \ --format= \ "table( name, zone.basename(), networkInterfaces[].stackType.notnull().list(), networkInterfaces[].ipv6AccessConfigs[0].externalIpv6.notnull().list():label=EXTERNAL_IPV6, networkInterfaces[].ipv6Address.notnull().list():label=INTERNAL_IPV6)"
Atualizar a sub-rede
As sub-redes de pilha dupla são compatíveis apenas com redes VPC de modo personalizado. Sub-redes de pilha dupla não são compatíveis com redes VPC de modo automático ou redes legadas.
Para atualizar a rede para a configuração de pilha dupla, siga estas etapas:
Se você estiver usando uma rede VPC de modo automático, primeiro será necessário converter a rede VPC de modo automático para o modo personalizado.
Para ativar o IPv6, consulte Alterar o tipo de pilha de uma sub-rede para pilha dupla.
Atualizar a instância ou os modelos de VM
Não é possível editar instâncias de VM que fazem parte de um grupo gerenciado ou não gerenciado de instâncias. Para atualizar as instâncias de VM para pilha dupla, siga estas etapas:
- Exclua instâncias específicas de um grupo
- Crie uma VM de pilha dupla.
- Como criar instâncias com nomes específicos em MIGs
Não é possível atualizar um modelo de instância existente. Se você precisar fazer alterações, crie outro modelo com propriedades semelhantes. Para atualizar os modelos de instância de VM para pilha dupla, siga estas etapas:
Console
No Console do Google Cloud, acesse a página Modelos de instância.
- Clique no modelo da instância que você quer copiar e atualizar.
- Clique em Criar semelhante.
- Expanda a seção Opções avançadas.
- Em Tags de rede, insira
allow-health-check-ipv6
. - Na seção Interfaces de rede, clique em Adicionar uma interface de rede.
- Na lista Rede, selecione a rede VPC de modo personalizado.
- Na lista Sub-rede, selecione
SUBNET
. - Em Tipo de pilha de IP, selecione IPv4 e IPv6 (pilha dupla).
- Clique em Criar.
Como iniciar uma atualização gradual básica no grupo gerenciado de instâncias
MIG
associado ao balanceador de carga.
Atualizar o NEG zonal
Não é possível editar endpoints de NEG zonal. Exclua os endpoints IPv4 e crie um novo endpoint de pilha dupla com os endereços IPv4 e IPv6.
Para configurar um NEG zonal (com endpoints do tipo GCE_VM_IP_PORT
)
na região REGION_A
, crie primeiro as VMs na
zona GCP_NEG_ZONE
. Em seguida, adicione os endpoints de rede da VM
ao NEG zonal.
Criar VMs
Console
No console do Google Cloud, acesse a página Instâncias de VMs.
Clique em Criar instância.
Defina o Nome como
vm-a1
.Em Região, selecione
REGION_A
e escolha qualquer valor para o campo Zona. Ela será chamada deGCP_NEG_ZONE
neste procedimento.Na seção Disco de inicialização, verifique se o sistema operacional Debian e a versão 10 (buster) estão selecionados para as opções de disco de inicialização. Clique em Escolher para alterar a imagem se necessário.
Abra a seção Opções avançadas e faça as seguintes alterações:
- Expanda a seção Rede.
- No campo Tags de rede, insira
allow-health-check
. - Na seção Interfaces de rede, faça as seguintes alterações:
- Rede:
NETWORK
- Sub-rede:
SUBNET
- Tipo de pilha de IP: IPv4 e IPv6 (pilha dupla)
- Rede:
- Clique em Concluído.
Clique em Gerenciamento. No campo Script de inicialização, copie e cole o conteúdo do script a seguir.
#! /bin/bash apt-get update apt-get install apache2 -y a2ensite default-ssl a2enmod ssl vm_hostname="$(curl -H "Metadata-Flavor:Google" \ http://metadata.google.internal/computeMetadata/v1/instance/name)" echo "Page served from: $vm_hostname" | \ tee /var/www/html/index.html systemctl restart apache2
Clique em Criar.
Repita as etapas a seguir para criar uma segunda VM usando a combinação de nome e zona a seguir:
- Nome:
vm-a2
, zona:GCP_NEG_ZONE
- Nome:
gcloud
Crie as VMs executando o comando a seguir duas vezes, usando essas combinações para o nome da VM e a zona dela. O conteúdo do script é idêntico para as duas VMs.
VM_NAME
devm-a1
e qualquer zonaGCP_NEG_ZONE
que você preferir.VM_NAME
devm-a2
e a mesma zonaGCP_NEG_ZONE
.gcloud compute instances create VM_NAME \ --zone=GCP_NEG_ZONE \ --stack-type=IPV4_IPV6 \ --image-family=debian-10 \ --image-project=debian-cloud \ --tags=allow-health-check \ --subnet=SUBNET \ --metadata=startup-script='#! /bin/bash apt-get update apt-get install apache2 -y a2ensite default-ssl a2enmod ssl vm_hostname="$(curl -H "Metadata-Flavor:Google" \ http://metadata.google.internal/computeMetadata/v1/instance/name)" echo "Page served from: $vm_hostname" | \ tee /var/www/html/index.html systemctl restart apache2'
Adicionar endpoints ao NEG zonal
Console
Para adicionar endpoints ao NEG zonal:
No console do Google Cloud, acesse a página Grupos de endpoints da rede.
Na lista Nome, clique no nome do grupo de endpoints de rede (
ZONAL_NEG
). Você verá a página Detalhes do grupo de endpoints de rede.Na seção Endpoints de rede neste grupo, selecione o endpoint de NEG criado anteriormente. Clique em Remover endpoint.
Na seção Endpoints da rede neste grupo, clique em Adicionar endpoint da rede.
Selecione a instância de VM.
Na seção Interface de rede, são exibidos o nome, a zona e a sub-rede da VM.
No campo Endereço IPv4, insira o endereço IPv4 do novo endpoint da rede.
No campo Endereço IPv6, insira o endereço IPv6 do novo endpoint da rede.
Selecione o Tipo de porta.
- Se você selecionar Padrão, o endpoint usará a porta padrão
80
para todos os endpoints no grupo de endpoints da rede. Isso é suficiente para nosso exemplo, porque o servidor Apache está atendendo solicitações na porta80
. - Se você selecionar Personalizado, insira o Número da porta do endpoint que será usado.
- Se você selecionar Padrão, o endpoint usará a porta padrão
Para adicionar mais endpoints, clique em Adicionar endpoint da rede e repita as etapas anteriores.
Depois de adicionar todos os endpoints, clique em Criar.
gcloud
Adicione endpoints (
GCE_VM_IP_PORT
endpoints) aZONAL_NEG
.gcloud compute network-endpoint-groups update ZONAL_NEG \ --zone=GCP_NEG_ZONE \ --add-endpoint='instance=vm-a1,ip=IPv4_ADDRESS, \ ipv6=IPv6_ADDRESS,port=80' \ --add-endpoint='instance=vm-a2,ip=IPv4_ADDRESS, \ ipv6=IPv6_ADDRESS,port=80'
Substitua:
IPv4_ADDRESS
:
endereço IPv4 do endpoint da rede. O IPv4 precisa pertencer a
uma VM no Compute Engine (o IP principal ou como parte de um intervalo de IP com alias).
Se o endereço IP não for especificado, será usado o endereço IP principal da instância
de VM na rede a que o grupo de endpoints de rede pertence.
IPv6_ADDRESS
:
endereço IPv6 do endpoint da rede. O endereço IPv6
precisa pertencer a uma instância de VM na rede à qual o grupo de endpoints
de rede pertence (endereço IPv6 externo).
Criar uma regra de firewall de verificação de integridade IPv6
Verifique se você tem uma regra de entrada aplicável às instâncias
com balanceamento de carga e que permita o tráfego dos sistemas de verificação
de integridade do Google Cloud (2600:2d00:1:b029::/64
, 2600:2d00:1:1::/64
). Neste exemplo,
usamos a tag de destino allow-health-check-ipv6
para identificar as instâncias de VM às
quais se aplica.
Sem essa regra de firewall, a regra padrão de negação de entrada bloqueia a entrada tráfego IPv6 para as instâncias de back-end.
Console
No Console do Google Cloud, acesse a página políticas de Firewall.
Para permitir o tráfego de sub-rede IPv6, clique novamente em Criar regra de firewall e insira as seguintes informações:
- Nome:
fw-allow-lb-access-ipv6
- Rede:
NETWORK
- Prioridade:
1000
- Direção do tráfego: entrada
- Destinos: tags de destino especificadas
- Tags de meta:
allow-health-check-ipv6
- Filtro de origem: intervalos IPv6
- Intervalos IPv6 de origem:
2600:2d00:1:b029::/64
,2600:2d00:1:1::/64
- Protocolos e portas: permitir todos
- Nome:
Clique em Criar.
gcloud
Crie a regra de firewall
fw-allow-lb-access-ipv6
para permitir a comunicação a partir da sub-rede:gcloud compute firewall-rules create fw-allow-lb-access-ipv6 \ --network=NETWORK \ --action=allow \ --direction=ingress \ --target-tags=allow-health-check-ipv6 \ --source-ranges=2600:2d00:1:b029::/64,2600:2d00:1:1::/64 \ --rules=all
Atualizar o serviço de back-end e criar uma regra de encaminhamento para IPv6
Atualize o BACKEND_SERVICE
para aceitar a pilha dupla. Nesta seção, fornecemos instruções para atualizar o serviço
de back-end com a política de seleção de endereço IP como Prefer IPv6
e adicionar um
back-end de NEG zonal.
Se você tiver um grupo de instâncias associado ao serviço de back-end, será necessário atualizar o serviço de back-end.
Console
No Console do Google Cloud, acesse a página Balanceamento de carga.
Clique no nome do balanceador de carga.
Clique em Editar.
Configurar o serviço de back-end para IPv6
- Clique em Configuração de back-end.
- Para o tipo de back-end, selecione Grupo de endpoints da rede na Internet.
- Na lista Política de seleção de endereço IP, selecione Preferir IPv6.
- No campo Protocolo:
- Em proxy TCP, selecione TCP.
- Em "Proxy SSL", selecione SSL.
- Na seção Back-ends, clique em Adicionar um back-end.
- No painel Novo back-end, faça o seguinte:
- Na lista grupo de endpoints de rede, selecione
ZONAL_NEG
. - No campo Máximo de conexões, digite 10.
- Na lista grupo de endpoints de rede, selecione
- Clique em Concluído.
- Na lista Verificação de integridade, selecione uma verificação de integridade HTTP.
Configurar a regra de encaminhamento de IPv6
- Clique em Configuração de front-end.
- Clique em Adicionar IP e porta de front-end.
- No campo Nome, digite um nome para a regra de encaminhamento.
- No campo Protocolo:
- Em proxy TCP, selecione TCP.
- Em "Proxy SSL", selecione SSL.
- Defina Versão do IP como
IPv6
. - Em proxy SSL, selecione um certificado na lista Certificados.
- Clique em Concluído.
- Clique em Atualizar.
gcloud
Crie o serviço de back-end do tráfego HTTP:
gcloud beta compute backend-services update BACKEND_SERVICE \ --protocol=[SSL|TCP] \ --port-name=http \ --ip-address-selection-policy=PREFER_IPV6 \ --health-checks=HEALTH_CHECK \ --global
Adicione NEGs zonais como o back-end ao serviço de back-end.
gcloud beta compute backend-services add-backend BACKEND_SERVICE \ --network-endpoint-group=ZONAL_NEG \ --global
Reserve um endereço IPv6 externo que seus clientes usam para acessar o balanceador de carga.
gcloud compute addresses create lb-ipv6-1 \ --ip-version=IPV6 \ --network-tier=PREMIUM \ --global
Para o proxy SSL, crie uma regra de encaminhamento para o serviço de back-end.
gcloud beta compute target-ssl-proxies create TARGET_PROXY \ --backend-service=BACKEND_SERVICE \ --ssl-certificates=[SSL_CERT_1][,[SSL_CERT_2],...] \ --ssl-policy=my-ssl-policy \ --proxy-header=NONE
gcloud beta compute forwarding-rules create \ --load-balancing-scheme=EXTERNAL_MANAGED \ --network-tier=PREMIUM \ --address=lb-ipv6-1 \ --global \ --target-ssl-proxy=TARGET_PROXY \ --ports=443
Para o proxy TCP, crie uma regra de encaminhamento para o serviço de back-end.
gcloud beta compute target-tcp-proxies create TARGET_PROXY \ --backend-service=BACKEND_SERVICE \ --proxy-header=NONE
gcloud beta compute forwarding-rules create \ --load-balancing-scheme=EXTERNAL_MANAGED \ --network-tier=PREMIUM \ --address=lb-ipv6-1 \ --global \ --target-tcp-proxy=TARGET_PROXY \ --ports=443
Atualizar o serviço de back-end de um grupo de instâncias
Se você tiver um grupo de instâncias associado ao serviço de back-end, será necessário atualizar o serviço de back-end da seguinte maneira:
Console
No Console do Google Cloud, acesse a página Balanceamento de carga.
Clique no nome do balanceador de carga.
Clique em Editar.
Configurar o serviço de back-end
- Clique em Configuração de back-end.
- Em Tipo de back-end, selecione Grupo de instâncias.
- Na lista Política de seleção de endereço IP, selecione Preferir IPv6.
- No campo Protocolo:
- Em proxy TCP, selecione TCP.
- Em "Proxy SSL", selecione SSL.
- Se você atualizou a instância ou os modelos de VM para pilha dupla, não é necessário atualizar novamente a seção Back-ends.
- Selecione uma Verificação de integridade.
- Clique em Atualizar.
gcloud
Crie o serviço de back-end do tráfego HTTP:
gcloud beta compute backend-services update BACKEND_SERVICE \ --protocol=[SSL|TCP] \ --port-name=http \ --ip-address-selection-policy=PREFER_IPV6 \ --health-checks=HEALTH_CHECK \ --global
Adicione o grupo de instâncias como back-end do serviço de back-end: Se você tiver atualizado a instância ou os modelos de VM para pilha dupla, pule esta etapa.
gcloud beta compute backend-services add-backend BACKEND_SERVICE \ --instance-group=INSTANCE_GROUP \ --global
Configurar a política de seleção de endereço IP
Essa etapa é opcional e fornece instruções para configurar a política de seleção de endereço IP do serviço de back-end. Depois de migrar seus back-ends para a pilha dupla, use a política de seleção de endereço IP para especificar o tipo de tráfego enviado do GFE para os back-ends.
Substitua IP_ADDRESS_SELECTION_POLICY
por qualquer
um destes valores:
Política de seleção de endereço IP | Descrição |
---|---|
Somente IPv4 | Enviar tráfego IPv4 somente para os back-ends do serviço de back-end, independentemente do tráfego do cliente para o GFE. Somente as verificações de integridade IPv4 são usadas para conferir a integridade dos back-ends. |
Preferir IPv6 | Priorize a conexão IPv6 do back-end em vez da conexão IPv4 (desde que haja um back-end íntegro com endereços IPv6). As verificações de integridade monitoram periodicamente as conexões IPv6 e IPv4 dos back-ends. Primeiro, o GFE tenta a conexão IPv6. Se a conexão IPv6 estiver corrompida ou lenta, o GFE usará olhos felizes (link em inglês) para retornar e se conectar ao IPv4. Mesmo que uma das conexões IPv6 ou IPv4 não esteja íntegra, o back-end ainda será tratado como íntegro, e ambas as conexões poderão ser testadas pelo GFE, e os usuários poderão escolher qual usar. |
Somente IPv6 | Enviar tráfego IPv6 somente para os back-ends do serviço de back-end, independentemente do tráfego do cliente para o proxy. Somente as verificações de integridade IPv6 são usadas para conferir a integridade dos back-ends. Não há validação para verificar se o tipo de tráfego de back-end corresponde à
política de seleção de endereço IP. Por exemplo, se você tiver back-ends IPV4 e
selecionar |
Console
No Console do Google Cloud, acesse a página Balanceamento de carga.
Clique no nome do balanceador de carga.
Clique em Editar.
Clique em Configuração de back-end.
No campo Serviço de back-end, selecione
BACKEND_SERVICE
.O tipo de back-end precisa ser Grupo de endpoints de rede zonal ou Grupo de instâncias.
Na lista Política de seleção de endereço IP, selecione
IP_ADDRESS_SELECTION_POLICY
.Clique em Concluído.
gcloud
Atualize o serviço de back-end:
gcloud beta compute backend-services update BACKEND_SERVICE \ --load-balancing-scheme=EXTERNAL_MANAGED \ --protocol=HTTP \ --ip-address-selection-policy=IP_ADDRESS_SELECTION_POLICY \ --global
Testar o balanceador de carga
Teste o balanceador de carga para confirmar se a migração foi bem-sucedida e se o tráfego de entrada está alcançando os back-ends conforme o esperado.
Procurar os endereços IP externos.
Console
No Console do Google Cloud, acesse a página Balanceamento de carga.
Clique no nome do balanceador de carga.
Na seção Front-end, são exibidos dois endereços IP do balanceador de carga. Neste procedimento, o endereço IPv4 é chamado de
IP_ADDRESS_IPV4
e o endereço IPv6 é conhecido comoIP_ADDRESS_IPV6
.Na seção Back-ends, quando a política de seleção de endereço IP é
Prefer IPv6
, dois status de verificação de integridade são exibidos para os back-ends.
Testar o tráfego enviado às suas instâncias
Neste exemplo, as solicitações do comando curl
são distribuídas aleatoriamente para os
back-ends.
Repita os seguintes comandos algumas vezes até ver todas as VMs de back-end respondendo:
curl -m1 IP_ADDRESS_IPV4:PORT
curl -m1 IP_ADDRESS_IPV6:PORT
Por exemplo, se o endereço IPv6 for
[fd20:1db0:b882:802:0:46:0:0]:80
, o comando será semelhante a este:curl -m1 [fd20:1db0:b882:802:0:46:0:0]:80
Verificar os registros
Cada entrada de registro captura os endereços IPv4 e IPv6 de destino do back-end. Como há suporte para pilha dupla, é importante observar o endereço IP usado pelo back-end.
Visualize os registros para verificar se o tráfego está indo para o IPv6 ou se está falhando para o IPv4.
Os registros contêm o endereço backend_ip
associado ao
back-end. Ao examinar os registros e comparar o endereço IPv4 ou IPv6
de destino do backend_ip
, é possível confirmar qual endereço IP é usado.
Limitações
Quando a política de seleção de endereço IP é configurada como IPV6_ONLY
, ainda é possível
configurar back-ends IPv4 only
. Essa configuração não resulta em back-ends
íntegros, os clientes recebem o código de resposta 503
e não há tráfego upstream.
Ao examinar os registros, é possível ver a mensagem statusDetails
com
failed_to_pick_backend.