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

O balanceador de carga de proxy TCP regional interno é um balanceador de carga de Camada 4 regional e baseado em proxy. Com ele, é possível executar e escalonar o tráfego do serviço TCP atrás de um endereço IP interno acessível apenas a clientes na mesma rede VPC ou aos clientes conectados à 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 gerenciadas (MIG, na sigla em inglês).

Antes de começar, leia a Visão geral do balanceador de carga de rede de proxy interno regional.

Informações gerais

Neste exemplo, usaremos o balanceador de carga para distribuir o tráfego TCP entre as VMs de back-end em dois grupos gerenciados de instâncias zonais na região REGION_A. Para o propósito deste exemplo, o serviço é um conjunto de servidores Apache configurados para responder na porta 110. Muitos navegadores não permitem a porta 110, portanto, a seção de teste usa curl.

Neste exemplo, você configura o seguinte:

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

O balanceador de carga de rede do proxy interno regional é 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) precisam estar na mesma região.

Permissões

Para seguir as instruções deste guia, você precisa ser capaz de criar instâncias e modificar uma rede em um projeto. É necessário ser um proprietário ou editor de projeto, ou ter todos os seguintes papéis do IAM do Compute Engine:

Tarefa Papel necessário
Criar componentes do balanceador de carga, sub-redes e redes Administrador de rede
Adicionar e remover regras de firewall Administrador de segurança
Criar instâncias Administrador da instância da computação

Para mais informações, consulte estes guias:

Configurar a rede e as sub-redes

Você precisa de uma rede VPC com duas sub-redes: uma para os back-ends do balanceador de carga e a outra para os proxies do balanceador de carga. Os balanceadores de carga de rede de proxy interno regional são regionais. O tráfego na rede VPC será direcionado ao balanceador de carga se a origem do tráfego estiver em uma sub-rede na mesma região que o balanceador de carga.

Neste exemplo, usamos a seguinte rede VPC, região e sub-redes:

  • Rede: uma rede VPC de modo personalizado chamada lb-network.

  • Sub-rede para back-ends: uma sub-rede chamada backend-subnet na região REGION_A usa 10.1.2.0/24 como o intervalo de IP primário.

  • Sub-rede para proxies: uma sub-rede chamada proxy-only-subnet na região REGION_A usa 10.129.0.0/23 como o intervalo de IP primário.

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

Criar a rede e as sub-redes

Console

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

    Acessar redes VPC

  2. Clique em Criar rede VPC.

  3. Em Nome, insira lb-network.

  4. Na seção Sub-redes, defina o Modo de criação da sub-rede como Personalizado.

  5. Crie uma sub-rede para os back-ends do balanceador de carga. Na seção Nova sub-rede, insira as informações a seguir:

    • Name: backend-subnet
    • Região: REGION_A
    • Intervalo de endereços IP: 10.1.2.0/24
  6. Clique em Concluído.

  7. Clique em Add subnet.

  8. Crie uma sub-rede para demonstrar o acesso global. Na seção Nova sub-rede, insira as informações a seguir:

    • Name: 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 de destino do Google Cloud.

  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 região do Google Cloud em que você quer criar a segunda sub-rede para testar o acesso global.

Criar a sub-rede somente proxy

Uma sub-rede somente proxy fornece um conjunto de endereços IP que o Google usa para executar proxies Envoy em seu nome. Os proxies encerram as conexões do cliente e criam novas conexões com os back-ends.

Essa sub-rede somente proxy é usada por todos os balanceadores de carga regionais baseados no Envoy na região REGION_A da rede VPC lb-network.

Console

Se você estiver usando o console do Google Cloud, é possível esperar e criar a sub-rede somente proxy depois na página Balanceamento de carga.

Se você quiser criar a sub-rede somente proxy agora, siga estas etapas:

  1. No Console do Google Cloud, acesse a página Redes VPC.
    Acessar redes VPC
  2. Clique no nome da rede VPC compartilhada: lb-network.
  3. Clique em Add subnet.
  4. Em Nome, insira proxy-only-subnet.
  5. Em Região, selecione REGION_A.
  6. Defina Finalidade como Proxy gerenciado regional.
  7. Em Intervalo de endereços IP, insira 10.129.0.0/23.
  8. Clique em Adicionar.

gcloud

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

