Configure um balanceador de carga de rede de proxy externo regional com back-ends do grupo de instâncias de VM

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 instâncias gerido (MIG).

Antes de começar, leia a Vista geral do balanceador de carga de rede de proxy externo.

Neste exemplo, vamos usar o balanceador de carga para distribuir o tráfego TCP por VMs de back-end em dois grupos de instâncias geridas zonais na região A. Para efeitos do exemplo, o serviço é um conjunto de servidores Apache configurados para responder na porta 110. Muitos navegadores não permitem a porta 110, pelo que a secção de testes usa curl.

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

Exemplo de configuração do balanceador de carga de rede de proxy externo com back-ends de grupos de instâncias.
Exemplo de configuração do balanceador de carga de rede de proxy externo com back-ends de grupos de instâncias

Um balanceador de carga de rede de proxy externo regional é 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 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 B que usa 10.129.0.0/23 para o respetivo intervalo de endereços IP principal

Crie a rede e as sub-redes

Consola

  1. Na Trusted Cloud 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, defina o Modo de criação de sub-redes como Personalizado.

  5. Crie uma sub-rede para os back-ends do balanceador de carga. 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
  6. Clique em Concluído.

  7. 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 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 da VPC: 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-ssh. Uma regra de entrada, aplicável às instâncias com balanceamento de carga, 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 do sistema a partir do qual inicia sessões SSH. Este exemplo usa a etiqueta de destino allow-ssh.

  • fw-allow-health-check. Uma regra de entrada, aplicável às instâncias com balanceamento de carga, que permite todo o tráfego TCP dos sistemas de verificação de funcionamento (em 130.211.0.0/22 e 35.191.0.0/16). Este exemplo usa a etiqueta de destino allow-health-check. Trusted Cloud

  • fw-allow-proxy-only-subnet. Uma regra de entrada que permite que as ligações da sub-rede só de proxy alcancem os back-ends.

Sem estas regras de firewall, a regra de negação predefinida de entrada bloqueia o tráfego de entrada para as instâncias de back-end.

As etiquetas de destino definem as instâncias de back-end. Sem as etiquetas de destino, as regras da firewall aplicam-se a todas as instâncias de back-end na rede VPC. Quando criar as VMs de back-end, certifique-se de que inclui as etiquetas de destino especificadas, conforme mostrado em Crie um grupo de instâncias gerido.

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 para criar a regra que permite ligações SSH de entrada. Preencha os seguintes campos:

    • Nome: fw-allow-ssh
    • Rede: lb-network
    • 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.
  3. Clique em Criar.

  4. Clique em Criar regra de firewall uma segunda vez para criar a regra que permite as Trusted Cloud verificações de funcionamento:

    • Nome: fw-allow-health-check
    • Rede: lb-network
    • Direção do tráfego: entrada
    • Ação na correspondência: Permitir
    • 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.

      Como prática recomendada, limite esta regra apenas aos protocolos e às portas que correspondam aos usados pela sua verificação de funcionamento. Se usar tcp:80 para o protocolo e a porta, Trusted Cloud pode usar o HTTP na porta 80 para contactar as suas VMs, mas não pode usar o HTTPS na porta 443 para as contactar.

  5. Clique em Criar.

  6. Clique em Criar regra de firewall pela terceira vez para criar a regra que permite que os servidores proxy do balanceador de carga se liguem aos back-ends:

    • Nome: fw-allow-proxy-only-subnet
    • Rede: lb-network
    • 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 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
    
  2. Crie a regra fw-allow-health-check para permitir Trusted Cloud verificações de funcionamento. Este exemplo permite todo o tráfego TCP de sondas de verificação de estado. No entanto, pode configurar um conjunto mais restrito de portas para satisfazer as suas necessidades.

    gcloud compute firewall-rules create fw-allow-health-check \
        --network=lb-network \
        --action=allow \
        --direction=ingress \
        --source-ranges=130.211.0.0/22,35.191.0.0/16 \
        --target-tags=allow-health-check \
        --rules=tcp:80
    
  3. Crie a regra fw-allow-proxy-only-subnet para permitir que os proxies do Envoy da região se liguem aos seus back-ends. Defina --source-ranges para os intervalos atribuídos da sua sub-rede só de proxy. Neste exemplo, 10.129.0.0/23.

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

Reserve o endereço IP do balanceador de carga

Reserve um endereço IP estático para o balanceador de carga.

Consola

  1. Na Trusted Cloud 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 esta morada.

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

    gcloud compute addresses describe ADDRESS_NAME
    

Crie um grupo de instâncias geridas

Esta secção mostra como criar dois back-ends de grupo de instâncias gerido (MIG) na região A para o equilibrador de carga. O MIG fornece instâncias de VMs que executam os servidores Apache de back-end para este exemplo. Normalmente, um balanceador de carga de rede de proxy externo regional não é usado para tráfego HTTP, mas o software Apache é usado frequentemente para testes.

Consola

Crie um modelo de instância

  1. Na Trusted Cloud consola, aceda à página Modelos de instâncias.

    Aceda a Modelos de instâncias

  2. Clique em Criar modelo de instância.

  3. Em Nome, introduza ext-reg-tcp-proxy-backend-template.

  4. Certifique-se de que o Disco de arranque está definido para uma imagem Debian, como Debian GNU/Linux 12 (bookworm). Estas instruções usam comandos que só estão disponíveis no Debian, como apt-get.

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

  6. 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
  7. 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
     
  8. Clique em Criar.

Crie um grupo de instâncias geridas

  1. Na Trusted Cloud consola, aceda à página Grupos de instâncias.

    Aceda a Grupos de instâncias

  2. Clique em Criar grupo de instâncias.

  3. Selecione Novo grupo de instâncias gerido (sem estado). Para mais informações, consulte o artigo Crie um MIG com discos com estado.

  4. Em Nome, introduza mig-a.

  5. Para Localização, selecione Zona única.

  6. Para Região, selecione REGION_A.

  7. Para Zona, selecione ZONE_A.

  8. Para Modelo de instância, selecione ext-reg-tcp-proxy-backend-template.

  9. Especifique o número de instâncias que quer criar no grupo.

    Para este exemplo, especifique as seguintes opções para o dimensionamento automático:

    • Para o Modo de ajuste automático de escala, selecione Off:do not autoscale.
    • Para Número máximo de instâncias, introduza 2.
  10. Para Mapeamento de portas, clique em Adicionar porta.

    • Em Nome da portabilidade, introduza tcp80.
    • Em Número da porta, introduza 80.
  11. Clique em Criar.

  12. Para criar um segundo grupo de instâncias gerido, repita os passos Crie um grupo de instâncias gerido e use as seguintes definições:

    • Nome: mig-b
    • Zona: ZONE_B

    Mantenha todas as outras definições inalteradas.

gcloud

As instruções da CLI do Google Cloud neste guia pressupõem que está a usar a Cloud Shell ou outro ambiente com o bash instalado.

  1. Para criar um modelo de instância de VM com um servidor HTTP, use o comando gcloud compute instance-templates create:

    gcloud compute instance-templates create ext-reg-tcp-proxy-backend-template \
        --region=REGION_A \
        --network=lb-network \
        --subnet=backend-subnet \
        --tags=allow-ssh,allow-health-check,allow-proxy-only-subnet \
        --image-family=debian-12 \
        --image-project=debian-cloud \
        --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'
    
  2. Crie um grupo de instâncias geridas na zona ZONE_A:

    gcloud compute instance-groups managed create mig-a \
        --zone=ZONE_A \
        --size=2 \
        --template=ext-reg-tcp-proxy-backend-template
    
  3. Crie um grupo de instâncias geridas na zona ZONE_B:

    gcloud compute instance-groups managed create mig-b \
        --zone=ZONE_B \
        --size=2 \
        --template=ext-reg-tcp-proxy-backend-template
    

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 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.
  2. No campo Nome, introduza proxy-only-subnet.
  3. No campo 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 instâncias.
  3. Na lista Protocolo, selecione TCP.
  4. No campo Porta com nome, introduza tcp80.
  5. 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.
  6. Configure o primeiro back-end:
    1. Para Novo back-end, selecione o grupo de instâncias mig-a.
    2. Para Transferir números, introduza 80.
    3. Mantenha os restantes valores predefinidos e, de seguida, clique em Concluído.
  7. Configure o segundo back-end:
    1. Clique em Adicionar back-end.
    2. Para Novo back-end, selecione o grupo de instâncias mig-b.
    3. Para Transferir números, introduza 80.
    4. Mantenha os restantes valores predefinidos e, de seguida, clique em Concluído.
  8. Mantenha os restantes valores predefinidos e, de seguida, clique em Guardar.
  9. 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.

Configure a interface

  1. Clique em Configuração do front-end.
  2. Em Nome, introduza ext-reg-tcp-forwarding-rule.
  3. Para Nível de serviço de rede, selecione Padrão.
  4. Para Endereço IP, selecione o endereço IP reservado anteriormente: LB_IP_ADDRESS
  5. Em Número da porta, introduza 110. 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 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. Reveja as definições de configuração do equilibrador de carga.
  3. Opcional: clique em Código equivalente para ver o pedido da API REST que é usado para criar o balanceador de carga.
  4. Clique em Criar.

gcloud

  1. Crie uma verificação de funcionamento regional:

    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 ext-reg-tcp-proxy-bs \
        --load-balancing-scheme=EXTERNAL_MANAGED \
        --protocol=TCP \
        --port-name=tcp80 \
        --region=REGION_A \
        --health-checks=tcp-health-check \
        --health-checks-region=REGION_A
    
  3. Adicione grupos de instâncias ao seu serviço de back-end:

    gcloud compute backend-services add-backend ext-reg-tcp-proxy-bs \
        --region=REGION_A \
        --instance-group=mig-a \
        --instance-group-zone=ZONE_A \
        --balancing-mode=UTILIZATION \
        --max-utilization=0.8
     
    gcloud compute backend-services add-backend ext-reg-tcp-proxy-bs \
        --region=REGION_A \
        --instance-group=mig-b \
        --instance-group-zone=ZONE_B \
        --balancing-mode=UTILIZATION \
        --max-utilization=0.8
    
  4. Crie um proxy TCP de destino:

    gcloud compute target-tcp-proxies create ext-reg-tcp-target-proxy \
        --backend-service=ext-reg-tcp-proxy-bs \
        --proxy-header=NONE \
        --region=REGION_A
    

    Se quiser ativar o cabeçalho do proxy, defina-o como PROXY_V1 em vez de NONE. 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 protocolo PROXY.

  5. Crie a regra de encaminhamento. Para --ports, especifique um único número de porta entre 1 e 65535. Este exemplo usa a porta 110. A regra de encaminhamento apenas encaminha pacotes com uma porta de destino correspondente.

    gcloud compute forwarding-rules create ext-reg-tcp-forwarding-rule \
        --load-balancing-scheme=EXTERNAL_MANAGED \
        --network-tier=STANDARD \
        --network=lb-network \
        --region=REGION_A \
        --target-tcp-proxy=ext-reg-tcp-target-proxy \
        --target-tcp-proxy-region=REGION_A \
        --address=LB_IP_ADDRESS \
        --ports=110
    

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
    

Opções de configuração adicionais

Esta secção expande o exemplo de configuração para oferecer opções de configuração alternativas e adicionais. Todas as tarefas são opcionais. Pode realizá-las por qualquer ordem.

Ative a afinidade de sessão

A configuração de exemplo cria um serviço de back-end sem afinidade de sessão.

Estes procedimentos mostram como atualizar um serviço de back-end para o exemplo de equilibrador de carga criado anteriormente, de modo que o serviço de back-end use a afinidade de IP do cliente ou a afinidade de cookies gerada.

Quando a afinidade de IP do cliente está ativada, o balanceador de carga direciona os pedidos de um cliente específico para a mesma VM de back-end com base num hash criado a partir do endereço IP do cliente e do endereço IP do balanceador de carga (o endereço IP interno de uma regra de encaminhamento interno).

Para ativar a afinidade de sessão de IP do cliente, conclua os seguintes passos.

Consola

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

    Aceda a Balanceamento de carga

  2. Clique em Back-ends.

  3. Clique em ext-reg-tcp-proxy-bs (o nome do serviço de back-end que criou para este exemplo) e, de seguida, clique em Editar.

  4. Na página Detalhes do serviço de back-end, clique em Configuração avançada.

  5. Para Afinidade de sessão, selecione IP do cliente.

  6. Clique em Atualizar.

gcloud

Para atualizar o serviço de back-end ext-reg-tcp-proxy-bs e especificar a afinidade de sessão do IP do cliente, use o comando gcloud compute backend-services update ext-reg-tcp-proxy-bs:

gcloud compute backend-services update ext-reg-tcp-proxy-bs \
    --region=REGION_A \
    --session-affinity=CLIENT_IP

O que se segue?