Configurar um balanceador de carga de rede de proxy interno regional com um back-end externo

Antes de seguir este guia, familiarize-se com a documentação de visão geral do NEG na Internet, incluindo as limitações.

O diagrama de arquitetura a seguir mostra um front-end regional do balanceador de carga de rede do proxy interno com um back-end externo.

Um balanceador de carga de rede de proxy interno regional com um back-end externo.
Figura 1. Um balanceador de carga de rede de proxy interno regional com um back-end externo (clique para ampliar).

Permissões

Para seguir este guia, você precisa criar um NEG da Internet e criar ou modificar um balanceador de carga de rede de proxy em um projeto. É necessário ser proprietário ou editor (roles/owner ou roles/editor) de um projeto ou ter os seguintes papéis de IAM do Compute Engine.

Tarefa Papel necessário
Criar e modificar componentes do balanceador de carga Administrador de rede do Compute
(roles/compute.networkAdmin)
Criar e modificar NEGs Administrador da instância do Compute
(roles/compute.instanceAdmin)

Configurar seu ambiente de back-end externo fora do Google Cloud

Para configurar seu ambiente de back-end externo, consulte as seções a seguir.

Configurar endpoints da rede

Configure um endpoint de rede para expor seu back-end externo ao Google Cloud. Verifique se o endpoint, que pode ser uma combinação de IP:Porta ou um nome de domínio totalmente qualificado (FQDN, na sigla em inglês) e porta, pode ser acessado pela Internet. Posteriormente, esse endpoint será referenciado pelo NEG da Internet.

Para requisitos de configuração detalhados para endpoints NEG da Internet, consulte a Visão geral de NEGs da Internet.

Permitir que o back-end externo receba tráfego do Google Cloud

Esta etapa pode ser concluída após a criação da sub-rede somente proxy e a configuração do gateway do Cloud NAT.

Para permitir que as solicitações do Google Cloud alcancem seu back-end externo, você precisa executar as seguintes etapas:

  1. Configure um gateway do Cloud NAT com endereços IP usados para o tráfego de saída do Google Cloud. O gateway mapeia o intervalo de sub-rede somente proxy para os endereços IP externos. Para ver as etapas, consulte Configurar um gateway do Cloud NAT.
  2. Verifique se o ambiente de back-end externo está configurado para permitir que o tráfego do Google Cloud alcance o back-end externo. Por exemplo, se você usou endereços IP pré-reservados para o gateway NAT, use a lista de permissões desses endereços no seu ambiente externo. Provavelmente, você precisará trabalhar com o administrador de segurança ou de rede do seu ambiente externo para configurar isso.

Configurar ambiente do Google Cloud

Você precisará de uma rede VPC com duas sub-redes: uma para os componentes do balanceador de carga e outra para a sub-rede somente proxy da região. Em seguida, crie o balanceador de carga com um back-end de NEG da Internet.

Criar a rede VPC e sub-rede

Essa sub-rede é usada para criar os componentes do balanceador de carga.

console do Cloud

  1. No Console do Google Cloud, acesse a página Redes VPC.
    Acessar redes VPC
  2. Clique em Criar rede VPC.
  3. Digite um Nome: LB_NETWORK.
  4. Na seção Sub-redes:
    • Defina o Modo de criação de sub-rede como Personalizado.
    • Na seção Nova sub-rede, insira as informações a seguir:
      • Name: LB_SUBNET_NAME
      • Região: REGION
      • Intervalo de endereços IP: LB_SUBNET_RANGE
    • Clique em Concluído.
  5. Clique em Criar.

gcloud

  1. Crie a rede VPC personalizada usando o comando gcloud compute networks create:

    gcloud compute networks create LB_NETWORK \
      --subnet-mode=custom
    
  2. Crie uma sub-rede na rede LB_NETWORK.

    gcloud compute networks subnets create LB_SUBNET_NAME \
      --network=LB_NETWORK \
      --range=LB_SUBNET_RANGE \
      --region=REGION
    

Configurar a sub-rede somente proxy

Essa sub-rede somente proxy é usada por todos os balanceadores de carga regionais baseados no Envoy na região REGION.

