Configure um balanceador de carga de aplicações externo global com back-ends de grupos de instâncias de VM

Este guia de configuração mostra como criar um Application Load Balancer externo global com um back-end do grupo de instâncias gerido do Compute Engine.

Para ver conceitos gerais, consulte a vista geral do balanceador de carga de aplicações externo.

Se for um utilizador existente do Application Load Balancer clássico, certifique-se de que revê a vista geral da migração quando planear uma nova implementação com o Application Load Balancer externo global.


Para seguir orientações passo a passo para esta tarefa diretamente na Google Cloud consola, clique em Orientar-me:

Visita guiada


Topologias de balanceadores de carga

Para um balanceador de carga HTTPS, cria a configuração apresentada no diagrama seguinte.

Balanceador de carga de aplicações externo com um back-end de grupo de instâncias geridas (MIG).
Figura 1. Balanceador de carga de aplicações externo com um back-end de grupo de instâncias geridas (MIG) (clique para aumentar).

Para um balanceador de carga de HTTP, cria a configuração apresentada no diagrama seguinte.

Balanceador de carga de aplicações externo com um back-end de grupo de instâncias geridas (MIG).
Figura 2. Balanceador de carga de aplicações externo com um back-end de grupo de instâncias geridas (MIG) (clique para aumentar).

A sequência de eventos nos diagramas é a seguinte:

  1. Um cliente envia um pedido de conteúdo para o endereço IPv4 externo definido na regra de encaminhamento.
  2. Para um balanceador de carga HTTPS, a regra de encaminhamento direciona o pedido para o proxy HTTPS de destino.

    Para um balanceador de carga HTTP, a regra de encaminhamento direciona o pedido para o proxy HTTP de destino.

  3. O proxy de destino usa a regra no mapa de URLs para determinar que o serviço de back-end único recebe todos os pedidos.

  4. O balanceador de carga determina que o serviço de back-end tem apenas um grupo de instâncias e direciona o pedido para uma instância de máquina virtual (VM) nesse grupo.

  5. A MV publica o conteúdo pedido pelo utilizador.

Antes de começar

Conclua os passos seguintes antes de criar o equilibrador de carga.

Configure um recurso de certificado SSL

Para um balanceador de carga HTTPS, crie um recurso de certificado SSL, conforme descrito no seguinte artigo:

Recomendamos a utilização de um certificado gerido pela Google.

Este exemplo pressupõe que já tem um recurso de certificado SSL denominado www-ssl-cert.

Configure as autorizações

Para concluir os passos neste guia, tem de ter autorização para criar instâncias do Compute Engine, regras de firewall e endereços IP reservados num projeto. Tem de ter a função de proprietário ou editor do projeto, ou ter as seguintes funções do IAM do Compute Engine.

Tarefa Função necessária
Crie instâncias Administrador da instância
Adicione e remova regras de firewall Administrador de segurança
Crie componentes do balanceador de carga Administrador da rede
Crie um projeto (opcional) Project Creator

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

    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
    

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: o nome da região

Crie um grupo de instâncias geridas

Para configurar um balanceador de carga com um back-end do Compute Engine, as VMs têm de estar num grupo de instâncias. Este guia descreve como criar um grupo de instâncias gerido com VMs Linux que têm o Apache em execução e, em seguida, configurar o equilíbrio de carga. Um grupo de instâncias geridas cria cada uma das respetivas instâncias geridas com base nos modelos de instâncias que especificar.

O grupo de instâncias gerido fornece VMs que executam os servidores de back-end de um balanceador de carga HTTP(S) externo. Para fins de demonstração, os back-ends servem os seus próprios nomes de anfitriões.

Antes de criar um grupo de instâncias gerido, crie um modelo de instância.

Consola

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

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

    Aceda a Modelos de instâncias

  2. Clique em Criar modelo de instância.

  3. Em Nome, introduza lb-backend-template.

  4. Na lista Região, selecione uma região.

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

  6. Expanda as Opções avançadas.

  7. Expanda Rede e configure os seguintes campos:

    1. Para etiquetas de rede, introduza allow-health-check,allow-health-check-ipv6.
    2. Na secção Interfaces de rede, clique em Editar. Configure os seguintes campos:
      • Rede: NETWORK
      • Subnet: SUBNET
      • Tipo de pilha de IP: IPv4 e IPv6 (dupla pilha)
    3. Clique em Concluído
  8. Expanda Gestão. No campo Script de arranque, introduza o seguinte 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
    
  9. Clique em Criar.

