Configure um balanceador de carga de rede de proxy externo global (proxy SSL) com back-ends de grupo de instâncias de VM

Este documento fornece instruções para configurar um balanceador de carga de rede de proxy externo global com back-ends de grupo de instâncias de VM e um proxy SSL de destino. Antes de começar, leia a vista geral do balanceador de carga de rede do proxy externo para obter informações sobre o funcionamento destes balanceadores de carga.

Vista geral da configuração

Este exemplo demonstra como configurar um Network Load Balancer de proxy externo para um serviço que existe em duas regiões: região A e região B. Vai configurar o seguinte:

  1. Quatro instâncias distribuídas por duas regiões
  2. Grupos de instâncias para reter as instâncias
  3. Componentes de back-end, que incluem o seguinte:
    • Verificação de funcionamento: usada para monitorizar o estado de funcionamento da instância
    • Serviço de back-end: monitoriza grupos de instâncias e impede que excedam a utilização configurada
    • Back-ends: contêm os grupos de instâncias
  4. Componentes de front-end, que incluem o seguinte:
    • Um recurso de certificado SSL. Pode usar um certificado autogerido, em que fornece o seu próprio certificado SSL, ou um certificado gerido pela Google, em que a Google emite um certificado válido para todos os seus domínios. Para mais informações, consulte o artigo Tipos de certificados SSL.
    • O próprio proxy SSL com o respetivo certificado SSL
    • Um endereço IPv4 estático externo e uma regra de encaminhamento que envia tráfego de utilizadores para o proxy
    • Um endereço IPv6 estático externo e uma regra de encaminhamento que envia tráfego de utilizadores para o proxy
  5. Uma regra de firewall que permite o tráfego do balanceador de carga e do verificador de estado de funcionamento para as instâncias.
  6. Opcionalmente, uma política SSL para controlar as funcionalidades do SSL que o equilibrador de carga do proxy SSL negoceia com os clientes.

Depois disso, teste a configuraçã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

Para criar a rede e a sub-rede de exemplo, siga estes passos.

Consola

Para suportar o tráfego IPv4 e IPv6, siga estes passos:

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

    Aceda a redes de VPC

  2. Clique em Criar rede de VPC.

  3. Introduza um Nome para a rede.

  4. Opcional: se quiser configurar intervalos de endereços IPv6 internos em sub-redes nesta rede, conclua estes passos:

    1. Para o intervalo IPv6 interno ULA da rede VPC, selecione Ativado.
    2. Para Atribuir intervalo IPv6 interno, selecione Automaticamente ou Manualmente.

      Se selecionar Manualmente, introduza um intervalo de /48 no intervalo de fd20::/20. Se o intervalo estiver em uso, é-lhe pedido que faculte um intervalo diferente.

  5. Para o Modo de criação de sub-rede, escolha Personalizado.

  6. Na secção Nova sub-rede, configure os seguintes campos:

    1. No campo Nome, indique um nome para a sub-rede.
    2. No campo Região, selecione uma região.
    3. Para o Tipo de pilha de IP, selecione IPv4 e IPv6 (pilha dupla).
    4. No campo Intervalo de endereços IP, introduza um intervalo de endereços IP. Este é o intervalo IPv4 principal para a sub-rede.

      Embora possa configurar um intervalo de endereços IPv4 para a sub-rede, não pode escolher o intervalo de endereços IPv6 para a sub-rede. A Google fornece um bloco CIDR IPv6 de tamanho fixo (/64).

    5. Para o tipo de acesso IPv6, selecione Externo.

  7. Clique em Concluído.

  8. Para adicionar uma sub-rede numa região diferente, clique em Adicionar sub-rede e repita os passos anteriores.

  9. Clique em Criar.

