Configure um balanceador de carga de rede de proxy interno regional com back-ends de NEG zonais

O Network Load Balancer interno regional é um equilibrador de carga regional da camada 4 baseado em proxy que lhe permite executar e dimensionar o tráfego de serviços TCP atrás de um endereço IP interno acessível apenas a clientes na mesma rede VPC ou a clientes ligados à sua rede VPC.

Este guia contém instruções para configurar um Network Load Balancer de proxy interno regional com um back-end de grupo de pontos finais da rede (NEG) zonal. Antes de começar:

Vista geral

Neste exemplo, vamos usar o balanceador de carga para distribuir o tráfego TCP por VMs de back-end em dois NEGs zonais na região REGION_A. Para efeitos do exemplo, o serviço é um conjunto de servidores Apache configurados para responder na porta 80.

Neste exemplo, configura a seguinte implementação:

Exemplo de configuração do balanceador de carga de rede de proxy interno regional com back-ends do NEG zonais.
Exemplo de configuração do balanceador de carga de rede de proxy interno regional com back-ends de NEG zonais.

O balanceador de carga de rede de proxy interno regional é um balanceador de carga regional. Todos os componentes do balanceador de carga (grupos de instâncias de back-end, serviço de back-end, proxy de destino e regra de encaminhamento) têm de estar na mesma região.

Autorizações

Para seguir este guia, tem de conseguir criar instâncias e modificar uma rede num projeto. Tem de ser proprietário ou editor do projeto, ou ter todas as seguintes funções do IAM do Compute Engine:

Tarefa Função necessária
Crie redes, sub-redes e componentes do balanceador de carga Administrador da rede
Adicione e remova regras de firewall Administrador de segurança
Crie instâncias Administrador de instâncias do Compute

Para mais informações, consulte os seguintes guias:

Configure a rede e as sub-redes

Precisa de uma rede VPC com duas sub-redes: uma para os back-ends do balanceador de carga e outra para os proxies do balanceador de carga. Os balanceadores de carga de rede de proxy interno regionais são regionais. O tráfego na rede VPC é encaminhado para o balanceador de carga se a origem do tráfego estiver numa sub-rede na mesma região que o balanceador de carga.

Este exemplo usa a seguinte rede de VPC, região e sub-redes:

  • Rede. A rede é uma rede VPC no modo personalizado denominada lb-network.

  • Sub-rede para back-ends. Uma sub-rede denominada backend-subnet na região REGION_A usa 10.1.2.0/24 para o respetivo intervalo de IP principal.

  • Sub-rede para proxies. Uma sub-rede denominada proxy-only-subnet na região REGION_A usa 10.129.0.0/23 para o respetivo intervalo de IP principal.

Crie a rede e a sub-rede para back-ends

Consola

  1. Na Trusted Cloud consola, aceda à página Redes VPC.

    Aceda a redes de VPC

  2. Clique em Criar rede de VPC.

  3. No campo Nome, introduza lb-network.

  4. Na secção Subnets (Sub-redes):

    • Defina o Subnet creation mode (Modo de criação de sub-rede) como Custom (Personalizado).
    • Na secção Nova sub-rede, introduza as seguintes informações:
      • Nome: backend-subnet
      • Região: REGION_A
      • Intervalo de endereços IP: 10.1.2.0/24
    • Clique em Concluído.
  5. Clique em Criar.

gcloud

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

    gcloud compute networks create lb-network --subnet-mode=custom
    
  2. Crie uma sub-rede na rede lb-network na região REGION_A com o comando gcloud compute networks subnets create:

    gcloud compute networks subnets create backend-subnet \
        --network=lb-network \
        --range=10.1.2.0/24 \
        --region=REGION_A
    

Crie a sub-rede só de proxy

Uma sub-rede apenas de proxy fornece um conjunto de endereços IP que a Google usa para executar proxies do Envoy em seu nome. Os proxies terminam as ligações do cliente e criam novas ligações aos backends.