gcloud

Para suportar o tráfego IPv4 e IPv6, execute o seguinte comando:

gcloud compute instance-templates create TEMPLATE_NAME \
  --region=REGION \
  --network=NETWORK \
  --subnet=SUBNET \
  --stack-type=IPv4_IPv6 \
  --tags=allow-health-check,allow-health-check-ipv6 \
  --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'

Terraform

Para criar o modelo de instância, use o google_compute_instance_template recurso.

resource "google_compute_instance_template" "default" {
  name = "lb-backend-template"
  disk {
    auto_delete  = true
    boot         = true
    device_name  = "persistent-disk-0"
    mode         = "READ_WRITE"
    source_image = "projects/debian-cloud/global/images/family/debian-11"
    type         = "PERSISTENT"
  }
  labels = {
    managed-by-cnrm = "true"
  }
  machine_type = "n1-standard-1"
  metadata = {
    startup-script = "#! /bin/bash\n     sudo apt-get update\n     sudo apt-get install apache2 -y\n     sudo a2ensite default-ssl\n     sudo a2enmod ssl\n     vm_hostname=\"$(curl -H \"Metadata-Flavor:Google\" \\\n   http://169.254.169.254/computeMetadata/v1/instance/name)\"\n   sudo echo \"Page served from: $vm_hostname\" | \\\n   tee /var/www/html/index.html\n   sudo systemctl restart apache2"
  }
  network_interface {
    access_config {
      network_tier = "PREMIUM"
    }
    network    = "global/networks/default"
    subnetwork = "regions/us-east1/subnetworks/default"
  }
  region = "us-east1"
  scheduling {
    automatic_restart   = true
    on_host_maintenance = "MIGRATE"
    provisioning_model  = "STANDARD"
  }
  service_account {
    email  = "default"
    scopes = ["https://www.googleapis.com/auth/devstorage.read_only", "https://www.googleapis.com/auth/logging.write", "https://www.googleapis.com/auth/monitoring.write", "https://www.googleapis.com/auth/pubsub", "https://www.googleapis.com/auth/service.management.readonly", "https://www.googleapis.com/auth/servicecontrol", "https://www.googleapis.com/auth/trace.append"]
  }
  tags = ["allow-health-check"]
}

Crie o grupo de instâncias geridas e selecione o modelo de instância.

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. No lado esquerdo, escolha Novo grupo de instâncias gerido (sem estado).

  4. Em Nome, introduza lb-backend-example.

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

  6. Em Região, selecione a sua região preferida.

  7. Para Zona, selecione uma zona.

  8. Em Modelo de instância, selecione o modelo de instância lb-backend-template.

  9. Para o Modo de dimensionamento automático, selecione Ativado: adicionar e remover instâncias do grupo.

    Defina o Número mínimo de instâncias como 2 e o Número máximo de instâncias como 2 ou mais.

  10. Para criar o novo grupo de instâncias, clique em Criar.

gcloud

  1. Crie o grupo de instâncias gerido com base no modelo.

    gcloud compute instance-groups managed create lb-backend-example \
       --template=TEMPLATE_NAME --size=2 --zone=ZONE_A
    

Terraform

Para criar o grupo de instâncias gerido, use o google_compute_instance_group_manager recurso.

resource "google_compute_instance_group_manager" "default" {
  name = "lb-backend-example"
  zone = "us-east1-b"
  named_port {
    name = "http"
    port = 80
  }
  version {
    instance_template = google_compute_instance_template.default.id
    name              = "primary"
  }
  base_instance_name = "vm"
  target_size        = 2
}

Para saber como aplicar ou remover uma configuração do Terraform, consulte os comandos básicos do Terraform.

Adicione uma porta com nome ao grupo de instâncias

Para o seu grupo de instâncias, defina um serviço HTTP e mapeie um nome de porta para a porta relevante. O serviço de balanceamento de carga encaminha o tráfego para a porta especificada. Para mais informações, consulte o artigo Portas com nome.

Consola

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

    Aceda a Grupos de instâncias

  2. Clique em lb-backend-example.

  3. Na página Vista geral do grupo de instâncias, clique em Editar.

  4. Na secção Mapeamento de portas, clique em Adicionar porta.

    1. Para o nome da porta, introduza http. Para o número da porta, introduza 80.
  5. Clique em Guardar.

gcloud

Use o comando gcloud compute instance-groups set-named-ports.

gcloud compute instance-groups set-named-ports lb-backend-example \
    --named-ports http:80 \
    --zone ZONE_A