Console

  1. No Console do Google Cloud, acesse a página Redes VPC.
    Acessar redes VPC
  2. Selecione uma Rede na lista.
  3. Clique em Add subnet.
  4. Digite um Nome: PROXY_ONLY_SUBNET_NAME.
  5. Selecionar uma região: REGION.
  6. Defina Finalidade como Proxy gerenciado regional.
  7. Digite um Intervalo de endereço IP: PROXY_ONLY_SUBNET_RANGE.
  8. Clique em Adicionar.

gcloud

Crie a sub-rede somente proxy com o comando gcloud compute networks subnets create.

gcloud compute networks subnets create PROXY_ONLY_SUBNET_NAME \
  --purpose=REGIONAL_MANAGED_PROXY \
  --role=ACTIVE \
  --region=REGION \
  --network=LB_NETWORK \
  --range=PROXY_ONLY_SUBNET_RANGE

Configurar um gateway do Cloud NAT

Antes de configurar o gateway do Cloud NAT, revise as limitações e considerações sobre preço associadas. Para detalhes, consulte NEGs regionais: usar um gateway do Cloud NAT.

Os comandos a seguir descrevem como configurar um gateway do Cloud NAT. O gateway do Cloud NAT pode ser configurado para usar endereços IP externos NAT automáticos, em que a alocação é baseada na demanda, ou para usar um conjunto pré-reservado manualmente de endereços IP externos. O gateway mapeia o intervalo de sub-rede somente proxy para os endereços IP externos.

Configurar endereços IP alocados NAT automáticos

Ao criar um gateway do Cloud NAT com alocação automática de endereço IP NAT, é possível especificar os Níveis de serviço de rede (nível Premium ou Standard) com os quais o gateway do Cloud NAT aloca os endereços IP.

Console

  1. No Console do Google Cloud, acesse a página do Cloud NAT.

    Acesse o Cloud NAT

  2. Clique em Primeiros passos ou Criar gateway Cloud NAT.

  3. Digite um nome de gateway LB_NAT_CONFIG.

  4. Em Tipo de NAT, selecione Público.

  5. Na lista Rede, selecione LB_NETWORK.

  6. Na lista Região, selecione REGION.

  7. Crie um Cloud Router na região.

  8. Em Tipo de endpoint de origem, selecione Balanceadores de carga de proxy gerenciados.

  9. Na lista Origem, selecione Personalizado.

    • Em Sub-redes, selecione PROXY_ONLY_SUBNET_NAME.
  10. Na lista Endereços IP do Cloud NAT, selecione Automático (recomendado).

  11. Em Nível de serviço de rede, escolha Premium ou Standard.

  12. Clique em Criar.

gcloud

Use endereços IP alocados dinamicamente se o ambiente de back-end externo não precisar de uma lista de permissões de endereços IP específicos do Google Cloud que podem enviar tráfego ao back-end externo.

  1. Criar um Cloud Router

    gcloud beta compute routers create ROUTER_NAME \
      --network=LB_NETWORK \
      --region=REGION
  2. Configure o gateway do Cloud NAT.

    gcloud beta compute routers nats create LB_NAT_CONFIG \
      --router=ROUTER_NAME \
      --endpoint-types=ENDPOINT_TYPE_MANAGED_PROXY_LB \
      --nat-custom-subnet-ip-ranges=PROXY_ONLY_SUBNET_NAME \
      --auto-allocate-nat-external-ips \
      --region=REGION
    

Substitua:

  • LB_NAT_CONFIG: o nome da configuração NAT.

  • ROUTER_NAME: o nome do seu Cloud Router.

  • REGION: a região do NAT a ser excluída. Se não for especificado, talvez seja solicitado que você selecione uma região (apenas no modo interativo).

  • PROXY_ONLY_SUBNET_NAME: o nome da sub-rede somente proxy.

Configurar endereços IP alocados manualmente

Use endereços IP alocados manualmente somente se o ambiente de back-end externo exigir o uso de uma lista de permissões de endereços IP específicos do Google Cloud. Se o ambiente de back-end externo não precisar de uma lista de permissões, use a alocação dinâmica, conforme mostrado anteriormente.

Ao criar um gateway do Cloud NAT, você tem a opção de atribuir manualmente endereços IP NAT de nível Premium, Standard ou ambos, sujeitos a determinadas condições.