Esta sub-rede apenas de proxy é usada por todos os equilibradores de carga baseados no Envoy na REGION_Aregiãolb-network da rede VPC.

Consola

Se estiver a usar a Trusted Cloud consola, pode aguardar e criar a sub-rede apenas de proxy mais tarde na página Equilíbrio de carga.

Se quiser criar a sub-rede apenas de proxy agora, siga estes passos:

  1. Na Trusted Cloud consola, aceda à página Redes VPC.

    Aceda a redes de VPC

  2. Clique no nome da rede VPC partilhada: lb-network.

  3. Clique em Adicionar sub-rede.

  4. No campo Nome, introduza proxy-only-subnet.

  5. Para a Região, selecione REGION_A.

  6. Defina Purpose como Regional Managed Proxy.

  7. Para o intervalo de endereços IP, introduza 10.129.0.0/23.

  8. Clique em Adicionar.

gcloud

Crie a sub-rede só de proxy com o comando gcloud compute networks subnets create.

gcloud compute networks subnets create proxy-only-subnet \
    --purpose=REGIONAL_MANAGED_PROXY \
    --role=ACTIVE \
    --region=REGION_A \
    --network=lb-network \
    --range=10.129.0.0/23

Crie regras de firewall

Neste exemplo, cria as seguintes regras de firewall:

  • fw-allow-health-check: uma regra de entrada, aplicável às instâncias com balanceamento de carga, que permite o tráfego do balanceador de carga e dos sistemas de verificação de funcionamento (130.211.0.0/22 e 35.191.0.0/16). Este exemplo usa a etiqueta de destino allow-health-check para identificar as VMs de back-end às quais deve ser aplicada. Trusted CloudTrusted Cloud
  • fw-allow-ssh: Uma regra de entrada que permite a conetividade SSH de entrada na porta TCP 22 a partir de qualquer endereço. Pode escolher um intervalo de IPs de origem mais restritivo para esta regra. Por exemplo, pode especificar apenas os intervalos de IPs dos sistemas a partir dos quais vai iniciar sessões SSH. Este exemplo usa a etiqueta de destino allow-ssh para identificar as VMs às quais deve ser aplicada.
  • fw-allow-proxy-only-subnet: crie uma regra de firewall de permissão de entrada para a sub-rede só de proxy para permitir que o balanceador de carga comunique com as instâncias de back-end na porta TCP 80. Este exemplo usa a etiqueta de destino allow-proxy-only-subnet para identificar as VMs de back-end às quais deve aplicar-se.

Consola

  1. Na Trusted Cloud consola, aceda à página Políticas de firewall.

    Aceder a Políticas de firewall

  2. Clique em Criar regra de firewall:

    1. Introduza um Nome de fw-allow-health-check.
    2. Em Rede, selecione lb-network.
    3. Em Segmentações, selecione Etiquetas de segmentação especificadas.
    4. Preencha o campo Etiquetas alvo com allow-health-check.
    5. Defina o Filtro de origem como Intervalos IPv4.
    6. Defina os Intervalos IPv4 de origem como 130.211.0.0/22 e 35.191.0.0/16.
    7. Em Protocolos e portas, selecione Protocolos e portas especificados.
    8. Selecione a caixa de verificação TCP e introduza 80 para os números das portas.
    9. Clique em Criar.
  3. Clique novamente em Criar regra de firewall para criar a regra que permite ligações SSH de entrada:

    • Nome: fw-allow-ssh
    • Rede: lb-network
    • Prioridade: 1000
    • Direção do tráfego: entrada
    • Ação na correspondência: permitir
    • Objetivos: etiquetas de objetivo especificadas
    • Etiquetas de segmentação: allow-ssh
    • Filtro de origem: intervalos IPv4
    • Intervalos IPv4 de origem: 0.0.0.0/0
    • Protocolos e portas: escolha Protocolos e portas especificados e, em seguida, escreva: tcp:22
  4. Clique em Criar.

  5. Clique novamente em Criar regra de firewall para criar a regra que permite ligações de entrada da sub-rede só de proxy aos Trusted Cloud backends:

    • Nome: fw-allow-proxy-only-subnet
    • Rede: lb-network
    • Prioridade: 1000
    • Direção do tráfego: entrada
    • Ação na correspondência: permitir
    • Objetivos: etiquetas de objetivo especificadas
    • Etiquetas de segmentação: allow-proxy-only-subnet
    • Filtro de origem: intervalos IPv4
    • Intervalos IPv4 de origem: 10.129.0.0/23
    • Protocolos e portas: escolha Protocolos e portas especificados e, em seguida, escreva: tcp:80
  6. Clique em Criar.

gcloud

  1. Crie a regra fw-allow-health-check para permitir que as verificações de funcionamento alcancem as instâncias de back-end numa porta TCP 80: Trusted Cloud

    gcloud compute firewall-rules create fw-allow-health-check \
        --network=lb-network \
        --action=allow \
        --direction=ingress \
        --target-tags=allow-health-check \
        --source-ranges=130.211.0.0/22,35.191.0.0/16 \
        --rules=tcp:80
    
  2. Crie a regra de firewall fw-allow-ssh para permitir a conetividade SSH a VMs com a etiqueta de rede allow-ssh. Quando omite source-ranges, Trusted Cloud interpreta a regra como qualquer origem.

    gcloud compute firewall-rules create fw-allow-ssh \
        --network=lb-network \
        --action=allow \
        --direction=ingress \
        --target-tags=allow-ssh \
        --rules=tcp:22
    
  3. Crie uma regra de firewall de permissão de entrada para a sub-rede só de proxy para permitir que o balanceador de carga comunique com instâncias de back-end na porta TCP 80:

    gcloud compute firewall-rules create fw-allow-proxy-only-subnet \
        --network=lb-network \
        --action=allow \
        --direction=ingress \
        --target-tags=allow-proxy-only-subnet \
        --source-ranges=10.129.0.0/23 \
        --rules=tcp:80
    

Reserve o endereço IP do balanceador de carga

Para reservar um endereço IP interno estático para o seu equilibrador de carga, consulte o artigo Reserve um novo endereço IPv4 ou IPv6 interno estático.

Configure o NEG zonal

Configure um NEG zonal (com pontos finais do tipo GCE_VM_IP_PORT) na região REGION_A. Primeiro, crie as VMs. Em seguida, crie um NEG zonal e adicione os pontos finais de rede das VMs ao NEG.

Crie VMs

Consola

  1. Na Trusted Cloud consola, aceda à página Instâncias de VM.

    Aceder às instâncias de VM

  2. Clique em Criar instância.

  3. Defina o Nome como vm-a1.

  4. Para a Região, selecione REGION_A.

  5. Para a zona, consulte ZONE_A1.

  6. Na secção Disco de arranque, certifique-se de que a opção Debian GNU/Linux 12 (bookworm) está selecionada para as opções do disco de arranque. Clique em Escolher para alterar a imagem, se necessário.

  7. Clique em Opções avançadas.

  8. Clique em Rede e configure os seguintes campos:

    1. Para Etiquetas de rede, introduza allow-ssh, allow-health-check e allow-proxy-only-subnet.
    2. Para Interfaces de rede, selecione o seguinte:
      • Rede: lb-network
      • Subnet: backend-subnet
  9. Clique em Gestão. Introduza o seguinte script no campo Script de arranque.

    #! /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
    
  10. Clique em Criar.

  11. Repita os passos seguintes para criar mais 3 VMs, usando as seguintes combinações de nomes e zonas:

    • Nome: vm-a2, zona: ZONE_A1
    • Nome: vm-c1, zona: ZONE_A2
    • Nome: vm-c2, zona: ZONE_A2

gcloud