gcloud compute networks subnets create proxy-only-subnet \
    --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 cuja carga está sendo balanceada, que permite a conectividade SSH de entrada na porta TCP 22 proveniente de qualquer endereço. Escolha um intervalo de IP de origem mais restritivo para esta regra. Por exemplo, é possível especificar apenas os intervalos de IP do sistema do qual você inicia sessões SSH. Neste exemplo, usamos a tag de destino allow-ssh.

  • fw-allow-health-check: uma regra de entrada, aplicável às instâncias submetidas ao balanceamento de carga, que permite todo o tráfego TCP dos sistemas de verificação de integridade do Google Cloud (em 130.211.0.0/22 e 35.191.0.0/16). Este exemplo usa a tag de destino allow-health-check.

  • fw-allow-proxy-only-subnet. uma regra de entrada que permite que as conexões da sub-rede somente proxy alcancem os back-ends.

Sem essas regras de firewall, a regra padrão de negação de entrada bloqueará o tráfego que chega para as instâncias de back-end.

As tags de destino definem as instâncias de back-end. Sem as tags de destino, as regras de firewall se aplicam a todas as instâncias de back-end na rede VPC. Ao criar as VMs de back-end, inclua as tags de destino especificadas, conforme mostrado em Como criar um grupo gerenciado de instâncias.

Console

  1. No Console do Google Cloud, acesse a página políticas de Firewall.
    Acesse as políticas de firewall
  2. Clique em Criar regra de firewall novamente para criar uma regra que autorize conexões SSH de entrada:
    • Nome: fw-allow-ssh
    • Rede: lb-network
    • Direção do tráfego: entrada
    • Ação na correspondência: permitir
    • Destinos: tags de destino especificadas
    • Tags de meta: allow-ssh
    • Filtro de origem: intervalos IPv4
    • Intervalos IPv4 de origem: 0.0.0.0/0
    • Protocolos e portas:
      • Escolha Protocolos e portas especificados.
      • Marque a caixa de seleção tcp e insira 22 como o número da porta.
  3. Clique em Criar.
  4. Clique em Criar regra de firewall pela segunda vez para criar uma regra que autorize as verificações de integridade do Google Cloud:
    • Nome: fw-allow-health-check
    • Rede: lb-network
    • Direção do tráfego: entrada
    • Ação na correspondência: permitir
    • Destinos: tags de destino especificadas
    • Tags de meta: allow-health-check
    • Filtro de origem: intervalos IPv4
    • Intervalos IPv4 de origem: 130.211.0.0/22 e 35.191.0.0/16
    • Protocolos e portas:
      • Escolha Protocolos e portas especificados.
      • Marque a caixa de seleção tcp e insira 80 como o número da porta.
        Como prática recomendada, limite esta regra somente aos protocolos e portas que correspondem aos usados por sua verificação de integridade. Se você usar tcp:80 para o protocolo e a porta, o Google Cloud poderá usar HTTP na porta 80 para entrar em contato com suas VMs, mas não poderá usar HTTPS na porta 443 para entrar em contato com elas.
  5. Clique em Criar.
  6. Clique em Criar regra de firewall uma terceira vez para criar a regra que permite que os servidores proxy do balanceador de carga se conectem aos back-ends:
    • Nome: fw-allow-proxy-only-subnet
    • Rede: lb-network
    • Direção do tráfego: entrada
    • Ação na correspondência: permitir
    • Destinos: tags de destino especificadas
    • Tags de meta: 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.
      • Marque a caixa de seleção tcp e insira 80 como os números da porta.
  7. Clique em Criar.

gcloud

  1. Crie a regra de firewall fw-allow-ssh que permita a conectividade SSH para VMs com a tag de rede allow-ssh. Se você omitir source-ranges, o Google Cloud interpretará que a regra autoriza a conexão proveniente de 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 verificações de integridade do Google Cloud. Neste exemplo, é permitido todo o tráfego TCP de sondagens de verificação de integridade. No entanto, é possível configurar um conjunto mais restrito de portas para atender às 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 Envoy da região se conectem aos seus back-ends. Defina --source-ranges como os intervalos alocados da sua sub-rede somente 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 balanceador de carga, consulte Reservar um novo endereço IPv4 ou IPv6 interno estático.

Criar um grupo gerenciado de instâncias

Nesta seção, mostramos como criar dois back-ends de grupos gerenciados de instâncias (MIG, na sigla em inglês) 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 balanceador de carga de rede regional de proxy interno de exemplo. Normalmente, um balanceador de carga de rede de proxy interno regional não é usado para o tráfego HTTP, mas o software Apache é normalmente usado para testes.