Terraform

O atributo named_port está incluído no exemplo de grupo de instâncias gerido.

Configure uma regra de firewall

Neste exemplo, cria a regra de firewall fw-allow-health-check. Esta é uma regra de entrada que permite o tráfego dos sistemas de verificação de estado (130.211.0.0/22 e 35.191.0.0/16). Este exemplo usa a etiqueta de destino allow-health-check para identificar as VMs. Google Cloud

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

  3. Em Nome, introduza fw-allow-health-check.

  4. Selecione uma rede.

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

  6. Preencha o campo Etiquetas alvo com allow-health-check.

  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, selecione Protocolos e portas especificados.

  10. Selecione a caixa de verificação TCP e, de seguida, escreva 80 para os números das portas.

  11. Clique em Criar.

gcloud

gcloud compute firewall-rules create fw-allow-health-check \
    --network=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

Terraform

Para criar a regra de firewall, use o recurso google_compute_firewall.

resource "google_compute_firewall" "default" {
  name          = "fw-allow-health-check"
  direction     = "INGRESS"
  network       = "global/networks/default"
  priority      = 1000
  source_ranges = ["130.211.0.0/22", "35.191.0.0/16"]
  target_tags   = ["allow-health-check"]
  allow {
    ports    = ["80"]
    protocol = "tcp"
  }
}

Para saber como aplicar ou remover uma configuração do Terraform, consulte os comandos básicos do Terraform.