Crie as VMs executando o seguinte comando duas vezes, usando estas combinações para VM_NAME e ZONE. Os conteúdos do script são idênticos para ambas as VMs.

  • VM_NAME: vm-a1 e ZONE: ZONE_A1
  • VM_NAME: vm-a2 e ZONE: ZONE_A1
  • VM_NAME: vm-c1 e ZONE: ZONE_A2
  • VM_NAME: vm-c2 e ZONE: ZONE_A2

    gcloud compute instances create VM_NAME \
        --zone=ZONE \
        --image-family=debian-12 \
        --image-project=debian-cloud \
        --tags=allow-ssh,allow-health-check,allow-proxy-only-subnet \
        --subnet=backend-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'
    

Crie os NEGs zonais

Consola

Para criar um grupo de pontos finais de rede zonal:

  1. Na Trusted Cloud consola, aceda à página Grupos de pontos finais de rede.

    Aceda a Grupos de pontos finais da rede

  2. Clique em Criar grupo de pontos finais de rede.

  3. Em Nome, introduza zonal-neg-a.

  4. Para o Tipo de grupo de pontos finais da rede, selecione Grupo de pontos finais da rede (zonal).

  5. Para Rede, selecione lb-network.

  6. Para Sub-rede, selecione backend-subnet.

  7. Para Zona, selecione ZONE_A1.

  8. Introduza a Porta predefinida: 80.

  9. Clique em Criar.

  10. Repita todos os passos nesta secção para criar um segundo NEG zonal com as seguintes alterações nas definições:

    • Nome: zonal-neg-c
    • Zona: ZONE_A2

Adicione pontos finais aos NEGs zonais:

  1. Na Trusted Cloud consola, aceda à página Grupos de pontos finais de rede.

    Aceda a Grupos de pontos finais da rede

  2. Clique no Nome do grupo de pontos finais de rede criado no passo anterior (por exemplo, zonal-neg-a). É apresentada a página Detalhes do grupo de pontos finais de rede.

  3. Na secção Pontos finais de rede neste grupo, clique em Adicionar ponto final de rede. É apresentada a página Adicionar ponto final de rede.

  4. Selecione uma instância de VM (por exemplo, vm-a1). Na secção Interface de rede, é apresentado o nome, a zona e a sub-rede da VM.

    1. Introduza o endereço IP do novo ponto final de rede. Pode clicar em Verificar endereços IP principais e intervalo de IP de alias em nic0 para ver o endereço IP.
    2. Para Tipo de porta, selecione Predefinição. O ponto final usa a porta predefinida 80 para todos os pontos finais no grupo de pontos finais da rede. Isto é suficiente para o nosso exemplo porque o servidor Apache está a processar pedidos na porta 80.
    3. Clique em Criar.
  5. Clique novamente em Adicionar ponto final de rede. Selecione a segunda instância de VM, vm-a2, e repita estes passos para adicionar os respetivos pontos finais a zonal-neg-a.

  6. Repita todos os passos nesta secção para adicionar pontos finais de vm-c1 e vm-c2 a zonal-neg-c.

gcloud

  1. Crie um NEG zonal na zona ZONE_A1 com GCE_VM_IP_PORT pontos finais.

    gcloud compute network-endpoint-groups create zonal-neg-a \
       --network-endpoint-type=GCE_VM_IP_PORT \
       --zone=ZONE_A1 \
       --network=lb-network \
       --subnet=backend-subnet
    

    Pode especificar o --default-port ao criar o NEG ou especificar um número de porta para cada ponto final conforme mostrado no passo seguinte.

  2. Adicione pontos finais ao NEG zonal.

    gcloud compute network-endpoint-groups update zonal-neg-a \
        --zone=ZONE_A1 \
        --add-endpoint='instance=vm-a1,port=80' \
        --add-endpoint='instance=vm-a2,port=80'
    
  3. Crie um NEG zonal na zona ZONE_A2 com GCE_VM_IP_PORT pontos finais.

    gcloud compute network-endpoint-groups create zonal-neg-c \
        --network-endpoint-type=GCE_VM_IP_PORT \
        --zone=ZONE_A2 \
        --network=lb-network \
        --subnet=backend-subnet
    

    Pode especificar o --default-port ao criar o NEG ou especificar um número de porta para cada ponto final conforme mostrado no passo seguinte.

  4. Adicione pontos finais ao NEG zonal.

    gcloud compute network-endpoint-groups update zonal-neg-c \
        --zone=ZONE_A2 \
        --add-endpoint='instance=vm-c1,port=80' \
        --add-endpoint='instance=vm-c2,port=80'
    