Console

  1. No Console do Google Cloud, acesse a página do Cloud NAT.

    Acesse o Cloud NAT

  2. Clique em Primeiros passos ou Criar gateway Cloud NAT.

  3. Digite um nome de gateway LB_NAT_CONFIG.

  4. Na lista Rede, selecione LB_NETWORK.

  5. Na lista Região, selecione REGION.

  6. Selecione ou crie um Cloud Router na região.

  7. Em Tipo de endpoint de origem, selecione Balanceadores de carga de proxy gerenciados.

  8. Na lista Origem, selecione Personalizado.

    • Em Sub-redes, selecione PROXY_ONLY_SUBNET_NAME.
  9. Na lista Endereços IP do Cloud NAT, selecione Manual.

  10. Em Nível de serviço de rede, escolha Premium ou Standard.

  11. Selecione ou crie um endereço IP externo estático reservado para usar para NAT.

  12. Se desejar especificar endereços IP adicionais, clique em Adicionar endereço IP e selecione ou crie um endereço IP externo estático adicional reservado.

  13. Clique em Criar.

gcloud

  1. Crie os endereços IP. Como o gateway faz a conversão NAT um para um, é preciso garantir que o pool de endereços IP reservados seja grande o suficiente para processar a quantidade de tráfego que você espera. A insuficiência de endereços IP NAT alocados pode resultar em perda de tráfego.

    gcloud compute addresses create IP_ADDRESS_NAME_1 IP_ADDRESS_NAME_2 [IP_ADDRESS_NAME_3 ...] \
      --region=REGION
    
  2. Criar um Cloud Router

    gcloud compute routers create ROUTER_NAME \
      --network=LB_NETWORK \
      --region=REGION
  3. Configure o gateway do Cloud NAT.

    gcloud beta compute routers nats create LB_NAT_CONFIG \
      --router=ROUTER_NAME \
      --endpoint-types=ENDPOINT_TYPE_MANAGED_PROXY_LB \
      --nat-custom-subnet-ip-ranges=PROXY_ONLY_SUBNET_NAME \
      --nat-external-ip-pool=IP_ADDRESS_NAME_1,IP_ADDRESS_NAME_2,[IP_ADDRESS_NAME_3 ...] \
      --region=REGION
    

    Substitua:

  • LB_NAT_CONFIG: o nome da configuração NAT.

  • ROUTER_NAME: o nome do seu Cloud Router.

  • PROXY_ONLY_SUBNET_NAME: o nome da sub-rede somente proxy.

  • REGION: a região do NAT a ser excluída. Se não for especificado, talvez seja solicitado que você selecione uma região (apenas no modo interativo).

Para mais informações, consulte Especificar intervalos de sub-rede para NAT na documentação do Cloud NAT.

Use uma lista de permissões dos intervalos de endereços IP NAT no ambiente de back-end externo, para que o back-end externo possa receber tráfego do Google Cloud.

Reserve o endereço IP do balanceador de carga

Reserve um endereço IP interno para o balanceador de carga.

Console

É possível reservar um endereço IP interno independente usando o Console do Google Cloud.

  1. Acesse a página Redes VPC.

    Acessar redes VPC

  2. Clique na rede usada para configurar a conectividade híbrida entre os ambientes.
  3. Clique em Endereços IP internos estáticos e em Reservar endereço estático.
  4. Digite um Nome: LB_IP_ADDRESS.
  5. Em Sub-rede, selecione LB_SUBNET_NAME.
  6. Se quiser especificar o endereço IP a ser reservado, em Endereço IP estático , selecioneDeixe-me escolher e preencha com um Endereço IP personalizado. Caso contrário, o sistema atribui automaticamente um endereço IP na sub-rede para você.
  7. Se você quiser usar esse endereço IP com várias regras de encaminhamento, em Objetivo, escolha Compartilhado.
  8. Clique em Reservar para concluir o processo.

gcloud

  1. Usando a CLI gcloud, execute o comando compute addresses create:

    gcloud compute addresses create LB_IP_ADDRESS \
      --region=REGION \
      --subnet=LB_SUBNET_NAME \
    
  2. Use o comando compute addresses describe para ver o endereço IP alocado:

    gcloud compute addresses describe LB_IP_ADDRESS \
      --region=REGION
    

