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

Um balanceador de carga de rede de proxy externo regional é um balanceador de carga regional de camada 4 baseado em proxy que lhe permite executar e dimensionar o tráfego de serviço TCP numa única região por detrás de um endereço IP regional externo. Estes balanceadores de carga distribuem o tráfego TCP externo da Internet para back-ends na mesma região.

Este guia contém instruções para configurar um balanceador de carga de rede de proxy externo regional com um back-end de grupo de pontos finais de rede (NEG) zonal.

Antes de começar, reveja os seguintes documentos:

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 A. Para efeitos do exemplo, o serviço é um conjunto de servidores Apache configurados para responder na porta 80.

Neste exemplo, configura a implementação apresentada no diagrama seguinte.

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

Este é um balanceador de carga regional. Todos os componentes do balanceador de carga (grupo 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 funções do IAM do Compute Engine seguintes.

Tarefa Função necessária
Crie redes, sub-redes e componentes do balanceador de carga Administrador de rede de Calcular (roles/compute.networkAdmin)
Adicione e remova regras de firewall Administrador de segurança da computação (roles/compute.securityAdmin)
Crie instâncias Administrador de instância de computação (roles/compute.instanceAdmin)

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 equilibrador de carga e outra para os proxies do equilibrador de carga. Este é um balanceador de carga regional. O tráfego na rede da 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: uma rede VPC no modo personalizado denominada lb-network

  • Sub-rede para back-ends: uma sub-rede denominada backend-subnet na região A que usa 10.1.2.0/24 para o respetivo intervalo de endereços IP principal

  • Sub-rede para proxies: uma sub-rede denominada proxy-only-subnet na região A que usa 10.129.0.0/23 para o respetivo intervalo de endereços IP principal

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

Consola

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

    Aceda a redes de VPC

  2. Clique em Criar rede de VPC.

  3. Em Nome, introduza lb-network.

  4. Na secção Sub-redes, faça o seguinte:

    1. Defina o Subnet creation mode (Modo de criação de sub-rede) como Custom (Personalizado).
    2. 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
    3. Clique em Concluído.
  5. Clique em Criar.

gcloud

  1. Para criar a rede VPC personalizada, use o comando gcloud compute networks create:

    gcloud compute networks create lb-network --subnet-mode=custom
    
  2. Para criar uma sub-rede na rede lb-network na região REGION_A, use 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 região A da rede VPC lb-network.

Consola

Se estiver a usar a Cloud de Confiance 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 Cloud de Confiance 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. Em Nome, introduza proxy-only-subnet.

  5. Para 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

Para criar a sub-rede só de proxy, use 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. Cloud de ConfianceCloud de Confiance
  • 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 inicia 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. Uma regra de firewall de allow entrada para a sub-rede só de proxy que permite que o balanceador de carga comunique com as instâncias de back-end na porta TCP 80. Este exemplo usa a etiqueta target allow-proxy-only-subnet para identificar as VMs de back-end às quais deve aplicar-se.

Consola

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

    Aceder a Políticas de firewall

  2. Clique em Criar regra de firewall e, de seguida, preencha os seguintes campos:

    • Nome: fw-allow-health-check
    • Rede: lb-network
    • Objetivos: etiquetas de destino especificadas
    • Etiquetas de segmentação: allow-health-check
    • Filtro de origem: intervalos IPv4
    • Intervalos de IPv4 de origem: 130.211.0.0/22 e 35.191.0.0/16
    • Protocolos e portas:
      • Escolha Protocolos e portas especificados.
      • Selecione a caixa de verificação TCP e, de seguida, introduza 80 para o número da porta.
  3. Clique em Criar.

  4. Clique em Criar regra de firewall uma segunda vez para criar a regra para permitir 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 destino 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.
      • Selecione a caixa de verificação TCP e, de seguida, introduza 22 para o número da porta.
  5. Clique em Criar.

  6. Clique em Criar regra de firewall pela terceira vez para criar a regra que permite ligações recebidas da sub-rede só de proxy aos back-ends: Cloud de Confiance

    • 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 destino 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.
      • Selecione a caixa de verificação TCP e, de seguida, introduza 80 para o número da porta.
  7. 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 na porta TCP 80: Cloud de Confiance

    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, Cloud de Confiance 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

Consola

  1. Na Cloud de Confiance consola, aceda à página Reserve um endereço estático.

    Aceda a Reservar um endereço estático

  2. Escolha um nome para a nova morada.

  3. Para Nível de serviço de rede, selecione Padrão.

  4. Para Versão do IP, selecione IPv4. Os endereços IPv6 não são suportados.

  5. Para Tipo, selecione Regional.

  6. Para Região, selecione REGION_A.

  7. Deixe a opção Anexado a definida como Nenhum. Depois de criar o balanceador de carga, este endereço IP é anexado à regra de encaminhamento do balanceador de carga.

  8. Clique em Reservar para reservar o endereço IP.

gcloud

  1. Para reservar um endereço IP externo estático, use o comando gcloud compute addresses create:

    gcloud compute addresses create ADDRESS_NAME  \
       --region=REGION_A \
       --network-tier=STANDARD
    

    Substitua ADDRESS_NAME pelo nome que quer dar a este endereço.

  2. Para ver o resultado, use o comando gcloud compute addresses describe:

    gcloud compute addresses describe ADDRESS_NAME
    

Configure o NEG zonal

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

Crie VMs

Consola

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

    Aceder às instâncias de VM

  2. Clique em Criar instância.

  3. Defina Nome como vm-a1.

  4. Para Região, selecione REGION_A.

  5. Para Zona, selecione ZONE_A.

  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, de seguida, 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 anteriores para criar mais três VMs. Use as seguintes combinações de nomes e zonas:

    • Nome: vm-a2 | Zona: ZONE_A
    • Nome: vm-b1 | Zona: ZONE_B
    • Nome: vm-b2 | Zona: ZONE_B

gcloud

Para criar as VMs, use o comando gcloud compute instances create duas vezes. Use as seguintes 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_A
  • VM_NAME: vm-a2 e ZONE: ZONE_A
  • VM_NAME: vm-b1 e ZONE: ZONE_B
  • VM_NAME: vm-b2 e ZONE: ZONE_B
 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

Crie um grupo de pontos finais de rede zonal

  1. Na Cloud de Confiance 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_A.

  8. Para Porta predefinida, introduza 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-b
    • Zona: ZONE_B

Adicione pontos finais aos NEGs zonais

  1. Na Cloud de Confiance 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 que criou no passo anterior (por exemplo, zonal-neg-a).

  3. Na página Detalhes do grupo de pontos finais de rede, na secção Pontos finais de rede neste grupo, clique em Adicionar ponto final de rede.

  4. Selecione uma instância de VM (por exemplo, vm-a1).

  5. Na secção Interface de rede, são apresentados o nome, a zona e a sub-rede da VM.

    1. Para Endereço IP, introduza o endereço IP do novo ponto final de rede. Para obter o endereço IP, clique em Verificar endereços IP principais e intervalo de IP alternativo em nic0.
    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.
  6. Clique em Adicionar ponto final de rede. Selecione a segunda instância de VM, vm-a2, e repita os passos anteriores para adicionar os respetivos pontos finais a zonal-neg-a.

  7. Repita todos os passos nesta secção para adicionar pontos finais de vm-b1 e vm-b2 a zonal-neg-b.

gcloud

  1. Crie um NEG zonal na zona ZONE_A 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_A \
        --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_A \
        --add-endpoint='instance=vm-a1,port=80' \
        --add-endpoint='instance=vm-a2,port=80'
    
  3. Crie um NEG zonal na zona ZONE_B com GCE_VM_IP_PORT pontos finais:

    gcloud compute network-endpoint-groups create zonal-neg-b \
        --network-endpoint-type=GCE_VM_IP_PORT \
        --zone=ZONE_B \
        --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-b \
        --zone=ZONE_B \
        --add-endpoint='instance=vm-b1,port=80' \
        --add-endpoint='instance=vm-b2,port=80'
    

Configure o balanceador de carga

Consola

Inicie a configuração

  1. Na Cloud de Confiance 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 Público (externo) e clique em Seguinte.
  6. Para a Implementação global ou de região única, selecione Melhor para cargas de trabalho regionais e clique em Seguinte.
  7. Clique em Configurar.

Configuração básica

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

Reserve 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.

Configure os back-ends

  1. Clique em Configuração de back-end.
  2. Na lista Tipo de back-end, selecione Grupo de pontos finais de rede zonal.
  3. Na lista Protocolo, selecione TCP.
  4. Configure a verificação de estado:
    1. Na lista Verificação de funcionamento, selecione Criar uma verificação de funcionamento.
    2. No campo Nome, introduza tcp-health-check.
    3. Na lista Protocolo, selecione TCP.
    4. No campo Porta, introduza 80.
    5. Clique em Criar.
  5. Configure o primeiro back-end:
    1. Para Novo back-end, selecione NEG zonal zonal-neg-a.
    2. Mantenha os restantes valores predefinidos e, de seguida, clique em Concluído.
  6. Configure o segundo back-end:
    1. Clique em Adicionar back-end.
    2. Para Novo back-end, selecione o grupo de instâncias zonal-neg-b.
    3. Mantenha os restantes valores predefinidos e, de seguida, clique em Concluído.
  7. Mantenha os restantes valores predefinidos e, de seguida, clique em Guardar.
  8. Na Cloud de Confiance 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.

Configure a interface

  1. Clique em Configuração do front-end.
  2. Em Nome, introduza ext-tcp-forwarding-rule.
  3. Para Nível de serviço de rede, selecione Padrão.
  4. Para Endereço IP, selecione ext-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. Para o protocolo PROXY, selecione Desativado porque o protocolo PROXY não funciona com o software Apache HTTP Server. Para mais informações, consulte o protocolo PROXY.
  7. Clique em Concluído.
  8. Na Cloud de Confiance 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 external-tcp-proxy-bs \
       --load-balancing-scheme=EXTERNAL_MANAGED \
       --protocol=TCP \
       --region=REGION_A \
       --health-checks=tcp-health-check \
       --health-checks-region=REGION_A
    
  3. Adicione o NEG zonal na zona ZONE_A ao serviço de back-end:

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

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

    gcloud compute target-tcp-proxies create ext-tcp-target-proxy \
       --backend-service=external-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 ext-tcp-forwarding-rule \
      --load-balancing-scheme=EXTERNAL_MANAGED \
      --network=lb-network \
      --network-tier=STANDARD \
      --address=ext-tcp-ip-address \
      --ports=9090 \
      --region=REGION_A \
      --target-tcp-proxy=ext-tcp-target-proxy \
      --target-tcp-proxy-region=REGION_A
    

Teste 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. Obtenha o endereço IP do balanceador de carga.

    Para obter o endereço IPv4, execute o seguinte comando:

    gcloud compute addresses describe ADDRESS_NAME
    
  2. Envie tráfego para o balanceador de carga executando o seguinte comando. Substitua LB_IP_ADDRESS pela morada IPv4 do seu equilibrador de carga.

    curl -m1 LB_IP_ADDRESS:9090
    

O que se segue?