Crie a 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 que permita o tráfego dos sistemas de verificação de estado (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 entrada de negação implícita bloqueia o tráfego IPv6 de entrada 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

Para permitir a comunicação com a sub-rede, crie a regra de firewall fw-allow-lb-access-ipv6:

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

Reserve um endereço IP externo

Agora que as suas instâncias estão em funcionamento, configure um endereço IP externo estático global que os seus clientes usam para aceder ao balanceador de carga.

Consola

  1. Na Google Cloud consola, aceda à página Endereços IP externos.

    Aceda a Endereços IP externos

  2. Para reservar um endereço IPv4, clique em Reservar endereço IP estático externo.

  3. Em Nome, introduza lb-ipv4-1.

  4. Defina o Nível de serviço de rede como Premium.

  5. Defina a versão do IP como IPv4.

  6. Defina o Tipo como Global.

  7. Clique em Reservar.

gcloud

gcloud compute addresses create lb-ipv4-1 \
    --ip-version=IPV4 \
    --network-tier=PREMIUM \
    --global

Tome nota do endereço IPv4 que foi reservado:

gcloud compute addresses describe lb-ipv4-1 \
    --format="get(address)" \
    --global

Terraform

Para reservar o endereço IP, use o recurso google_compute_global_address.

resource "google_compute_global_address" "default" {
  name       = "lb-ipv4-1"
  ip_version = "IPV4"
}

Para saber como aplicar ou remover uma configuração do Terraform, consulte os comandos básicos do Terraform.

Configure o balanceador de carga

Neste exemplo, está a usar HTTPS (frontend) entre o cliente e o balanceador de carga. Para o HTTPS, precisa de um ou mais recursos de certificado SSL para configurar o proxy. Recomendamos a utilização de um certificado gerido pela Google.

Mesmo que esteja a usar HTTPS no frontend, pode usar HTTP no backend. A Google encripta automaticamente o tráfego entre os front-ends da Google (GFEs) e os seus back-ends que residem em Google Cloud redes VPC.

Consola

Selecione o tipo de balanceador de carga

  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. Em Tipo de balanceador de carga, selecione Balanceador de carga de aplicações (HTTP/HTTPS) e clique em Seguinte.
  4. Para Público ou interno, selecione Público (externo) e clique em Seguinte.
  5. Para a Implementação global ou de região única, selecione Melhor para cargas de trabalho globais e clique em Seguinte.
  6. Para Geração do balanceador de carga, selecione Balanceador de carga de aplicações externo global e clique em Seguinte.
  7. Clique em Configurar.

Configuração básica

Para o Nome do balanceador de carga, introduza algo como web-map-https ou web-map-http.

Configuração do frontend

  1. Clique em Configuração do front-end.
  2. Defina o Protocolo como HTTPS.
  3. Selecione IPv4 para tráfego IPv4. Defina o endereço IP para lb-ipv4-1, que criou anteriormente.
  4. Defina a Porta como 443.
  5. Clique em Certificado e selecione o seu certificado SSL principal.
  6. Opcional: crie uma política SSL:
    1. Na lista Política de SSL, selecione Criar uma política.
    2. Defina o nome da política SSL como my-ssl-policy.
    3. Para Versão mínima de TLS, selecione TLS 1.0.
    4. Para Perfil, selecione Moderno. São apresentadas as Funcionalidades ativadas e as Funcionalidades desativadas.
    5. Clique em Guardar.
    Se não tiver criado políticas de SSL, é aplicada uma política de SSL predefinida.
  7. Opcional: selecione a caixa de verificação Ativar redirecionamento de HTTP para HTTPS para ativar os redirecionamentos.

    Selecione esta caixa de verificação para criar um balanceador de carga HTTP parcial adicional que usa o mesmo endereço IP que o seu balanceador de carga HTTPS e redireciona os pedidos HTTP recebidos para o frontend HTTPS do seu balanceador de carga.

    Esta caixa de verificação só pode ser selecionada quando o protocolo HTTPS estiver selecionado e for usado um endereço IP reservado.

  8. Clique em Concluído.

Configuração do back-end

  1. Clique em Configuração de back-end.
  2. Em Serviços de back-end e contentores de back-end, selecione Criar um serviço de back-end.
  3. Adicione um nome para o seu serviço de back-end, como web-backend-service.
  4. Aceda à secção Segurança e, de seguida, selecione Ativar IAP para proteger o acesso às suas aplicações.

    O Cloud CDN e o IAP não são compatíveis. Se tiver o Cloud CDN ativado e selecionar a ativação do IAP, o Cloud CDN é desativado automaticamente.

  5. Na lista Política de seleção de endereços IP, selecione Preferir IPv6.
  6. Opcional: configure uma política de segurança do back-end predefinida. A política de segurança predefinida limita o tráfego acima de um limite configurado pelo utilizador. Para mais informações sobre as políticas de segurança predefinidas, consulte a vista geral da limitação de taxa.

    1. Para desativar a política de segurança predefinida do Cloud Armor, selecione None na lista Política de segurança de back-end do Cloud Armor.
    2. Para configurar a política de segurança predefinida do Cloud Armor, selecione Política de segurança predefinida na lista Política de segurança de back-end do Cloud Armor.
    3. No campo Nome da política, aceite o nome gerado automaticamente ou introduza um nome para a sua política de segurança.
    4. No campo Contagem de pedidos, aceite a contagem de pedidos predefinida ou introduza um número inteiro entre 1 e 10,000.
    5. No campo Intervalo, selecione um intervalo.
    6. No campo Aplicar à chave, escolha um dos seguintes valores: Tudo, Endereço IP ou Endereço IP X-Forwarded-For. Para mais informações sobre estas opções, consulte o artigo Identificar clientes para a limitação de taxa.
  7. Manter as outras predefinições.
  8. Clique em Criar.

Regras de encaminhamento

Para Regras de encaminhamento, mantenha as predefinições.

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.

Aguarde a criação do balanceador de carga.

Se criou um balanceador de carga HTTPS e selecionou a caixa de verificação Ativar redirecionamento de HTTP para HTTPS, também vê um balanceador de carga HTTP criado com o sufixo -redirect.

  1. Clique no nome do balanceador de carga.
  2. No ecrã Detalhes do balanceador de carga, tome nota do IP:Porta do seu balanceador de carga.

gcloud

  1. Crie uma verificação de funcionamento.
     gcloud compute health-checks create http http-basic-check \
         --port 80
     
  2. Crie um serviço de back-end.
    gcloud beta compute backend-services create web-backend-service \
        --load-balancing-scheme=EXTERNAL_MANAGED \
        --protocol=HTTP \
        --port-name=http \
        --ip-address-selection-policy=PREFER_IPV6 \
        --health-checks=http-basic-check \
        --global
    
  3. Adicione o seu grupo de instâncias como back-end ao serviço de back-end.
    gcloud beta compute backend-services add-backend web-backend-service \
      --instance-group=lb-backend-example \
      --instance-group-zone=ZONE_A \
      --global
    
  4. Para HTTP, crie um mapa de URLs para encaminhar os pedidos recebidos para o serviço de back-end predefinido.
    gcloud beta compute url-maps create web-map-http \
      --default-service web-backend-service
    
  5. Para HTTPS, crie um mapa de URLs para encaminhar os pedidos recebidos para o serviço de back-end predefinido.
    gcloud beta compute url-maps create web-map-https \
      --default-service web-backend-service
    

Configure um frontend HTTPS

Ignore esta secção para balanceadores de carga de HTTP.

  1. Para HTTPS, se ainda não o fez, crie o recurso de certificado SSL global, conforme mostrado nas secções seguintes:
  2. Para HTTPS, crie um proxy HTTPS de destino para encaminhar pedidos para o seu mapa de URLs. O proxy é a parte do balanceador de carga que contém o certificado SSL para um balanceador de carga HTTPS, pelo que também carrega o certificado neste passo.

    gcloud beta compute target-https-proxies create http-lb-proxy \
      --http-keep-alive-timeout-sec=HTTP_KEEP_ALIVE_TIMEOUT_SEC \
      --url-map=web-map-https \
      --ssl-certificates=www-ssl-cert
    

    Substitua HTTP_KEEP_ALIVE_TIMEOUT_SEC pelo valor de tempo limite de manutenção ativa de HTTP do cliente de 5 para 1200 segundos. O valor predefinido é de 610 segundos. Este campo é opcional.

  3. Para HTTPS, crie uma regra de encaminhamento global para encaminhar pedidos recebidos para o proxy.
    gcloud beta compute forwarding-rules create https-content-rule \
      --load-balancing-scheme=EXTERNAL_MANAGED \
      --network-tier=PREMIUM \
      --address=lb-ipv4-1 \
      --global \
      --target-https-proxy=https-lb-proxy \
      --ports=443
    
  4. Opcional: para HTTPS, crie uma política SSL global e anexe-a ao proxy HTTPS.
    Para criar uma política SSL global:
    gcloud compute ssl-policies create my-ssl-policy \
      --profile MODERN \
      --min-tls-version 1.0
    
    Para anexar a política SSL ao proxy HTTPS de destino global:
    gcloud compute target-https-proxies update https-lb-proxy \
      --ssl-policy my-ssl-policy
    

Configure um front-end HTTP

Ignore esta secção para balanceadores de carga HTTPS.

  1. Para HTTP, crie um proxy HTTP de destino para encaminhar pedidos para o seu mapa de URLs.
    gcloud beta compute target-http-proxies create http-lb-proxy \
      --http-keep-alive-timeout-sec=HTTP_KEEP_ALIVE_TIMEOUT_SEC \
      --url-map=web-map-http
    

    Substitua HTTP_KEEP_ALIVE_TIMEOUT_SEC pelo valor de tempo limite de manutenção ativa de HTTP do cliente de 5 para 1200 segundos. O valor predefinido é de 610 segundos. Este campo é opcional.

  2. Para HTTP, crie uma regra de encaminhamento global para encaminhar pedidos recebidos para o proxy.
    gcloud beta compute forwarding-rules create http-content-rule \
      --load-balancing-scheme=EXTERNAL_MANAGED \
      --address=lb-ipv4-1 \
      --global \
      --target-http-proxy=http-lb-proxy \
      --ports=80
    

Terraform

  1. Para criar a verificação de funcionamento, use o recurso google_compute_health_check.

    resource "google_compute_health_check" "default" {
      name               = "http-basic-check"
      check_interval_sec = 5
      healthy_threshold  = 2
      http_health_check {
        port               = 80
        port_specification = "USE_FIXED_PORT"
        proxy_header       = "NONE"
        request_path       = "/"
      }
      timeout_sec         = 5
      unhealthy_threshold = 2
    }
  2. Para criar o serviço de back-end, use o recurso google_compute_backend_service.

    resource "google_compute_backend_service" "default" {
      name                            = "web-backend-service"
      connection_draining_timeout_sec = 0
      health_checks                   = [google_compute_health_check.default.id]
      load_balancing_scheme           = "EXTERNAL_MANAGED"
      port_name                       = "http"
      protocol                        = "HTTP"
      session_affinity                = "NONE"
      timeout_sec                     = 30
      backend {
        group           = google_compute_instance_group_manager.default.instance_group
        balancing_mode  = "UTILIZATION"
        capacity_scaler = 1.0
      }
    }
  3. Para criar o mapa de URLs, use o recurso google_compute_url_map.

    resource "google_compute_url_map" "default" {
      name            = "web-map-http"
      default_service = google_compute_backend_service.default.id
    }
  4. Para criar o proxy HTTP de destino, use o recurso google_compute_target_http_proxy.

    resource "google_compute_target_http_proxy" "default" {
      name    = "http-lb-proxy"
      url_map = google_compute_url_map.default.id
    }
  5. Para criar a regra de encaminhamento, use o recurso google_compute_global_forwarding_rule.

    resource "google_compute_global_forwarding_rule" "default" {
      name                  = "http-content-rule"
      ip_protocol           = "TCP"
      load_balancing_scheme = "EXTERNAL_MANAGED"
      port_range            = "80-80"
      target                = google_compute_target_http_proxy.default.id
      ip_address            = google_compute_global_address.default.id
    }

Para saber como aplicar ou remover uma configuração do Terraform, consulte os comandos básicos do Terraform.

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 tráfego enviado para as suas instâncias

Agora que o serviço de balanceamento de carga está em execução, pode enviar tráfego para a regra de encaminhamento e ver o tráfego disperso por diferentes instâncias.

Consola

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

    Aceda a Balanceamento de carga

  2. Clique no balanceador de carga que acabou de criar.
  3. Na secção Backend, confirme que as VMs estão em bom estado. A coluna Healthy deve estar preenchida, o que indica que ambas as VMs estão em bom estado (2/2). Se vir o contrário, experimente primeiro atualizar a página. A Google Cloud consola pode demorar alguns instantes a indicar que as VMs estão em bom estado. Se os back-ends não parecerem em bom estado após alguns minutos, reveja a configuração da firewall e a etiqueta de rede atribuída às VMs de back-end.

  4. Para HTTPS, se estiver a usar um certificado gerido pela Google, confirme se o estado do recurso de certificado é ATIVO. Para mais informações, consulte o artigo Estado do recurso de certificado SSL gerido pela Google.
  5. Depois de a Google Cloud consola mostrar que as instâncias de back-end estão em bom estado, pode testar o balanceador de carga através de um navegador de Internet acedendo a https://IP_ADDRESS (ou http://IP_ADDRESS). Substitua IP_ADDRESS pelo endereço IP do balanceador de carga.
  6. Se usou um certificado autoassinado para testar o HTTPS, o navegador apresenta um aviso. Tem de instruir explicitamente o navegador para aceitar um certificado autoassinado.
  7. O navegador deve renderizar uma página com conteúdo que mostre o nome da instância que publicou a página, juntamente com a respetiva zona (por exemplo, Page served from: lb-backend-example-xxxx). Se o navegador não renderizar esta página, reveja as definições de configuração neste guia.

gcloud

gcloud compute addresses describe lb-ipv4-1 \
   --format="get(address)" \
   --global

Após alguns minutos, pode testar a configuração executando o seguinte comando curl.

curl http://IP_ADDRESS

-OU-

curl https://HOSTNAME

Configuração adicional

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.

Atualize o tempo limite de manutenção ativa de HTTP do cliente

O balanceador de carga criado nos passos anteriores foi configurado com um valor predefinido para o tempo limite de manutenção ativa do HTTP do cliente.

Para atualizar o limite de tempo limite de manutenção ativa HTTP do cliente, siga as instruções abaixo.

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 modificar.
  3. Clique em Editar.
  4. Clique em Configuração do front-end.
  5. Expanda Funcionalidades avançadas. Para Limite de tempo de manutenção ativa de HTTP, introduza um valor de limite de tempo.
  6. Clique em Atualizar.
  7. Para rever as alterações, clique em Rever e finalizar e, de seguida, clique em Atualizar.

gcloud

Para um balanceador de carga HTTP, atualize o proxy HTTP de destino através do comando gcloud compute target-http-proxies update:

      gcloud compute target-http-proxies update TARGET_HTTP_PROXY_NAME \
          --http-keep-alive-timeout-sec=HTTP_KEEP_ALIVE_TIMEOUT_SEC \
          --global
    

Para um balanceador de carga HTTPS, atualize o proxy HTTPS de destino com o comando gcloud compute target-https-proxies update:

      gcloud compute target-https-proxies update TARGET_HTTPS_PROXY_NAME \
          --http-keep-alive-timeout-sec=HTTP_KEEP_ALIVE_TIMEOUT_SEC \
          --global
    

Substitua o seguinte:

  • TARGET_HTTP_PROXY_NAME: o nome do proxy HTTP de destino.
  • TARGET_HTTPS_PROXY_NAME: o nome do proxy HTTPS de destino.
  • HTTP_KEEP_ALIVE_TIMEOUT_SEC: o valor de tempo limite de manutenção ativa de HTTP de 5 para 600 segundos.

O que se segue?

Para documentação relacionada:

Para vídeos relacionados: