Configure um balanceador de carga de rede de proxy interno regional com back-ends de grupos de instâncias de VM

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 balanceador de carga de rede de proxy interno 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 interno regional.

Vista geral

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 geridos zonais na região REGION_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 seguinte implementação:

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

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

Para demonstrar o acesso global, este exemplo também cria uma segunda VM de cliente de teste numa região diferente (REGION_B) e uma sub-rede com o intervalo de endereços IP principal 10.3.4.0/24.

Crie a rede e as sub-redes

Consola

  1. Na Google 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 Adicionar sub-rede.

  8. Crie uma sub-rede para demonstrar o acesso global. Na secção Nova sub-rede, introduza as seguintes informações:

    • Nome: test-global-access-subnet
    • Região: REGION_B
    • Intervalo de endereços IP: 10.3.4.0/24
  9. Clique em Concluído.

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

    Substitua REGION_A pelo nome da região Google Cloud de destino.

  3. Crie uma sub-rede na rede lb-network na região REGION_B com o comando gcloud compute networks subnets create:

    gcloud compute networks subnets create test-global-access-subnet \
       --network=lb-network \
       --range=10.3.4.0/24 \
       --region=REGION_B
    

    Substitua REGION_B pelo nome da Google Cloud região onde quer criar a segunda sub-rede para testar o acesso global.

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

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

Este exemplo requer 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. Google 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 Criar um grupo de instâncias gerido.

Consola

  1. Na Google 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 recebidas:
    • 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 Google 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 correspondem aos usados pela sua verificação de estado. Se usar tcp:80 para o protocolo e a porta, Google 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 os números de 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, Google 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 Google 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

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.

Crie um grupo de instâncias geridas

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

Consola

  1. Crie um modelo de instância. Na Google Cloud consola, aceda à página Modelos de instâncias.

    Aceda a Modelos de instâncias

    1. Clique em Criar modelo de instância.
    2. Em Nome, introduza int-tcp-proxy-backend-template.
    3. 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.
    4. Clique em Opções avançadas.
    5. 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
    6. 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
      
    7. Clique em Criar.

  2. Crie um grupo de instâncias gerido. Na Google Cloud consola, aceda à página Grupos de instâncias.

    Aceda a Grupos de instâncias

    1. Clique em Criar grupo de instâncias.
    2. Selecione Novo grupo de instâncias gerido (sem estado). Para mais informações, consulte o artigo Grupos de instâncias geridos sem estado ou com estado.
    3. Em Nome, introduza mig-a.
    4. Em Localização, selecione Zona única.
    5. Para Região, selecione REGION_A.
    6. Para Zona, selecione ZONE_A1.
    7. Em Modelo de instância, selecione int-tcp-proxy-backend-template.
    8. Especifique o número de instâncias que quer criar no grupo.

      Para este exemplo, especifique as seguintes opções em Ajuste automático de escala:

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

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

  3. Repita o passo 2 para criar um segundo grupo de instâncias gerido com as seguintes definições:

    1. Nome: mig-c
    2. Zona: ZONE_A2 mantenha todas as outras definições inalteradas.

gcloud

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

  1. Crie um modelo de instância de VM com um servidor HTTP com o comando gcloud compute instance-templates create.

    gcloud compute instance-templates create int-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 gerido na zona ZONE_A1.

    gcloud compute instance-groups managed create mig-a \
       --zone=ZONE_A1 \
       --size=2 \
       --template=int-tcp-proxy-backend-template
    

    Substitua ZONE_A1 pelo nome da zona na região Google Cloud de destino.

  3. Crie um grupo de instâncias gerido na zona ZONE_A2.

    gcloud compute instance-groups managed create mig-c \
       --zone=ZONE_A2 \
       --size=2 \
       --template=int-tcp-proxy-backend-template
    

    Substitua ZONE_A2 pelo nome de outra zona na região Google Cloud de destino.

Configure o balanceador de carga

Consola

Inicie a configuração

  1. Na Google 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 instâncias.
  3. Em Protocolo, selecione TCP.
  4. Em Porta com nome, introduza tcp80.
  5. Na lista Verificação de funcionamento, clique em Criar uma verificação de funcionamento e, de seguida, introduza as seguintes informações:
    • Nome: tcp-health-check
    • Protocolo: TCP
    • Porta: 80
  6. Clique em Criar.
  7. Configure o primeiro back-end:
    1. Em 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 clique em Concluído.
  8. Configure o segundo back-end:
    1. Clique em Adicionar back-end.
    2. Em Novo back-end, selecione o grupo de instâncias mig-c.
    3. Para Transferir números, introduza 80.
    4. Mantenha os restantes valores predefinidos e clique em Concluído.
  9. Na Google 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 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. 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 Google 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 vai ser usado para criar o equilibrador 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 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 grupos de instâncias ao seu serviço de back-end.

    gcloud compute backend-services add-backend internal-tcp-proxy-bs \
       --region=REGION_A \
       --instance-group=mig-a \
       --instance-group-zone=ZONE_A1 \
       --balancing-mode=UTILIZATION \
       --max-utilization=0.8
    
    gcloud compute backend-services add-backend internal-tcp-proxy-bs \
       --region=REGION_A \
       --instance-group=mig-c \
       --instance-group-zone=ZONE_A2 \
       --balancing-mode=UTILIZATION \
       --max-utilization=0.8
    
  4. Crie um proxy TCP de destino interno.

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

    Se quiser ativar o cabeçalho 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 artigo Protocolo de 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 int-tcp-forwarding-rule \
       --load-balancing-scheme=INTERNAL_MANAGED \
       --network=lb-network \
       --subnet=backend-subnet \
       --region=REGION_A \
       --target-tcp-proxy=int-tcp-target-proxy \
       --target-tcp-proxy-region=REGION_A \
       --address=int-tcp-ip-address \
       --ports=110
    

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 Google 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:110
      

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 o acesso global