Para suportar apenas tráfego IPv4, siga os passos seguintes:

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

    Aceda a redes de VPC

  2. Clique em Criar rede de VPC.

  3. No campo Nome, introduza um nome para a rede.

  4. Para o Modo de criação de sub-rede, escolha Personalizado.

  5. Na secção Nova sub-rede, configure o seguinte:

    1. No campo Nome, indique um nome para a sub-rede.
    2. No campo Região, selecione uma região.
    3. Para o Tipo de pilha de IP, selecione IPv4 (pilha única).
    4. No campo Intervalo de endereços IP, introduza o intervalo IPv4 principal para a sub-rede.
  6. Clique em Concluído.

  7. Para adicionar uma sub-rede numa região diferente, clique em Adicionar sub-rede e repita os passos anteriores.

  8. Clique em Criar.

gcloud

  1. Crie a rede VPC de modo personalizado:

    gcloud compute networks create NETWORK \
        --subnet-mode=custom
    
  2. Na rede, crie uma sub-rede para back-ends.

    Para o tráfego IPv4 e IPv6, use o seguinte comando para atualizar uma sub-rede:

    gcloud compute networks subnets create SUBNET \
       --stack-type=IPV4_IPV6 \
       --ipv6-access-type=EXTERNAL \
       --network=NETWORK \
       --range=IPV4_RANGE \
       --region=REGION_A
    
    gcloud compute networks subnets create SUBNET_B \
       --stack-type=IPV4_IPV6 \
       --ipv6-access-type=EXTERNAL \
       --network=NETWORK \
       --range=IPV4_RANGE_B \
       --region=REGION_B
    

    Para tráfego IPv4 apenas, use o seguinte comando:

    gcloud compute networks subnets create SUBNET \
       --network=NETWORK \
       --stack-type=IPV4_ONLY \
       --range=IPV4_RANGE \
       --region=REGION_A
    
    gcloud compute networks subnets create SUBNET_B \
       --network=NETWORK \
       --stack-type=IPV4_ONLY \
       --range=IPV4_RANGE_B \
       --region=REGION_B
    

Substitua o seguinte:

  • NETWORK: um nome para a rede VPC

  • IPV4_RANGE: o intervalo IPv4 principal para a nova sub-rede, na notação CIDR. Por exemplo, 10.1.2.0/24.

  • SUBNET: um nome para a sub-rede

  • REGION_A ou REGION_B: o nome da região

Configure instâncias e grupos de instâncias

Esta secção mostra como criar instâncias e grupos de instâncias e, em seguida, adicionar as instâncias aos grupos de instâncias. Normalmente, um sistema de produção usaria grupos de instâncias geridos com base em modelos de instâncias, mas esta configuração é mais rápida para os testes iniciais.

Crie instâncias

Crie estas instâncias com a etiqueta ssl-lb, que a regra de firewall vai usar mais tarde.

Consola

Crie instâncias

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

  4. Defina a Zona como ZONE_A.

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

  6. Clique em Rede e configure o seguinte campo:

    • No campo Etiquetas de rede, introduza ssl-lb e allow-health-check-ipv6.
  7. Na secção Interfaces de rede, clique em Editar e faça as seguintes alterações:

    • Selecione a rede.
    • Selecione uma sub-rede.

    • No campo Tipo de pilha de IP, selecione IPv4 e IPv6 (pilha dupla).

    • Clique em Concluído.

  8. Clique em Gestão. Introduza o seguinte script no campo Script de arranque.

    sudo apt-get update
    sudo apt-get install apache2 -y
    sudo a2ensite default-ssl
    sudo a2enmod ssl
    sudo service apache2 restart
    echo '<!doctype html><html><body><h1>vm-a1</h1></body></html>' | sudo tee /var/www/html/index.html
  9. Mantenha os valores predefinidos para os restantes campos.

  10. Clique em Criar.

  11. Crie vm-a2 com as mesmas definições, exceto com o script de arranque definido como o seguinte:

    sudo apt-get update
    sudo apt-get install apache2 -y
    sudo a2ensite default-ssl
    sudo a2enmod ssl
    sudo service apache2 restart
    echo '<!doctype html><html><body><h1>vm-a2</h1></body></html>' | sudo tee /var/www/html/index.html
  12. Crie vm-b1 com as mesmas definições, exceto com Zone definido como ZONE_B e Startup script definido como o seguinte:

    sudo apt-get update
    sudo apt-get install apache2 -y
    sudo a2ensite default-ssl
    sudo a2enmod ssl
    sudo service apache2 restart
    echo '<!doctype html><html><body><h1>vm-b1</h1></body></html>' | sudo tee /var/www/html/index.html
  13. Crie vm-b2 com as mesmas definições, exceto com Zone definido como ZONE_B e Startup script definido como o seguinte:

    sudo apt-get update
    sudo apt-get install apache2 -y
    sudo a2ensite default-ssl
    sudo a2enmod ssl
    sudo service apache2 restart
    echo '<!doctype html><html><body><h1>vm-b2</h1></body></html>' | sudo tee /var/www/html/index.html