Configurar o NEG da Internet

É possível criar um NEG da Internet com endpoints INTERNET_FQDN_PORT ou INTERNET_IP_PORT.

Console

Criar um NEG com endpoints INTERNET_FQDN_PORT

  1. No console do Google Cloud, acesse a página Grupo de endpoints de rede.

    Acessar "Grupo de endpoints de rede"

  2. Clique em Criar grupo de endpoints de rede.

  3. Especifique um INTERNET_NEG_NAME para seu NEG da Internet. Saiba mais em Convenção de nomenclatura de recursos.

  4. Na lista Tipo de grupo de endpoints de rede, selecione Grupo de endpoints de rede (Internet) e, em seguida, faça isto:

    • Na lista Escopo, selecione Regional.
    • Opcional: na lista Região, mude a REGION desse NEG.
    • Na lista Rede, selecione LB_NETWORK.
    • Na caixa Porta padrão, digite DEFAULT_PORT_NUMBER.
    • Na lista Adicionar endpoints via, selecione Nome de domínio totalmente qualificado e porta.
  5. Selecione Criar.

Adicione INTERNET_FQDN_PORT endpoints ao NEG

  1. No console do Google Cloud, acesse a página Grupo de endpoints de rede.

    Acessar "Grupo de endpoints de rede"

  2. Clique em INTERNET_NEG_NAME.
  3. Insira o Nome de domínio totalmente qualificado, como myorg.example.com. É preciso especificar objetos FQDN na sintaxe padrão de FQDN.

  4. Opcional: em Tipo de porta, selecione Personalizado. Se o Tipo de porta for Default, a porta padrão do NEG será usada.

  5. Na caixa Número da porta, digite PORT_NUMBER_1.
  6. Selecione Criar.

Criar um NEG com endpoints INTERNET_IP_PORT

  1. No console do Google Cloud, acesse a página Grupo de endpoints de rede.

    Acessar "Grupo de endpoints de rede"

  2. Clique em Criar grupo de endpoints de rede.

  3. Especifique um nome INTERNET_NEG_NAME para seu NEG da Internet. Saiba mais em Convenção de nomenclatura de recursos.

  4. Na lista Tipo de grupo de endpoints de rede, selecione Grupo de endpoints de rede (Internet) e, em seguida, faça isto:

    • Na lista Escopo, selecione Regional.
    • Opcional: na lista Região, mude a REGION desse NEG.
    • Na lista Rede, selecione LB_NETWORK.
    • Na caixa Porta padrão, digite DEFAULT_PORT_NUMBER.
    • Na lista Adicionar endpoints via, selecione IP e porta.
  5. Selecione Criar.

Adicione INTERNET_IP_PORT endpoints ao NEG

  1. No console do Google Cloud, acesse a página Grupo de endpoints de rede.

    Acessar "Grupo de endpoints de rede"

  2. Clique em INTERNET_NEG_NAME.
  3. No campo Endereço IP, digite IP_ADDRESS_1.
  4. Opcional: na lista Tipo de porta, selecione Personalizado. Se o Tipo de porta for Default, a porta padrão do NEG será usada.

  5. No campo Número da porta, digite PORT_NUMBER_1.
  6. Selecione Criar.

gcloud

Para criar um NEG com endpoints INTERNET_FQDN_PORT:

  1. Crie o recurso de NEG.

    gcloud beta compute network-endpoint-groups create INTERNET_NEG_NAME \
        --network-endpoint-type=INTERNET_FQDN_PORT \
        --default-port=DEFAULT_PORT_NUMBER \
        --network=LB_NETWORK \
        --region=REGION
    
  2. Adicione endpoints ao NEG. Se uma porta não for especificada, a porta padrão do NEG será usada.

    gcloud beta compute network-endpoint-groups update INTERNET_NEG_NAME \
        --add-endpoint="fqdn=FULLY_QUALIFIED_DOMAIN_NAME_1,port=PORT_NUMBER_1" \
        [--add-endpoint="fqdn=FULLY_QUALIFIED_DOMAIN_NAME_2,port=PORT_NUMBER_2" \]
        --region=REGION
    

    Substitua:

    • FULLY_QUALIFIED_DOMAIN_NAME: o nome de domínio totalmente qualificado do endpoint
    • PORT_NUMBER: o número da porta do endpoint

    É possível adicionar até 256 endpoints por NEG.