Configure o balanceador de carga

Consola

Inicie a configuração

  1. Na Trusted Cloud consola, aceda à página Equilíbrio de carga.

    Aceda a Balanceamento de carga

  2. Clique em Criar equilibrador de carga.
  3. Para Tipo de balanceador de carga, selecione Balanceador de carga de rede (TCP/UDP/SSL) e clique em Seguinte.
  4. Para Proxy ou passagem, selecione Proxy de balanceamento de carga e clique em Seguinte.
  5. Para Público ou interno, selecione Interno e clique em Seguinte.
  6. Para a Implementação em várias regiões ou numa única região, selecione Melhor para cargas de trabalho regionais e clique em Seguinte.
  7. Clique em Configurar.

Configuração básica

  1. Em Nome, introduza my-int-tcp-lb.
  2. Para Região, selecione REGION_A.
  3. Para Rede, selecione lb-network.

Reserve uma sub-rede só de proxy

Para reservar uma sub-rede só de proxy:

  1. Clique em Reservar sub-rede.
  2. Em Nome, introduza proxy-only-subnet.
  3. Para o Intervalo de endereços IP, introduza 10.129.0.0/23.
  4. Clique em Adicionar.

Configuração do back-end

  1. Clique em Configuração de back-end.
  2. Para Tipo de back-end, selecione Grupo de pontos finais da rede zonal.
  3. Em Protocolo, selecione TCP.
  4. Na lista Verificação de funcionamento, clique em Criar uma verificação de funcionamento e, de seguida, introduza as seguintes informações:
    1. Nome: tcp-health-check
    2. Protocolo: TCP
    3. Porta: 80
  5. Clique em Criar.
  6. Configure o primeiro back-end:
    1. Em Novo back-end, selecione NEG zonal zonal-neg-a.
    2. Mantenha os restantes valores predefinidos e clique em Concluído.
  7. Configure o segundo back-end:

    1. Clique em Adicionar back-end.
    2. Em Novo back-end, selecione o grupo de instâncias zonal-neg-c.
    3. Mantenha os restantes valores predefinidos e clique em Concluído.
  8. Na Trusted Cloud consola, verifique se existe uma marca de verificação junto a Configuração de back-end. Caso contrário, verifique novamente se concluiu todos os passos.

Configuração da interface

  1. Clique em Configuração do front-end.
  2. Em Nome, introduza int-tcp-forwarding-rule.
  3. Para Sub-rede, selecione backend-subnet.
  4. Para Endereço IP, selecione int-tcp-ip-address.
  5. Em Número da porta, introduza 9090. A regra de encaminhamento apenas encaminha pacotes com uma porta de destino correspondente.
  6. Neste exemplo, não ative o protocolo proxy porque não funciona com o software do servidor HTTP Apache. Para mais informações, consulte o artigo Protocolo de proxy.
  7. Clique em Concluído.
  8. Na Trusted Cloud consola, verifique se existe uma marca de verificação junto a Configuração do front-end. Caso contrário, verifique novamente se concluiu todos os passos anteriores.

Reveja e finalize

  1. Clique em Rever e finalizar.
  2. Verifique as definições.
  3. Clique em Criar.