Pode ativar o acesso global para o equilibrador de carga para o tornar acessível a clientes em todas as regiões. Os back-ends do seu balanceador de carga de exemplo têm de estar localizados numa região (REGION_A).

Balanceador de carga de rede de proxy interno regional com acesso global
Balanceador de carga de rede de proxy interno regional com acesso global (clique para aumentar)

Não pode modificar uma regra de encaminhamento regional existente para ativar o acesso global. Tem de criar uma nova regra de encaminhamento para este fim. Além disso, depois de criar uma regra de encaminhamento com o acesso global ativado, não é possível modificá-la. Para desativar o acesso global, tem de criar uma nova regra de encaminhamento de acesso regional e eliminar a regra de encaminhamento de acesso global anterior.

Para configurar o acesso global, faça as seguintes alterações de configuração.

Consola

Crie uma nova regra de encaminhamento para o balanceador de carga:

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

    Aceda a Balanceamento de carga

  2. Na coluna Nome, clique no equilibrador de carga.

  3. Clique em Configuração do front-end.

  4. Clique em Adicionar IP e porta do front-end.

  5. Introduza o nome e os detalhes da sub-rede para a nova regra de encaminhamento.

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

  7. Para o Endereço IP, pode selecionar o mesmo endereço IP que uma regra de encaminhamento existente, reservar um novo endereço IP ou usar um endereço IP efémero. A partilha do mesmo endereço IP em várias regras de encaminhamento só é possível se definir a flag --purpose do endereço IP como SHARED_LOADBALANCER_VIP ao criar o endereço IP.

  8. Em Número da porta, introduza 110.

  9. Para Acesso global, selecione Ativar.

  10. Clique em Concluído.

  11. Clique em Atualizar.

gcloud

  1. Crie uma nova regra de encaminhamento para o balanceador de carga com a flag --allow-global-access.

    gcloud compute forwarding-rules create int-tcp-forwarding-rule-global-access \
       --load-balancing-scheme=INTERNAL_MANAGED \
       --network=lb-network \
       --subnet=backend-subnet \
       --region=REGION_A \
       --target-tcp-proxy=int-tcp-target-proxy \
       --target-tcp-proxy-region=REGION_A \
       --address=int-tcp-ip-address \
       --ports=110 \
       --allow-global-access
    
  2. Pode usar o comando gcloud compute forwarding-rules describe para determinar se uma regra de encaminhamento tem o acesso global ativado. Por exemplo:

    gcloud compute forwarding-rules describe int-tcp-forwarding-rule-global-access \
       --region=REGION_A \
       --format="get(name,region,allowGlobalAccess)"
    

    Quando o acesso global está ativado, a palavra True aparece no resultado após o nome e a região da regra de encaminhamento.

Crie uma VM cliente para testar o acesso global

Consola

  1. Na Google 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 test-global-access-vm.

  4. Defina a zona como ZONE_B1.

  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: test-global-access-subnet
  7. Clique em Criar.

gcloud

Crie uma VM de cliente na zona ZONE_B1.

gcloud compute instances create test-global-access-vm \
    --zone=ZONE_B1 \
    --image-family=debian-12 \
    --image-project=debian-cloud \
    --tags=allow-ssh \
    --subnet=test-global-access-subnet

Substitua ZONE_B1 pelo nome da zona na região REGION_B.

Estabeleça ligação à VM do cliente e teste a conetividade

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

    gcloud compute ssh test-global-access-vm \
        --zone=ZONE_B1
    
  2. Use o comando gcloud compute addresses describe para obter o endereço IP do equilibrador de carga:

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

    Tome nota do endereço IP.

  3. Envie tráfego para o balanceador de carga; substitua IP_ADDRESS pelo endereço IP do balanceador de carga:

    curl IP_ADDRESS:110
    

Protocolo PROXY para reter informações de ligação do cliente

O Network Load Balancer de proxy termina as ligações TCP do cliente e cria novas ligações às instâncias. Por predefinição, as informações de porta e IP do cliente original não são preservadas.