gcloud

  1. Crie vm-a1 na zona ZONE_A.

    gcloud compute instances create vm-a1 \
       --image-family debian-12 \
       --image-project debian-cloud \
       --tags ssl-lb \
       --zone ZONE_A \
       --metadata startup-script="#! /bin/bash
         sudo apt-get update
         sudo apt-get install apache2 -y
         sudo a2ensite default-ssl
         sudo a2enmod ssl
         sudo service apache2 restart
         echo '<!doctype html><html><body><h1>vm-a1</h1></body></html>' | sudo tee /var/www/html/index.html
         EOF"
    
  2. Crie vm-a2 na zona ZONE_A.

    gcloud compute instances create vm-a2 \
      --image-family=debian-12 \
      --image-project=debian-cloud \
      --tags=ssl-lb \
      --zone=ZONE_A \
      --metadata=startup-script="#! /bin/bash
        sudo apt-get update
        sudo apt-get install apache2 -y
        sudo a2ensite default-ssl
        sudo a2enmod ssl
        sudo service apache2 restart
        echo '<!doctype html><html><body><h1>vm-a2</h1></body></html>' | sudo tee /var/www/html/index.html
         EOF"
    
  3. Crie vm-b1 na zona ZONE_B.

    gcloud compute instances create vm-b1 \
      --image-family=debian-12 \
      --image-project=debian-cloud \
      --tags=ssl-lb \
      --zone=ZONE_B \
      --metadata=startup-script="#! /bin/bash
        sudo apt-get update
        sudo apt-get install apache2 -y
        sudo a2ensite default-ssl
        sudo a2enmod ssl
        sudo service apache2 restart
        echo '<!doctype html><html><body><h1>vm-b1</h1></body></html>' | sudo tee /var/www/html/index.html
        EOF"
    
  4. Crie vm-b2 na zona ZONE_B.

    gcloud compute instances create vm-b2 \
      --image-family=debian-12 \
      --image-project=debian-cloud \
      --tags=ssl-lb \
      --zone=ZONE_B \
      --metadata=startup-script="#! /bin/bash
        sudo apt-get update
        sudo apt-get install apache2 -y
        sudo a2ensite default-ssl
        sudo a2enmod ssl
        sudo service apache2 restart
        echo '<!doctype html><html><body><h1>vm-b2</h1></body></html>' | sudo tee /var/www/html/index.html
        EOF"
    

Crie um grupo de instâncias para cada zona e adicione instâncias

Consola

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

    Aceda a Grupos de instâncias

  2. Clique em Criar grupo de instâncias.

  3. Defina o Nome como instance-group-a.

  4. Defina a Zona como ZONE_A.

  5. Em Mapeamento de portas, clique em Adicionar porta. Um balanceador de carga envia tráfego para um grupo de instâncias através de uma porta designada. Crie uma porta com nome para mapear o tráfego de entrada para um número de porta específico.

    1. Introduza um Nome da porta de ssl-lb e Números da porta de 443.
  6. Em Definição de instância, clique em Selecionar instâncias existentes.

  7. Em Instâncias de VM, selecione vm-a1 e vm-a2.

  8. Deixe as outras definições como estão.

  9. Clique em Criar.

  10. Repita os passos, mas defina o seguinte:

    • Nome: instance-group-b
    • Zona: ZONE_B
    • Nome da porta de ssl-lb e números de portas de 443
    • Instâncias: vm-b1 e vm-b2.
  11. Confirme que tem agora dois grupos de instâncias, cada um com duas instâncias.