gcloud

  1. Crie uma verificação de funcionamento regional para os back-ends.

    gcloud compute health-checks create tcp tcp-health-check \
        --region=REGION_A \
        --use-serving-port
    
  2. Crie um serviço de back-end.

    gcloud compute backend-services create internal-tcp-proxy-bs \
       --load-balancing-scheme=INTERNAL_MANAGED \
       --protocol=TCP \
       --region=REGION_A \
       --health-checks=tcp-health-check \
       --health-checks-region=REGION_A
    
  3. Adicione o NEG zonal na zona ZONE_A1 ao serviço de back-end.

    gcloud compute backend-services add-backend internal-tcp-proxy-bs \
       --network-endpoint-group=zonal-neg-a \
       --network-endpoint-group-zone=ZONE_A1 \
       --balancing-mode=CONNECTION \
       --max-connections-per-endpoint=50 \
       --region=REGION_A
    
  4. Adicione o NEG zonal na zona ZONE_A2 ao serviço de back-end.

    gcloud compute backend-services add-backend internal-tcp-proxy-bs \
       --network-endpoint-group=zonal-neg-c \
       --network-endpoint-group-zone=ZONE_A2 \
       --balancing-mode=CONNECTION \
       --max-connections-per-endpoint=50 \
       --region=REGION_A
    
  5. Crie o proxy TCP de destino.

    gcloud compute target-tcp-proxies create int-tcp-target-proxy \
       --backend-service=internal-tcp-proxy-bs \
       --region=REGION_A
    
  6. Crie a regra de encaminhamento. Para --ports, especifique um único número de porta entre 1 e 65535. Este exemplo usa a porta 9090. A regra de encaminhamento apenas encaminha pacotes com uma porta de destino correspondente.

    gcloud compute forwarding-rules create int-tcp-forwarding-rule \
      --load-balancing-scheme=INTERNAL_MANAGED \
      --network=lb-network \
      --subnet=backend-subnet \
      --address=int-tcp-ip-address \
      --ports=9090 \
      --region=REGION_A \
      --target-tcp-proxy=int-tcp-target-proxy \
      --target-tcp-proxy-region=REGION_A
    

Teste o balanceador de carga

Para testar o balanceador de carga, crie uma VM cliente na mesma região que o balanceador de carga. Em seguida, envie tráfego do cliente para o balanceador de carga.

Crie uma VM de cliente

Crie uma VM cliente (client-vm) na mesma região que o balanceador de carga.

Consola

  1. Na Trusted Cloud consola, aceda à página Instâncias de VM.

    Aceder às instâncias de VM

  2. Clique em Criar instância.

  3. Defina Nome como client-vm.

  4. Defina a zona como ZONE_A1.

  5. Clique em Opções avançadas.

  6. Clique em Rede e configure os seguintes campos:

    1. Para etiquetas de rede, introduza allow-ssh.
    2. Para Interfaces de rede, selecione o seguinte:
      • Rede: lb-network
      • Subnet: backend-subnet
  7. Clique em Criar.

gcloud

A VM do cliente tem de estar na mesma rede de VPC e região que o balanceador de carga. Não tem de estar na mesma sub-rede ou zona. O cliente usa a mesma sub-rede que as VMs de back-end.

gcloud compute instances create client-vm \
    --zone=ZONE_A1 \
    --image-family=debian-12 \
    --image-project=debian-cloud \
    --tags=allow-ssh \
    --subnet=backend-subnet

Envie tráfego para o balanceador de carga

Agora que configurou o equilibrador de carga, pode testar o envio de tráfego para o endereço IP do equilibrador de carga.

  1. Use o SSH para estabelecer ligação à instância do cliente.

    gcloud compute ssh client-vm \
      --zone=ZONE_A1
    
  2. Verifique se o balanceador de carga está a publicar nomes de anfitriões de back-end conforme esperado.

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

      gcloud compute addresses describe int-tcp-ip-address \
        --region=REGION_A
      

      Tome nota do endereço IP.

    2. Envie tráfego para o balanceador de carga. Substitua IP_ADDRESS pelo endereço IP do balanceador de carga.

      curl IP_ADDRESS:9090
      

O que se segue?