Para preservar e enviar as informações de ligação originais para as suas instâncias, ative o protocolo PROXY versão 1. Este protocolo envia um cabeçalho adicional que contém o endereço IP de origem, o endereço IP de destino e os números das portas para a instância como parte do pedido.

Certifique-se de que as instâncias de back-end do balanceador de carga de rede do proxy estão a executar servidores que suportam cabeçalhos do protocolo PROXY. Se os servidores não estiverem configurados para suportar cabeçalhos do protocolo PROXY, as instâncias de back-end devolvem respostas vazias.

Se definir o protocolo PROXY para o tráfego de utilizadores, também o pode definir para as verificações de funcionamento. Se estiver a verificar o estado de funcionamento e a publicar conteúdo na mesma porta, defina o --proxy-header da verificação de funcionamento de modo a corresponder à definição do balanceador de carga.

Normalmente, o cabeçalho do protocolo PROXY é uma única linha de texto legível pelo utilizador no seguinte formato:

PROXY TCP4 <client IP> <load balancing IP> <source port> <dest port>\r\n

O exemplo seguinte mostra um protocolo PROXY:

PROXY TCP4 192.0.2.1 198.51.100.1 15221 110\r\n

No exemplo anterior, o IP do cliente é 192.0.2.1, o IP de equilíbrio de carga é 198.51.100.1, a porta do cliente é 15221 e a porta de destino é 110.

Quando o IP do cliente não é conhecido, o balanceador de carga gera um cabeçalho do protocolo PROXY no seguinte formato:

PROXY UNKNOWN\r\n

Atualize o cabeçalho do protocolo PROXY para o proxy de destino

Não pode atualizar o cabeçalho do protocolo PROXY no proxy de destino existente. Tem de criar um novo proxy de destino com a definição necessária para o cabeçalho do protocolo PROXY. Siga estes passos para criar um novo front-end com as definições necessárias:

Consola

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

    Aceda a Balanceamento de carga

  2. Clique no nome do equilibrador de carga que quer editar.
  3. Clique em Editar para o equilibrador de carga.
  4. Clique em Configuração do front-end.
  5. Elimine o IP e a porta do front-end antigos.
  6. Clique em Adicionar IP e porta do front-end.
    1. Em Nome, introduza int-tcp-forwarding-rule.
    2. Para Sub-rede, selecione backend-subnet.
    3. Para Endereço IP, selecione o endereço IP reservado anteriormente: LB_IP_ADDRESS
    4. Em Número da porta, introduza 110. A regra de encaminhamento apenas encaminha pacotes com uma porta de destino correspondente.
    5. Altere o valor do campo Protocolo proxy para Ativado.
    6. Clique em Concluído.
  7. Clique em Atualizar para guardar as alterações.

gcloud

  1. No comando seguinte, edite o campo --proxy-header e defina-o como NONE ou PROXY_V1, consoante o seu requisito.

       gcloud compute target-tcp-proxies create TARGET_PROXY_NAME \
           --backend-service=BACKEND_SERVICE \
           --proxy-header=[NONE | PROXY_V1] \
           --region=REGION
       
  2. Elimine a regra de encaminhamento existente.

       gcloud compute forwarding-rules delete int-tcp-forwarding-rule \
           --region=REGION
       
  3. Crie uma nova regra de encaminhamento e associe-a ao proxy de destino.

       gcloud compute forwarding-rules create int-tcp-forwarding-rule \
           --load-balancing-scheme=INTERNAL_MANAGED \
           --network=lb-network \
           --subnet=backend-subnet \
           --region=REGION \
           --target-tcp-proxy=TARGET_PROXY_NAME \
           --target-tcp-proxy-region=REGION \
           --address=LB_IP_ADDRESS \
           --ports=110
       

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 do Network Load Balancer do proxy interno regional, de modo que o serviço de back-end use a afinidade de IP do cliente ou a afinidade de cookies gerados.

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

Consola

Para ativar a afinidade de sessão de IP do cliente:

  1. Na Google Cloud consola, aceda à página Equilíbrio de carga.
    Aceda a Balanceamento de carga
  2. Clique em Back-ends.
  3. Clique em internal-tcp-proxy-bs (o nome do serviço de back-end que criou para este exemplo) e clique em Editar.
  4. Na página Detalhes do serviço de back-end, clique em Configuração avançada.
  5. Em Afinidade de sessão, selecione IP do cliente no menu.
  6. Clique em Atualizar.

gcloud

Use o seguinte comando da CLI Google Cloud para atualizar o serviço de back-end, especificando a afinidade da sessão do IP do cliente:internal-tcp-proxy-bs

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

Ative a drenagem de ligações

Pode ativar a drenagem de ligações nos serviços de back-end para garantir uma interrupção mínima para os seus utilizadores quando uma instância que está a servir tráfego é terminada, removida manualmente ou removida por um escalador automático. Para saber mais sobre a drenagem de ligações, leia a documentação Ativar a drenagem de ligações.

O que se segue?