gcloud

  1. Crie o grupo de instâncias instance-group-a.

    gcloud compute instance-groups unmanaged create instance-group-a --zone ZONE_A
    
  2. Defina uma porta com nome para o grupo de instâncias.

    gcloud compute instance-groups set-named-ports instance-group-a \
        --named-ports=ssl-lb:443 \
        --zone=ZONE_A
    
  3. Adicione vm-a1 e vm-a2 a instance-group-a

    gcloud compute instance-groups unmanaged add-instances instance-group-a \
        --instances=vm-a1,vm-a2 \
        --zone=ZONE_A
    
  4. Crie o grupo de instâncias instance-group-b.

    gcloud compute instance-groups unmanaged create instance-group-b --zone ZONE_B
    
  5. Defina uma porta com nome para o grupo de instâncias.

    gcloud compute instance-groups set-named-ports instance-group-b \
        --named-ports=ssl-lb:443 \
        --zone=ZONE_B
    
  6. Adicione vm-b1 e vm-b2 a instance-group-b

    gcloud compute instance-groups unmanaged add-instances instance-group-b \
        --instances=vm-b1,vm-b2 \
        --zone=ZONE_B
    

Agora, tem um grupo de instâncias em cada uma das duas regiões, cada um com duas instâncias.

Crie uma regra de firewall para o balanceador de carga SSL

Configure a firewall para permitir o tráfego do balanceador de carga e do verificador de estado para as instâncias.

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.

  3. No campo Nome, introduza allow-ssl-lb-and-health.

  4. Selecione a rede.

  5. Em Segmentações, selecione Etiquetas de segmentação especificadas.

  6. Defina as etiquetas de destino como ssl-lb.

  7. Defina o Filtro de origem como Intervalos IPv4.

  8. Defina os Intervalos IPv4 de origem como 130.211.0.0/22 e 35.191.0.0/16.

  9. Em Protocolos e portas, defina Protocolos e portas especificados como tcp:443.

  10. Clique em Criar.

gcloud

gcloud compute firewall-rules create allow-ssl-lb-and-health \
  --source-ranges=130.211.0.0/22,35.191.0.0/16 \
  --target-tags=ssl-lb \
  --allow=tcp:443

Se estiver a usar um certificado gerido pela Google, confirme se o estado do recurso de certificado é ACTIVE. Para mais informações, consulte o estado do recurso de certificado SSL gerido pela Google.

gcloud compute ssl-certificates list

Crie uma regra de firewall de verificação de funcionamento de IPv6

Certifique-se de que tem uma regra de entrada aplicável às instâncias com balanceamento de carga e que permite o tráfego dos sistemas de verificação de funcionamento (2600:2d00:1:b029::/64). Este exemplo usa a etiqueta de destino allow-health-check-ipv6 para identificar as instâncias de VM às quais se aplica. Google Cloud

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

Consola

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

    Aceder a Políticas de firewall

  2. Para permitir o tráfego de sub-rede IPv6, clique novamente em Criar regra de firewall e introduza as seguintes informações:

    • Nome: fw-allow-lb-access-ipv6
    • Rede: NETWORK
    • Prioridade: 1000
    • Direção do trânsito: entrada
    • Objetivos: etiquetas de destino especificadas
    • No campo Etiquetas de destino, introduza allow-health-check-ipv6
    • Filtro de origem: intervalos IPv6
    • Intervalos IPv6 de origem: 2600:2d00:1:b029::/64,2600:2d00:1:1::/64
    • Protocolos e portas: Permitir tudo
  3. Clique em Criar.