Console

  1. Criar um modelo de instância. No console do Google Cloud, acesse a página Modelos de instância.

    Acessar "Modelos de instância"

    1. Clique em Criar modelo de instância.
    2. Em Nome, insira int-tcp-proxy-backend-template.
    3. Certifique-se de que o disco de inicialização esteja configurado como uma imagem Debian. Por exemplo, Debian GNU/Linux 9 (stretch). Estas instruções usam comandos que estão disponíveis apenas no Debian, como apt-get.
    4. Clique em Opções avançadas.
    5. Clique em Rede e configure os seguintes campos:
      1. Em Tags de rede, insira allow-ssh, allow-health-check e allow-proxy-only-subnet.
      2. Em Interfaces de rede, selecione o seguinte:
        • Rede: lb-network
        • Sub-rede: backend-subnet
    6. Clique em Gerenciamento. Insira o script a seguir no campo Script de inicialização.

      #! /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 gerenciadas. No console do Google Cloud, acesse a página Grupos de instâncias.

    Acesse grupo de instâncias

    1. Clique em Criar grupo de instâncias.
    2. Selecione Novo grupo gerenciado de instâncias (sem estado). Para mais informações, consulte MIGs sem estado ou com estado.
    3. Em Nome, insira mig-a.
    4. Em Local, selecione Única zona.
    5. Em Região, selecione REGION_A.
    6. Em 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 você quer criar no grupo.

      Neste exemplo, especifique as seguintes opções em Escalonamento automático:

      • Em Modo de escalonamento automático, selecione Off:do not autoscale.
      • Em Número máximo de instâncias, insira 2.
    9. Em Mapeamento de portas, clique em Adicionar porta.

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

  3. Repita a etapa 2 para criar um segundo grupo de instâncias gerenciadas com as seguintes configurações:

    1. Name: mig-c
    2. Zona: ZONE_A2 Mantenha todas as outras configurações iguais.

gcloud

As instruções gcloud deste guia pressupõem que você está usando o Cloud Shell ou outro ambiente com o bash instalado.

  1. Crie um modelo de instância de VM com o servidor HTTP usando 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-10 \
       --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 gerenciado de instâncias 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 de destino do Google Cloud.

  3. Crie um grupo gerenciado de instâncias 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 de destino do Google Cloud.

Configurar o balanceador de carga

Console

Iniciar a configuração

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

    Acessar o "Balanceamento de carga"

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

Configuração básica

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

Reservar uma sub-rede somente proxy

Para reservar uma sub-rede somente proxy:

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

Configuração de back-end

  1. Clique em Configuração de back-end.
  2. Em Tipo de back-end, selecione Grupo de instâncias.
  3. Em Protocol, selecione TCP.
  4. Em Porta nomeada, insira tcp80.
  5. Configure o primeiro back-end:
    1. Em Novo back-end, selecione o grupo de instâncias mig-a.
    2. Em Números de portas, insira 80.
    3. Mantenha os valores padrão restantes e clique em Concluído.
  6. 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. Em Números de portas, insira 80.
    4. Mantenha os valores padrão restantes e clique em Concluído.
  7. Configure a verificação de integridade:
    1. Em Verificação de integridade, selecione Criar verificação de integridade.
    2. Defina o Nome da verificação de integridade como tcp-health-check.
    3. Em Protocol, selecione TCP.
    4. Defina a Porta como 80.
  8. Mantenha os valores padrão restantes e clique em Salvar.
  9. No Console do Google Cloud, verifique se há uma marca de seleção ao lado de Configuração do back-end. Se não houver, verifique se você concluiu todas as etapas.

Configuração de front-end

  1. Clique em Configuração de front-end.
  2. Em Nome, insira int-tcp-forwarding-rule.
  3. Em Sub-rede, selecione backend-subnet.
  4. Em Endereço IP, selecione o endereço IP reservado anteriormente: LB_IP_ADDRESS
  5. Em Número da porta, digite 110. A regra de encaminhamento encaminha pacotes com uma porta de destino correspondente.
  6. Neste exemplo, não ative o Protocolo de proxy, porque ele não funciona com o software servidor HTTP Apache. Para mais informações, consulte Protocolo de proxy.
  7. Clique em Concluído.
  8. No Console do Google Cloud, verifique se há uma marca de seleção ao lado de Configuração do front-end. Se não houver, verifique se você concluiu todas as etapas anteriores.

Revisar e finalizar

  1. Clique em Analisar e finalizar.
  2. Revise suas configurações do balanceador de carga.
  3. Opcional: clique em Código equivalente para conferir a solicitação de API REST que será usada para criar o balanceador de carga.
  4. Clique em Criar.

gcloud

  1. Criar uma verificação de integridade 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. Adicionar grupos de instâncias ao 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 de proxy, porque ele não funciona com o software servidor HTTP Apache. Para mais informações, consulte Protocolo de proxy.

  5. Crie a regra de encaminhamento. Para --ports, especifique um único número de porta de 1-65535. Este exemplo usa a porta 110. A regra de encaminhamento 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
    

Testar 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 o tráfego do cliente para o balanceador de carga.

Criar uma VM cliente

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

Console

  1. No console do Google Cloud, acesse a página Instâncias de VMs.

    Acessar instâncias de VM

  2. Clique em Criar instância.

  3. Defina o Nome como client-vm.

  4. Defina Zona como ZONE_A1.

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

  6. Clique em Rede e configure os seguintes campos:

    1. Em Tags de rede, insira allow-ssh.
    2. Em Interfaces de rede, selecione o seguinte:
      • Rede: lb-network
      • Sub-rede: backend-subnet
  7. Clique em Criar.

gcloud

A VM do cliente precisa estar na mesma rede e região VPC que o balanceador de carga. Ele não precisa 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-10 \
    --image-project=debian-cloud \
    --tags=allow-ssh \
    --subnet=backend-subnet

Enviar tráfego ao balanceador de carga

Agora que você configurou o balanceador de carga, é possível testar o envio de tráfego para o endereço IP dele.

  1. Use o SSH para se conectar à instância do cliente.

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

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

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

      Anote o endereço IP.

    2. Enviar tráfego ao balanceador de carga Substitua IP_ADDRESS pelo endereço IP do balanceador de carga:

      curl IP_ADDRESS:110
      

Outras opções de configuração

Nesta seção, o exemplo é detalhado para fornecer outras opções de configuração. Todas as tarefas são opcionais. É possível realizá-las em qualquer ordem.

Ativar o acesso global

É possível ativar o acesso global para o balanceador de carga para torná-lo acessível aos clientes em todas as regiões. Os back-ends do balanceador de carga de exemplo ainda precisam estar localizados em uma única 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 ampliar)
.

Não é possível modificar uma regra de encaminhamento regional para permitir o acesso global. Você precisa criar uma regra de encaminhamento para essa finalidade. Além disso, depois que uma regra de encaminhamento for criada com o acesso global ativado, ela não poderá ser modificada. Para desativar o acesso global, crie uma nova regra de encaminhamento de acesso regional e exclua a anterior.

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

Console

Crie uma regra de encaminhamento para o balanceador de carga:

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

    Acessar o "Balanceamento de carga"

  2. Na coluna Nome, clique no seu balanceador de carga.

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

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

  5. Digite os detalhes do nome e da sub-rede da nova regra de encaminhamento.

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

  7. Em Endereço IP, é possível selecionar o mesmo endereço IP como uma regra de encaminhamento atual, reservar um novo endereço IP ou usar um endereço IP efêmero. O compartilhamento do mesmo endereço IP em várias regras de encaminhamento só será possível se você definir a sinalização --purpose do endereço IP como SHARED_LOADBALANCER_VIP ao criar o endereço IP.

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

  9. Em 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 sinalização --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. Use o comando gcloud compute forwarding-rules describe para determinar se uma regra de encaminhamento tem 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 na saída após o nome e a região da regra de encaminhamento.

Criar uma VM cliente para testar o acesso global

Console

  1. No console do Google Cloud, acesse a página Instâncias de VMs.

    Acessar instâncias de VM

  2. Clique em Criar instância.

  3. Defina o Nome como test-global-access-vm.

  4. Defina Zona como ZONE_B1.

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

  6. Clique em Rede e configure os seguintes campos:

    1. Em Tags de rede, insira allow-ssh.
    2. Em Interfaces de rede, selecione o seguinte:
      • Rede: lb-network
      • Sub-rede: test-global-access-subnet
  7. Clique em Criar.

gcloud