Se seu domínio puder ser resolvido pela Internet, nenhuma outra configuração precisará ser definida no DNS. No entanto, se você estiver usando FQDNs particulares, será necessário configurar o Cloud DNS para facilitar a resolução de DNS. O nome precisa estar hospedado no Cloud DNS ou ser resolvido via encaminhamento de DNS do Cloud DNS para um DNS local.

Comece criando uma zona do Cloud DNS para hospedar os registros DNS no seu projeto. Em seguida, adicione os registros DNS a ele. Consulte a documentação do Cloud DNS para ver etapas de configuração específicas.

Para criar um NEG com endpoints INTERNET_IP_PORT:

  1. Crie o recurso de NEG.

    gcloud beta compute network-endpoint-groups create INTERNET_NEG_NAME \
        --network-endpoint-type=INTERNET_IP_PORT \
        --default-port=DEFAULT_PORT_NUMBER \
        --network=LB_NETWORK \
        --region=REGION
    
  2. Adicione endpoints ao NEG. Se uma porta não for especificada, a porta padrão do NEG será usada.

    gcloud beta compute network-endpoint-groups update INTERNET_NEG_NAME \
        --add-endpoint="ip=IP_ADDRESS_1,port=PORT_NUMBER_1" \
        [--add-endpoint="ip=IP_ADDRESS_2,port=PORT_NUMBER_2" \]
        --region=REGION
    

    Substitua:

    • IP_ADDRESS: o endereço IP do endpoint
    • PORT_NUMBER: o número da porta do endpoint

    É possível repetir essa etapa para adicionar até 256 endpoints por NEG.

Criar o balanceador de carga

Console

Iniciar a configuração

  1. No console do Google Cloud, acesse a página Balanceamento de carga.

    Acessar o "Balanceamento de carga"

  2. Clique em Criar balanceador de carga.
  3. Em Tipo de balanceador de carga, selecione Balanceador de carga de rede (TCP/UDP/SSL) e clique em Próxima.
  4. Em Proxy ou passagem, selecione Balanceador de carga de proxy e clique em Próxima.
  5. Em Voltado ao público ou interno, selecione Interno e clique em Próxima.
  6. Em Implantação entre regiões ou região única, selecione Melhor para cargas de trabalho regionais e clique em Próxima.
  7. Clique em Configurar.

Configuração básica

  1. Digite um Nome do balanceador de carga.
  2. Em Região, selecione REGION.
  3. Em Rede, selecione LB_NETWORK.

Reservar uma sub-rede somente proxy

Para reservar uma sub-rede somente proxy:

  1. Clique em Reservar sub-rede.
  2. Em Nome, insira PROXY_ONLY_SUBNET_NAME.
  3. Em Intervalo de endereços IP, insira PROXY_ONLY_SUBNET_RANGE.
  4. Clique em Adicionar.

Configuração de front-end

  1. Clique em Configuração de front-end.
  2. Digite um Nome.
  3. Em Sub-rede, selecione LB_SUBNET_NAME.
  4. Em Endereço IP, selecione o endereço IP reservado anteriormente: LB_IP_ADDRESS
  5. Em Número da porta, especifique um único número de porta entre 1 e 65.535. A regra de encaminhamento encaminha pacotes com uma porta de destino correspondente.
  6. Clique em Concluído.

Configuração de back-end

  1. Clique em Configuração de back-end.
  2. Clique em Serviços e buckets de back-end.
  3. Clique em Criar um serviço de back-end.
  4. Digite um nome.
  5. Para o tipo de back-end, selecione Grupo de endpoints da rede na Internet.
  6. Em Protocol, selecione TCP.
  7. Em Back-ends, na janela Novo back-end, selecione o Grupo de endpoints de rede regional da Internet criado na etapa anterior.
  8. Clique em Concluído.
  9. Configure a verificação de integridade:
    1. Em Verificação de integridade, selecione Criar verificação de integridade.
    2. Defina o nome da verificação de integridade como TCP_HEALTH_CHECK_NAME.
    3. Em Protocol, selecione TCP.
    4. Defina a Porta como 80.
    5. Mantenha os valores padrão restantes e clique em Salvar.
  10. Clique em Criar.