gcloud

Crie a regra de firewall fw-allow-lb-access-ipv6 para permitir a comunicação com a sub-rede:

gcloud compute firewall-rules create fw-allow-lb-access-ipv6 \
  --network=NETWORK \
  --action=allow \
  --direction=ingress \
  --target-tags=allow-health-check-ipv6 \
  --source-ranges=2600:2d00:1:b029::/64,2600:2d00:1:1::/64 \
  --rules=all

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 Público (externo) e clique em Seguinte.
  6. Para a Implementação global ou de região única, selecione Melhor para cargas de trabalho globais e clique em Seguinte.
  7. Para Geração do balanceador de carga, selecione Balanceador de carga de rede de proxy externo global e clique em Seguinte.
  8. Clique em Configurar.

Configuração básica

Defina o Nome como my-ssl-lb.

Configuração do back-end

  1. Clique em Configuração de back-end.
  2. Na lista Tipo de back-end, selecione Grupos de instâncias.
  3. Na lista Protocol (Protocolo), selecione SSL.
  4. No campo Porta com nome, introduza ssl-lb.
  5. Aceite o valor predefinido para o Timeout.
  6. Na lista Política de seleção de endereços IP, selecione Preferir IPv6.
  7. Configure a verificação de estado:
    • Na lista Verificação de funcionamento, selecione Criar uma verificação de funcionamento.
    • No campo Nome, introduza my-ssl-health-check.
    • Na lista Protocol (Protocolo), selecione SSL.
    • Mantenha os restantes valores predefinidos.
    • Clique em Criar.
  8. Configure o primeiro back-end:
    1. Em Novo back-end, selecione o grupo de instâncias instance-group-a.
    2. Defina Transferir números como 443.
    3. Mantenha os restantes valores predefinidos.
  9. Configure o segundo back-end:
    1. Clique em Adicionar back-end.
    2. Selecione o grupo de instâncias instance-group-b.
    3. Defina Transferir números como 443.
    4. Clique em Concluído.
  10. 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 do frontend

  1. Clique em Configuração do front-end.
    1. Adicione a primeira regra de encaminhamento:
    2. Introduza um Nome de my-ssl-lb-forwarding-rule.
    3. Em Protocolo, selecione SSL.
    4. Em Endereço IP, selecione Criar endereço IP:
      1. Introduza um Nome de ssl-lb-static-ipv4.
      2. Clique em Reservar.
    5. Em Certificado, selecione Criar um novo certificado.
    6. Introduza um Nome de my-ssl-cert.
    7. Se escolher Carregar o meu certificado, conclua estes passos:
      1. Cole o certificado ou clique em Carregar para navegar até ao ficheiro do certificado.
      2. Cole a chave privada ou clique em Carregar para navegar até ao ficheiro de chave privada.
    8. Se escolher Criar certificado gerido pela Google, introduza um Domínio.
      1. Para introduzir domínios adicionais, clique em Adicionar domínio.
      2. Clique em Criar.
    9. Para adicionar recursos de certificados além do recurso de certificado SSL principal, clique em Certificados adicionais. Em seguida, selecione outro certificado no menu Certificados ou clique em Criar um novo certificado e siga as instruções acima.
      1. (Opcional) Para criar uma política de SSL:
      2. Em Política SSL, selecione Criar uma política.
      3. Introduza um Nome de my-ssl-policy.
      4. Para Versão mínima de TLS, selecione TLS 1.0.
      5. Para Perfil, selecione Moderno. São apresentadas as Funcionalidades ativadas e as Funcionalidades desativadas.
      6. Clique em Guardar.
    10. Opcional: ative o Protocolo proxy.
    11. Clique em Concluído.
  2. Verifique se existe uma marca de verificação verde junto a Configuração do front-end na Google Cloud consola. Caso contrário, verifique novamente se concluiu todos os passos anteriores.
  3. Clique em Concluído.

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 balanceador de carga.
  4. Clique em Criar.