Crie uma VM cliente na zona ZONE_B1.

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

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

Conectar-se à instância de VM cliente e teste a conectividade

  1. Use ssh para se conectar à instância do cliente.

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

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

    Anote o endereço IP.

  3. Enviar 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 manter informações de conexão do cliente

O balanceador de carga de rede de proxy encerra as conexões TCP do cliente e cria novas conexões com as instâncias. Por padrão, as informações de IP e porta do cliente original não são preservadas.

Para preservar e enviar as informações de conexão originais para suas instâncias, ative a versão 1 do protocolo PROXY. Esse protocolo envia à instância como parte da solicitação um cabeçalho extra que contém os endereços IP de origem e de destino e os números de porta.

Verifique se as instâncias de back-end do balanceador de carga de rede do proxy estão executando servidores compatíveis com cabeçalhos do protocolo PROXY. Se os servidores não estiverem configurados para aceitar cabeçalhos de protocolo PROXY, as instâncias de back-end retornarão respostas vazias.

Se você definir o protocolo PROXY para o tráfego de usuários, também poderá configurá-lo para as verificações de integridade. Se você estiver verificando a integridade e a exibição de conteúdo na mesma porta, defina o --proxy-header da verificação de integridade para corresponder à configuração do balanceador de carga.

Normalmente, o cabeçalho do protocolo PROXY é uma linha de texto legível no formato a seguir:

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

O exemplo a seguir exibe 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 do balanceamento de carga é 198.51.100.1, a porta do cliente é 15221 e a porta de destino é 110.

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

PROXY UNKNOWN\r\n

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

Não é possível atualizar o cabeçalho do protocolo PROXY no proxy de destino existente. Você precisa criar um novo proxy de destino com a configuração necessária para o cabeçalho do protocolo PROXY. Use estas etapas para criar um novo front-end com as configurações necessárias:

Console

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

    Acessar o "Balanceamento de carga"

  2. Clique no nome do balanceador de carga que você quer editar.
  3. Clique em Editar no seu balanceador de carga.
  4. Clique em Configuração de front-end.
  5. Exclua o IP e a porta antigos do front-end.
  6. Clique em Adicionar IP e porta de front-end.
    1. Em Nome, insira int-tcp-forwarding-rule.
    2. Em Sub-rede, selecione backend-subnet.
    3. Em Endereço IP, selecione o endereço IP reservado anteriormente: LB_IP_ADDRESS
    4. Em Número da porta, digite 110. A regra de encaminhamento encaminha pacotes com uma porta de destino correspondente.
    5. Altere o valor do campo Protocolo de proxy para Ativado.
    6. Clique em Concluído.
  7. Clique em Update to save your changes.

gcloud

  1. No comando a seguir, edite o campo --proxy-header e defina-o como NONE ou PROXY_V1, dependendo do seu requisito.

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

       gcloud compute forwarding-rules delete int-tcp-forwarding-rule \
           --region=REGION
       
  3. Crie uma 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
       

Ativar a afinidade de sessão

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

Nestes procedimentos, você verá um exemplo de como atualizar um serviço de back-end para um balanceador de carga de proxy de rede regional externo. Com isso, o serviço de back-end usa a afinidade de IP do cliente ou a afinidade de cookie gerado.

Quando a afinidade de IP do cliente está ativada, o balanceador de carga direciona as solicitações de um determinado cliente para a mesma VM de back-end. Isso é feito com base em um hash criado a partir do endereço IP do cliente e do endereço IP do balanceador de carga (o endereço IP externo de uma regra de encaminhamento externo).

Console

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

  1. No Console do Google Cloud, acesse a página Balanceamento de carga.
    Acessar balanceamento de carga
  2. Clique em Back-ends.
  3. Clique em internal-tcp-proxy-bs (o nome do serviço de back-end criado para este exemplo) e clique em internal-tcp-proxy-bs.
  4. Na página Detalhes do serviço de back-end, clique em Configuração avançada.
  5. Em Afinidade da sessão, selecione IP do cliente no menu.
  6. Clique em Atualizar.

gcloud

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

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

Ativar a diminuição da conexão

Ative a diminuição da conexão em serviços de back-end para garantir interrupção mínima aos usuários quando uma instância que está veiculando tráfego é encerrada, removida manualmente ou removida por um autoescalador. Para mais informações, leia sobre Como ativar a diminuição da conexão.

A seguir