Revisar e finalizar

  1. Clique em Analisar e finalizar.
  2. Se estiver tudo certo, clique em Criar.

gcloud

  1. Opcional: crie uma verificação de integridade. As sondagens de verificação de integridade para back-ends externos usam as verificações de integridade distribuídas do Envoy e, posteriormente, são convertidas por NAT.
      gcloud compute health-checks create tcp TCP_HEALTH_CHECK_NAME \
          --region=REGION \
          --use-serving-port
      
  2. Crie um serviço de back-end:
      gcloud compute backend-services create BACKEND_SERVICE \
          --load-balancing-scheme=INTERNAL_MANAGED \
          --health-checks=TCP_HEALTH_CHECK_NAME \
          --health-checks-region=REGION \
          --region=REGION
      
  3. Adicione o NEG da Internet ao serviço de back-end:
      gcloud compute backend-services add-backend BACKEND_SERVICE \
          --network-endpoint-group=INTERNET_NEG_NAME \
          --network-endpoint-group-region=REGION \
          --region=REGION
       
      gcloud compute backend-services add-backend BACKEND_SERVICE \
          --network-endpoint-group=INTERNET_NEG_NAME \
          --network-endpoint-group-region=REGION \
          --region=REGION
       
  4. Crie um proxy TCP de destino para encaminhar solicitações ao serviço de back-end.

      gcloud compute target-tcp-proxies create TARGET_TCP_PROXY_NAME \
          --backend-service=BACKEND_SERVICE \
          --region=REGION
      
  5. Crie uma regra de encaminhamento para encaminhar as solicitações recebidas para o proxy. Para "--ports", especifique um único número de porta entre 1 e 65.535. A regra de encaminhamento encaminha pacotes com uma porta de destino correspondente.

      gcloud compute forwarding-rules create FORWARDING_RULE_NAME \
          --load-balancing-scheme=INTERNAL_MANAGED \
          --network-tier=PREMIUM \
          --network=LB_NETWORK \
          --subnet=LB_SUBNET_NAME \
          --address=LB_IP_ADDRESS \
          --target-tcp-proxy=TARGET_TCP_PROXY_NAME \
          --target-tcp-proxy-region=REGION \
          --region=REGION \
          --ports=PORT_NUMBER
      

Testar o balanceador de carga

Agora que você configurou o balanceador de carga, é possível começar a enviar tráfego para o endereço IP dele.

Criar uma VM cliente

No exemplo, é criada uma VM de cliente (vm-client) na mesma região do balanceador de carga. O cliente é usado para validar a configuração do balanceador de carga e demonstrar o comportamento esperado.

gcloud

A VM cliente pode estar em qualquer zona na mesma REGION que o balanceador de carga e usar qualquer sub-rede na mesma rede VPC.

gcloud compute instances create vm-client \
    --image-family=debian-10 \
    --image-project=debian-cloud \
    --tags=allow-ssh \
    --network=LB_NETWORK \
    --subnet=LB_SUBNET_NAME \
    --zone=ZONE

Enviar tráfego ao balanceador de carga

Pode levar alguns minutos para que a configuração do balanceador de carga seja propagada após sua primeira implantação.

  1. Conecte-se via SSH à instância do cliente.

    gcloud compute ssh vm-client \
      --zone=ZONE
    
  2. Verifique se o balanceador de carga está disponibilizando nomes de host de back-end conforme o esperado.

    1. Use o comando compute addresses describe para ver o endereço IP do balanceador de carga:

      gcloud compute addresses describe LB_IP_ADDRESS \
        --region=REGION
      

      Anote o endereço IP.

    2. É possível usar curl para enviar tráfego ao balanceador de carga no endereço IP e na porta especificados ao criar a regra de encaminhamento do balanceador de carga. Testar se os back-ends de NEG da Internet estão respondendo a solicitações depende do serviço em execução nos endpoints externos.

Outras opções de configuração

Para ativar ainda mais recursos no balanceador de carga de rede do proxy interno regional, como o acesso global (se os clientes estiverem em uma região diferente), consulte Configurar um balanceador de carga de aplicativo interno com grupo de instâncias de VM back-ends: configuração adicional.

A seguir