gcloud

  1. Crie uma verificação de funcionamento.
       gcloud compute health-checks create ssl my-ssl-health-check --port=443
       
  2. Crie um serviço de back-end.
       gcloud beta compute backend-services create my-ssl-lb \
           --load-balancing-scheme EXTERNAL_MANAGED \
           --global-health-checks \
           --protocol=SSL \
           --port-name=ssl-lb \
           --ip-address-selection-policy=PREFER_IPV6 \
           --health-checks=my-ssl-health-check \
           --timeout=5m \
           --global
       

    Em alternativa, pode configurar a comunicação não encriptada do balanceador de carga para as instâncias através de --protocol=TCP.

  3. Adicione grupos de instâncias ao seu serviço de back-end.

       gcloud compute backend-services add-backend my-ssl-lb \
           --instance-group=instance-group-a \
           --instance-group-zone=ZONE_A \
           --balancing-mode=UTILIZATION \
           --max-utilization=0.8 \
           --global
       
       gcloud compute backend-services add-backend my-ssl-lb \
           --instance-group=instance-group-b \
           --instance-group-zone=ZONE_B \
           --balancing-mode=UTILIZATION \
           --max-utilization=0.8 \
           --global
       
  4. Configure o recurso do certificado SSL.

    Se estiver a usar certificados autogeridos, já tem de ter, pelo menos, um certificado SSL para carregar. Caso contrário, consulte o artigo Vista geral dos certificados SSL. Quando usa vários certificados SSL, tem de criá-los um de cada vez.

    Se estiver a usar certificados SSL autogeridos e não tiver uma chave privada e um certificado assinado, pode criar e usar um certificado autoassinado para fins de teste.

    Para criar um recurso de certificado SSL autogerido:

       gcloud compute ssl-certificates create my-ssl-cert \
           --certificate=CRT_FILE_PATH \
           --private-key=KEY_FILE_PATH
       

    Para criar um recurso de certificado SSL gerido pela Google:

       gcloud compute ssl-certificates create www-ssl-cert \
           --domains=DOMAIN_1,DOMAIN_2
       
  5. Configure um proxy SSL de destino.

    Os balanceadores de carga de rede de proxy externos suportam a criação de um proxy SSL de destino que tem entre um e quinze certificados SSL. Antes de executar este comando, tem de criar um recurso de certificado SSL para cada certificado.

    Se quiser ativar o cabeçalho do proxy, defina-o como PROXY_V1 em vez de none. Opcionalmente, pode anexar uma política SSL ao proxy de destino. Primeiro, crie a política.

       gcloud compute ssl-policies create my-ssl-policy \
           --profile=MODERN \
           --min-tls-version=1.0
       

    Em seguida, anexe a política ao proxy de destino.

       gcloud beta compute target-ssl-proxies create my-ssl-lb-target-proxy \
           --backend-service=my-ssl-lb \
           --ssl-certificates=[SSL_CERT_1][,[SSL_CERT_2],...] \
           --ssl-policy=my-ssl-policy \
           --proxy-header=NONE
       
  6. Reserve endereços IP estáticos globais.

    Os seus clientes usam estes endereços IP para aceder ao seu serviço com balanceamento de carga.

       gcloud compute addresses create ssl-lb-static-ipv4 \
           --ip-version=IPV4 \
           --global
       
       gcloud compute addresses create ssl-lb-static-ipv6 \
           --ip-version=IPV6 \
           --global
       
  7. Configure regras de encaminhamento globais.

    Crie regras de encaminhamento global associadas ao proxy de destino. Substitua LB_STATIC_IP e LB_STATIC_IPV6 pelos endereços IP que gerou em Reserve endereços IP estáticos globais.

       gcloud beta compute forwarding-rules create my-ssl-lb-forwarding-rule \
           --load-balancing-scheme EXTERNAL_MANAGED \
           --global \
           --target-ssl-proxy=my-ssl-lb-target-proxy \
           --address=LB_STATIC_IP \
           --ports=443
       

Associe o seu domínio ao balanceador de carga

Após a criação do balanceador de carga, tome nota do endereço IP associado ao balanceador de carga, por exemplo, 30.90.80.100. Para direcionar o seu domínio para o equilibrador de carga, crie um registo A através do serviço de registo de domínios. Se adicionou vários domínios ao seu certificado SSL, tem de adicionar um registo A para cada um, todos a apontar para o endereço IP do equilibrador de carga. Por exemplo, para criar registos A para www.example.com e example.com, use o seguinte:

NAME                  TYPE     DATA
www                   A        30.90.80.100
@                     A        30.90.80.100

Se usar o Cloud DNS como fornecedor de DNS, consulte o artigo Adicione, modifique e elimine registos.

Teste o balanceador de carga

No navegador de Internet, estabeleça ligação ao seu endereço IP estático através de HTTPS. Nesta configuração de teste, as instâncias estão a usar certificados autoassinados. Por conseguinte, vai ver um aviso no navegador na primeira vez que aceder a uma página. Clique no aviso para ver a página real. Substitua IP_ADDRESS pelo endereço IPv4 ou IPv6 que criou anteriormente.

https://IP_ADDRESS

Deve ver um dos anfitriões da região mais próxima de si. Atualize a página até ver a outra instância nessa região. Para ver instâncias da outra região, pare as instâncias na região mais próxima.

Em alternativa, pode usar curl a partir da linha de comandos do seu computador local. Se estiver a usar um certificado autoassinado no proxy SSL, também tem de especificar -k. A opção curl -k permite que o curl funcione mesmo que tenha um certificado autoassinado ou nenhum certificado. Se tiver um certificado normal, pode remover esse parâmetro. Só deve usar o parâmetro -k para testar o seu próprio site. Em circunstâncias normais, um certificado válido é uma medida de segurança importante e os avisos de certificado não devem ser ignorados.

Substitua IP_ADDRESS pelo endereço IPv4 ou IPv6 que criou anteriormente.

curl -k https://IP_ADDRESS

Se não conseguir aceder ao equilibrador de carga, experimente os passos descritos em Resolução de problemas da configuração.

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.

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

A configuração de exemplo do balanceador de carga nesta página mostra como ativar o cabeçalho do protocolo PROXY durante a criação do balanceador de carga de rede do proxy. Use estes passos para alterar o cabeçalho do protocolo PROXY para um proxy de destino existente.

Consola

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

    Aceda a Balanceamento de carga

  2. Clique em Editar para o equilibrador de carga.
  3. Clique em Configuração do front-end.
  4. Altere o valor do campo Protocolo proxy para Ativado.
  5. Clique em Atualizar para guardar as alterações.

gcloud

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

gcloud compute target-ssl-proxies update TARGET_PROXY_NAME \
    --proxy-header=[NONE | PROXY_V1]

Configure a afinidade de sessão

Estes procedimentos mostram como atualizar um serviço de back-end para o exemplo de equilibrador de carga do proxy SSL, de modo que o serviço de back-end use a afinidade de IP do cliente.

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 externo de uma regra de encaminhamento externo).

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 my-ssl-lb (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 para atualizar o serviço de back-end my-ssl-lb, especificando a afinidade da sessão de IP do cliente:

gcloud compute backend-services update my-ssl-lb \
    --global \
    --session-affinity=CLIENT_IP

API

Para definir a afinidade de sessão do IP do cliente, faça um pedido PATCH ao método backendServices/patch.

PATCH https://www.googleapis.com/compute/v1/projects/[PROJECT_ID]/global/us-west1/backendServices/my-ssl-lb
{
  "sessionAffinity": "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, consulte a documentação Ativar drenagem de ligações.

O que se segue?