Solicitar roteamento para um balanceador de carga de aplicativo clássico multirregional

Neste guia, você verá como criar um balanceador de carga HTTPS do Google Cloud que:

  • seleciona serviços de back-end com base nos caminhos de URL de solicitação;
  • roteia solicitações para back-ends próximos aos clientes (balanceamento de carga multirregional).

Antes de começar, familiarize-se com os conceitos de Balanceador de carga de aplicativo externo.

Para um exemplo simplificado, consulte Como configurar um balanceador de carga de aplicativo externo com um back-end do Compute Engine. Para saber mais sobre roteamento avançado, como substituições e redirecionamentos HTTP, consulte Gerenciamento de tráfego para balanceadores de carga de aplicativo externos.

Visão geral

Este guia fornece instruções para criar um balanceador de carga que direciona o tráfego com base no caminho no URL da solicitação e equilibra o tráfego em várias regiões. Você cria oito instâncias do Compute Engine nas regiões dos EUA (zona us-central1-b) e UE (zona eu-west1-b). Em seguida, você cria um balanceador de carga que direciona o tráfego para essas instâncias.

Depois de concluir as instruções, o balanceador de carga será configurado da maneira a seguir:

  • Se o tráfego tiver um caminho de URL que comece com /video, ele será encaminhado ao serviço de back-end.
  • Se o tráfego tiver um caminho de URL que não corresponda a esse padrão, ele será encaminhado para outro serviço de back-end.

Neste documento, você criará a configuração representada no diagrama a seguir:

Balanceamento de carga HTTPS multirregional
Balanceamento de carga HTTPS multirregional (clique para ampliar)

A sequência de eventos no diagrama é:

  1. Um cliente acessa o URL https://www.example.com/video/concert, enviando uma solicitação de conteúdo para o endereço de IP externo definido na regra de encaminhamento. A solicitação pode usar IPv4 ou IPv6. Há regras de encaminhamento para os dois protocolos.
  2. Uma regra de encaminhamento direciona a solicitação para o proxy HTTPS de destino.
  3. O proxy de destino usa o conjunto de regras no mapa do URL para determinar qual serviço de back-end recebe a solicitação. Uma solicitação com /video, como https://www.example.com/video/concert, é enviada para video-backend-service. Qualquer outro caminho de URL será enviado para o serviço padrão, web-backend-service.
  4. Com base no carregamento e na proximidade do cliente, o balanceador de carga determina quais grupos de instâncias do serviço de back-end precisam veicular a solicitação e direciona a solicitação para uma instância nesse grupo.
  5. A instância veicula o conteúdo solicitado por cada usuário. As instâncias video exibem conteúdo em vídeo, enquanto as instâncias www veiculam todos os outros conteúdos.

Neste exemplo, o balanceador de carga aceita as solicitações HTTPS dos clientes e as envia por proxy para os back-ends, na forma de HTTP. Também é possível configurar um balanceador de carga para aceitar solicitações HTTP e usar HTTPS quando estiver enviando solicitações aos back-ends por proxy.

Antes de começar

Estas instruções exigem um projeto. Se você ainda não tiver um projeto, crie um agora. As instruções mostram como criar uma rede de nuvem privada virtual (VPC) no modo personalizado. Você também precisa configurar regras de firewall personalizadas para permitir que o tráfego alcance as instâncias.

Se você preferir trabalhar na linha de comando, instale a ferramenta de linha de comando gcloud. Consulte Visão geral do gcloud para ver informações conceituais e de instalação sobre a ferramenta.

Permissões

Para concluir as etapas deste guia, é necessário ter permissão para criar instâncias do Compute Engine em um projeto. Você precisa ter um papel de proprietário ou editor do projeto, ou os seguintes papéis do IAM do Compute Engine:

Tarefa Papel necessário
Criar instâncias Administrador da instância do Compute
Adicionar e remover regras de firewall Administrador de segurança
Criar componentes do balanceador de carga Administrador de rede
Criar um projeto (opcional) Criador do projeto

Para mais informações, consulte estes guias:

Configuração

Opcional: como criar um projeto novo

Recomendamos que os usuários com a permissão resourcemanager.projects.create criem um projeto novo antes de continuar o tutorial. Isso simplifica a limpeza no final do guia.

Como configurar uma rede e sub-redes

Neste exemplo, use redes, regiões e sub-redes VPC a seguir:

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

  • Sub-redes em duas regiões diferentes:

    • us-subnet usa 10.1.10.0/24 como intervalo IP principal e está na região us-central1.
    • eu-subnet usa 10.1.11.0/24 como intervalo IP principal e está na região europe-west1.

Para criar a rede e sub-rede do exemplo, siga estas etapas:

Console

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

    Acessar redes VPC

  2. Clique em Criar rede VPC.

  3. Informe um Nome de lb-network.

  4. Na seção Sub-redes, crie a primeira sub-rede:

    • Defina o Modo de criação de sub-rede como Personalizado.
    • Na seção Nova sub-rede, insira as informações a seguir:
      • Name: us-subnet
      • Região: us-central1
      • Intervalo de endereços IP: 10.1.10.0/24
      • Clique em Concluído.
  5. Ainda na seção Sub-redes, clique em Adicionar sub-rede e crie a segunda sub-rede:

    • Na seção Nova sub-rede, insira as informações a seguir:
      • Name: eu-subnet
      • Região: europe-west1
      • Intervalo de endereços IP: 10.1.11.0/24
      • Clique em Concluído.
  6. Clique em Criar.

gcloud

  1. Crie a rede VPC personalizada:

    gcloud compute networks create lb-network --subnet-mode=custom
    
  2. Crie a us-subnet:

    gcloud compute networks subnets create us-subnet \
      --network=lb-network \
      --range=10.1.10.0/24 \
      --region=us-central1
    
  3. Crie a eu-subnet:

    gcloud compute networks subnets create eu-subnet \
      --network=lb-network \
      --range=10.1.11.0/24 \
      --region=europe-west1
    

Como configurar regras de firewall

A regra negar padrão de entrada bloqueia o tráfego de entrada para as instâncias de back-end, incluindo tráfego do balanceador de carga e sistemas de verificação de integridade do Google Cloud. Crie novas regras de firewall para substituir a regra padrão e permitir que o tráfego alcance suas instâncias.

Neste exemplo, você cria as regras de firewall a seguir:

  • fw-allow-ssh: uma regra de entrada, aplicável às instâncias submetidas a balanceamento de carga, que permite a conectividade SSH de entrada na porta TCP 22 proveniente de qualquer endereço. É possível escolher um intervalo de IP de origem mais restritivo para essa regra, por exemplo, especificando apenas os intervalos de IP do sistema que iniciará as sessões SSH. Neste exemplo, usamos a tag allow-ssh de destino para identificar as VMs de back-end a que isso se aplicará.

  • fw-allow-health-check-and-proxy: uma regra de entrada, aplicável às instâncias submetidas a balanceamento de carga, que permite o tráfego do balanceador de carga e dos sistemas de verificação de integridade do Google Cloud (130.211.0.0/22 e 35.191.0.0/16). Este exemplo usa a tag de destino allow-health-check para identificar as VMs de back-end às quais ela deve ser aplicada.

Console

  1. No Console do Google Cloud, acesse a página políticas de Firewall.

    Acessar as políticas de firewall

  2. Clique em Criar regra de firewall para criar a primeira regra de firewall:

    1. Informe um Nome de fw-allow-ssh.
    2. Em Rede, selecione lb-network.
    3. Em Destinos, selecione Tags de destino especificadas.
    4. Preencha o campo Tags de destino com allow-ssh.
    5. Defina Filtro de origem como Intervalos IPv4.
    6. Defina Intervalos IPv4 de origem como 0.0.0.0/0.
    7. Em Protocolos e portas, selecione Portas e protocolos especificados.
    8. Marque a caixa de seleção TCP e insira 22 como o número da porta.
    9. Clique em Criar.
  3. Clique em Criar regra de firewall para gerar a segunda regra:

    1. Informe um Nome de fw-allow-health-check-and-proxy.
    2. Em Rede, selecione lb-network.
    3. Em Destinos, selecione Tags de destino especificadas.
    4. Preencha o campo Tags de destino com allow-health-check.
    5. Defina Filtro de origem como Intervalos IPv4.
    6. Defina Intervalos IPv4 de origem como 130.211.0.0/22 e 35.191.0.0/16.
    7. Em Protocolos e portas, selecione Portas e protocolos especificados.
    8. Marque a caixa de seleção TCP e insira 80,443 como números de porta.
    9. 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 o fw-allow-health-check-and-proxy para permitir que o balanceador de carga e as verificações de integridade do Google Cloud se comuniquem com instâncias de back-end na porta TCP 80 e 443:

    gcloud compute firewall-rules create fw-allow-health-check-and-proxy \
        --network=lb-network \
        --action=allow \
        --direction=ingress \
        --target-tags=allow-health-check \
        --source-ranges=130.211.0.0/22,35.191.0.0/16 \
        --rules=tcp:80,tcp:443
    

Como criar instâncias

Para configurar um balanceador de carga com um back-end do Compute Engine, as VMs precisam estar em grupos de instâncias. Neste guia, descrevemos como criar um grupo de instâncias gerenciadas com VMs do Linux que têm o Apache em execução.

O grupo de instâncias gerenciadas fornece VMs que executam os servidores de back-end de um balanceador de carga HTTPS externo. Para fins de demonstração, os back-ends exibem os próprios nomes de host.

Neste exemplo, você cria oito instâncias de máquina virtual (VMs): quatro para veicular conteúdo de vídeo e quatro para veicular todos os outros conteúdos. Você usa um script de inicialização para instalar o software do servidor da Web Apache com uma página inicial exclusiva para cada instância. É possível usar qualquer servidor da Web em suas VMs. O Apache é instalado neste exemplo como uma conveniência.

Console

Crie um modelo de instância.

  1. 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 video-us-template.
    3. Verifique se Disco de inicialização está definido como uma imagem Debian, como Debian GNU/Linux 12 (bookworm): 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-health-check e allow-ssh.
      2. Em Interfaces de rede, selecione o seguinte:
        • Rede: lb-network
        • Sub-rede: us-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)"
      mkdir -p /var/www/html/video
      echo "Page served from: $vm_hostname" | \
      tee /var/www/html/index.html /var/www/html/video/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 ig-video-us.
    4. Em Local, selecione Única zona.
    5. Em Região, selecione a região de sua preferência. O exemplo usa us-central1.
    6. Em Zona, selecione us-central1-b.
    7. Em Modelo de instância, selecione video-us-template.
    8. Em Modo de escalonamento automático, selecione Off:do not autoscale.
    9. Em Número máximo de instâncias, insira 2.
    10. Clique em Criar.

gcloud

  1. Crie um modelo de instância.

    gcloud compute instance-templates create video-us-template \
       --region=us-central1 \
       --network=lb-network \
       --subnet=us-subnet \
       --tags=allow-health-check,allow-ssh \
       --image-family=debian-12 \
       --image-project=debian-cloud \
       --metadata=startup-script='#! /bin/bash
         apt-get update
         apt-get install apache2 -y
         a2ensite default-ssl
         a2enmod ssl
         vm_hostname="$(curl -H "Metadata-Flavor:Google" \
         http://metadata.google.internal/computeMetadata/v1/instance/name)"
         mkdir -p /var/www/html/video
         echo "Page served from: $vm_hostname" | \
         tee /var/www/html/index.html /var/www/html/video/index.html
         systemctl restart apache2'
    
  2. Crie o grupo gerenciado de instâncias com base no modelo.

    gcloud compute instance-groups managed create ig-video-us \
       --template=video-us-template --size=2 --zone=us-central1-b
    

Repita esse procedimento quatro vezes nos quatro grupos de instâncias. Altere o nome do grupo de instâncias, o nome do modelo, a região e a zona de cada grupo de instâncias da seguinte maneira:

  • ig-video-us, video-us-template, us-central1-b (como mostrado no exemplo)
  • ig-video-eu, video-eu-template, europe-west1-b
  • ig-www-us, www-us-template, us-central1-b
  • ig-www-eu, www-europe-template, europe-west1-b

Como adicionar uma porta nomeada ao grupo de instâncias

Para cada grupo de instâncias, defina um serviço HTTP e associe um nome à porta relevante. Após a configuração do serviço de balanceamento de carga, o tráfego é encaminhado à porta nomeada.

Console

  1. No Console do Google Cloud, acesse a página Grupos de instâncias.

    Acesse grupos de instâncias

  2. Clique no nome do grupo de instâncias (por exemplo, ig-video-us) e, em seguida, clique em Editar grupo.

  3. Clique em Especificar mapeamento de nomes de porta.

  4. Clique em Adicionar item.

  5. Para o nome da porta, insira http. Como número de porta, insira 80.

  6. Clique em Salvar.

Repita essa etapa para cada grupo de instâncias.

gcloud

gcloud compute instance-groups unmanaged set-named-ports ig-video-us \
    --named-ports http:80 \
    --zone us-central1-b
gcloud compute instance-groups unmanaged set-named-ports ig-www-us \
    --named-ports http:80 \
    --zone us-central1-b
gcloud compute instance-groups unmanaged set-named-ports ig-video-eu \
    --named-ports http:80 \
    --zone europe-west1-b
gcloud compute instance-groups unmanaged set-named-ports ig-www-eu \
    --named-ports http:80 \
    --zone europe-west1-b

Como reservar endereços IP externos

Agora que as instâncias já estão em execução, configure os serviços necessários para o balanceamento de carga. Nesta seção, você cria dois endereços IP externos estáticos globais que os clientes usam para alcançar seu balanceador de carga.

Console

  1. No console do Google Cloud, acesse a página Endereços IP externos.

    Acessar Endereços IP externos

  2. Clique em Reservar endereço estático para reservar um endereço IPv4.

  3. Atribua um Nome de lb-ipv4-1.

  4. Defina o Nível da rede como Premium.

  5. Configure Versão IP como IPv4.

  6. Defina Tipo como Global.

  7. Clique em Reservar.

  8. Clique em Reservar endereço estático novamente para reservar um endereço IPv6.

  9. Atribua um Nome de lb-ipv6-1.

  10. Defina o nível da rede como Premium.

  11. Defina Versão IP como IPv6.

  12. Certifique-se de que o Tipo esteja definido como Global.

    Neste exemplo, o balanceador de carga usa Rede nível Premium. Um balanceador de carga com rede de nível padrão usaria endereços IP regionais. Endereços IPv6 não estão disponíveis no nível padrão.

  13. Clique em Reservar.

gcloud

  1. Reservar um endereço IPv4:

    gcloud compute addresses create lb-ipv4-1 \
      --ip-version=IPV4 \
      --network-tier=PREMIUM \
      --global
    
  2. Reservar um endereço IPv6:

    gcloud compute addresses create lb-ipv6-1 \
      --ip-version=IPV6 \
      --network-tier=PREMIUM \
      --global
    

Como configurar os recursos de balanceamento de carga

A funcionalidade do balanceador de carga envolve vários recursos conectados. Nesta seção, você configura e conecta os recursos. Os efeitos são os seguintes:

  • Portas nomeadas, usadas pelo balanceador de carga para direcionar tráfego aos grupos de instâncias.
  • Uma verificação de integridade, que consulta as instâncias para conferir se estão íntegras. O balanceador de carga só envia tráfego a instâncias íntegras.
  • Serviços de back-end, que acompanham a capacidade, a afinidade de sessões e o status da verificação de integridade. Solicitações diretas de serviços de back-end para VMs ou endpoints de back-ends com base na integridade da capacidade e da instância.
  • Um Mapa de URL, que o balanceador de carga usa para direcionar solicitações a serviços de back-end específicos com base no host e no caminho do URL de solicitação.
  • Um recurso de certificado SSL. Os recursos do certificado SSL têm informações sobre o certificado SSL que o balanceador de carga usa para interromper o TLS quando os clientes HTTPS se conectam a ele. É possível usar vários certificados SSL, que podem ser qualquer combinação de certificados SSL gerenciados ou autogerenciados. É necessário criar um recurso de certificado SSL para cada certificado usado.
  • Um proxy HTTPS de destino, que o balanceador de carga usa para associar o mapa de URL e certificados SSL às regras de encaminhamento global.
  • Duas regras de encaminhamento global, uma para IPv4 e outra para IPv6, que contêm os recursos de endereço IP externo global. As regras de encaminhamento global direcionam a solicitação recebida para o proxy de destino.

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 aplicativo (HTTP/HTTPS) e clique em Próxima.
  4. Em Voltado ao público ou interno, selecione Voltado ao público (externo) e clique em Próxima.
  5. Em Implantação global ou de região única, selecione Melhor para cargas de trabalho globais e clique em Próxima.
  6. Em Geração do balanceador de carga, selecione Balanceador de carga de aplicativo clássico e clique em Próxima.
  7. Clique em Configurar.

Configuração básica

  1. Em Nome do balanceador de carga, digite web-map.
  2. Mantenha a janela aberta para continuar.

Configurar o serviço de back-end e a verificação de integridade das instâncias www

O balanceador de carga requer dois serviços de back-end e uma verificação de integridade para atender a ambos. Neste exemplo, o balanceador de carga encerra solicitações HTTPS do cliente e usa HTTP para se comunicar com os back-ends. Para fazer isso, você especifica o HTTP dos protocolos de back-end e as verificações de integridade.

  1. Clique em Configuração de back-end.
  2. No menu suspenso Criar ou selecionar um serviço de back-end, mantenha o ponteiro do mouse sobre Serviços de back-end e selecione Criar um serviço de back-end.
  3. Defina o Nome do serviço de back-end como web-backend-service.
  4. Verifique se o Tipo de back-end está definido como Grupo de instância.
  5. No menu suspenso Protocolo, selecione HTTP.
  6. No campo Porta nomeada, insira http.
  7. Abaixo de Back-ends, defina Grupo de instâncias como ig-www-us.
  8. Para o tráfego entre o balanceador de carga e as instâncias, defina Número de portas como 80.
  9. Nos campos restantes, mantenha os valores padrão.
  10. Clique em Concluído na parte inferior da janela Novo back-end.
  11. Clique em Adicionar back-end e repita as etapas, mas selecione o grupo de instâncias ig-www-eu.
  12. Mantenha a janela aberta para continuar.

Configurar a verificação de integridade das instâncias www

  1. Na janela Configuração do back-end, em Verificação de integridade, selecione Criar verificação de integridade ou Criar outra verificação de integridade.
  2. Para criar a verificação de integridade HTTP, defina os parâmetros de verificação de integridade a seguir:
    • Nome como http-basic-check-www
    • Protocolo como HTTP
    • Porta como 80.
  3. Clique em Salvar e continuar.
  4. Clique em Criar.

Configurar o serviço de back-end e a verificação de integridade das instâncias video

  1. Repita as etapas acima, mas nomeie o segundo serviço de back-end video-backend-service e atribua a ele os grupos de instâncias ig-video-us e ig-video-eu.
  2. Siga as mesmas etapas para criar uma verificação de integridade, mas nomeie-a como http-basic-check-video. Os nomes das verificações de integridade precisam ser exclusivos.

Configurar regras de host e de caminho

As regras de host e de caminho configuram o recurso de mapa do URL do balanceador de carga.

  1. Na coluna à esquerda da tela, clique em Regras de host e de caminho.
  2. A primeira linha tem web-backend-service na coluna da direita e já está preenchida com a regra padrão Any unmatched (default) para Hosts e Caminhos.
  3. Verifique se há uma segunda linha com video-backend-service na coluna do lado direito. Se ela não existir, clique em Adicionar regra de host e caminho e selecione video-backend-service no menu suspenso na coluna da direita. Preencha as outras colunas da seguinte forma:
    1. Defina Hosts como *.
    2. No campo Caminhos:
      1. Digite /video e pressione a tecla Tab.
      2. Digite /video/* e pressione a tecla Tab.

Configure o front-end

A seção de configuração do front-end configura vários recursos para o balanceador de carga, incluindo as regras de encaminhamento e os certificados SSL. Além disso, ela permite selecionar o protocolo usado entre o cliente e o balanceador de carga.

Neste exemplo, você está usando HTTPS entre o cliente e o balanceador de carga. Portanto, é necessário um ou mais recursos de certificado SSL para configurar o proxy. Consulte as informações sobre como criar recursos de certificado SSL em Certificados SSL. Recomendamos o uso de um certificado gerenciado pelo Google.

  1. No painel esquerdo da página Criar balanceador de carga de aplicativo externo global, clique em Configuração de front-end.
  2. No campo Nome, use https-content-rule.
  3. No campo Protocolo, selecione HTTPS.
  4. Mantenha a janela aberta para continuar.

Configurar a regra de encaminhamento de IPv4

  1. Defina Versão do IP como IPv4.
  2. Em Endereço IP, selecione lb-ipv4-1, criado anteriormente.
  3. Certifique-se de que Porta esteja definida como 443, para permitir tráfego HTTPS.
  4. Clique na lista suspensa Certificado.
    1. Se você tiver um recurso de certificado SSL autogerenciado e quiser usá-lo como o certificado SSL principal, selecione-o no menu suspenso.
    2. Caso contrário, selecione Criar um novo certificado.
    3. Preencha um Nome para www-ssl-cert.
    4. Selecione Fazer upload do meu certificado ou Criar um certificado gerenciado pelo Google. Para criar um certificado gerenciado pelo Google, você precisa ter um domínio. Se você não tiver um domínio, poderá fazer upload do seu próprio certificado para fins de teste.
    5. Se você selecionou Fazer upload do meu certificado, siga estas etapas.
      1. No campo Certificado de chave pública, escolha uma destas opções:
        • Clique no botão Upload e selecione o arquivo de certificado no formato PEM.
        • Copie e cole o conteúdo de um certificado no formato PEM. O conteúdo precisa começar com -----BEGIN CERTIFICATE----- e terminar com -----END CERTIFICATE-----.
      2. No campo Cadeia de certificados, escolha uma destas opções:
        • Clique no botão Upload e selecione o arquivo de certificado da sua CA. É recomendável que esse arquivo inclua certificados de CA tanto intermediários como raiz.
        • Copie e cole o conteúdo de uma cadeia de certificados. Cada certificado na cadeia precisa estar no formato PEM, começando com -----BEGIN CERTIFICATE----- e terminando com -----END CERTIFICATE-----. O Google Cloud não valida a cadeia de certificados para você. A validação é responsabilidade sua.
        • Se você omitir a cadeia de certificados, seu certificado precisará ser assinado por uma CA publicamente confiável, em que os clientes confiem automaticamente.
      3. No campo Certificado de chave privada, escolha uma destas opções:
        • Clique no botão Upload e selecione sua chave privada. Ela precisa estar no formato PEM e não ser protegida por uma senha longa.
        • Copie e cole o conteúdo de uma chave privada no formato PEM. As chaves privadas RSA precisam começar com -----BEGIN RSA PRIVATE KEY----- e terminar com -----END RSA PRIVATE KEY-----. As chaves privadas ECDSA precisam começar com -----BEGIN EC PRIVATE KEY----- e terminar com -----END EC PRIVATE KEY-----.
      4. Clique em Criar.
    6. Se você selecionou Criar um certificado gerenciado pelo Google, insira um Domínio.
  5. Para adicionar recursos de certificado além do certificado SSL principal, siga estas etapas:
    1. Clique em Adicionar certificado.
    2. Selecione um certificado na lista Certificados ou clique em Criar um novo certificado e siga as instruções acima.
  6. Em negociação QUIC, selecione uma das seguintes opções:
    • Automático (padrão): permite que o Google controle quando o QUIC é negociado. O QUIC é desativado quando você seleciona Automático. Ao selecionar essa opção, você permite que o Google ative automaticamente as negociações do QUIC e o HTTP/3 no futuro para este balanceador de carga. Em gcloud e na API, essa opção é chamada de NONE.
    • Ativado: permite que o balanceador de carga negocie o QUIC com os clientes.
    • Desativado: impede que o balanceador de carga negocie o QUIC com os clientes.
  7. Clique em Concluído.
  8. Mantenha a janela aberta para continuar.

Configurar a regra de encaminhamento de IPv6

  1. Clique em Adicionar IP e porta de front-end.
  2. Informe um Nome de https-content-ipv6-rule.
  3. No campo Protocolo, selecione HTTPS se você quiser usar HTTPS entre o cliente e o balanceador de carga. Selecione HTTP se quiser usar HTTP entre o cliente e o balanceador de carga.
  4. Defina Versão do IP como IPv6.
  5. Em IP, selecione lb-ipv6-1, criado anteriormente.
  6. A Porta padrão 443 é obrigatória.
  7. Se você já tem um recurso de certificado SSL que quer usar, selecione-o no menu suspenso Certificado. Caso contrário, selecione Criar um novo certificado.
    1. Preencha um Nome para www-ssl-cert.
    2. Nos campos adequados, carregue o Certificado de chave pública (arquivo .crt), a Cadeia de certificados (arquivo .csr) e a Chave particular (arquivo .key).
    3. Clique em Criar.
  8. Para adicionar recursos de certificado além do certificado SSL principal, siga estas etapas:
    1. Clique em Adicionar certificado.
    2. Selecione um certificado na lista Certificados ou clique em Criar um novo certificado e siga as instruções acima.
  9. Em negociação QUIC, selecione uma das seguintes opções:
    • Automático (padrão): permite que o Google controle quando o QUIC é negociado. O QUIC é desativado quando você seleciona Automático. Ao selecionar essa opção, você permite que o Google ative automaticamente as negociações do QUIC e o HTTP/3 no futuro para este balanceador de carga. Em gcloud e na API, essa opção é chamada de NONE.
    • Ativado: permite que o balanceador de carga negocie o QUIC com os clientes.
    • Desativado: impede que o balanceador de carga negocie o QUIC com os clientes.
  10. Clique em Concluído.

Revisão e finalização

  1. No painel esquerdo da página Criar balanceador de carga de aplicativo externo global, clique em Analisar e finalizar.
  2. Compare as configurações com o que você pretendia criar.
  3. Se tudo parecer certo, clique em Criar para criar o balanceador de carga de aplicativo externo.

gcloud

  1. Crie uma verificação de integridade. Use o comando gcloud para HTTP se você estiver usando HTTP entre o balanceador de carga e os back-ends.

    gcloud compute health-checks create http http-basic-check \
        --port 80
    
  2. Crie um serviço de back-end para cada provedor de conteúdo.

    Defina o campo --protocol como HTTP, porque estamos usando HTTP para chegar às instâncias. Use a verificação de integridade http-basic-check que criamos antes.

    • Para um balanceador de carga de aplicativo externo global, use o comando da CLI gcloud com load-balancing-scheme=EXTERNAL_MANAGED. Essa configuração oferece recursos avançados de gerenciamento de tráfego.
    • Para um balanceador de carga de aplicativo clássico, use load-balancing-scheme=EXTERNAL.
    gcloud compute backend-services create video-backend-service \
        --load-balancing-scheme=LOAD_BALANCING_SCHEME \
        --global-health-checks \
        --protocol=HTTP \
        --port-name=http \
        --health-checks=http-basic-check \
        --global
    
    gcloud compute backend-services create web-backend-service \
        --load-balancing-scheme=LOAD_BALANCING_SCHEME \
        --global-health-checks \
        --protocol=HTTP \
        --port-name=http \
        --health-checks=http-basic-check \
        --global
    
  3. Adicione os grupos de instâncias como back-ends aos serviços de back-end. Um back-end define a capacidade (uso máximo de back-end ou máximo de consultas por segundo) dos grupos de instâncias que ele contém. Para este exemplo, defina balancing-mode como o valor UTILIZATION, max-utilization como 0.8 e capacity-scaler como 1. Defina capacity-scaler como 0 caso queira drenar um serviço de back-end.

    Adicione o grupo de instâncias ig-video-us:

    gcloud compute backend-services add-backend video-backend-service \
        --balancing-mode=UTILIZATION \
        --max-utilization=0.8 \
        --capacity-scaler=1 \
        --instance-group=ig-video-us \
        --instance-group-zone=us-central1-b \
        --global
    

    Adicione o grupo de instâncias ig-video-eu:

    gcloud compute backend-services add-backend video-backend-service \
        --balancing-mode=UTILIZATION \
        --max-utilization=0.8 \
        --capacity-scaler=1 \
        --instance-group=ig-video-eu \
        --instance-group-zone=europe-west1-b \
        --global
    

    Adicione o grupo de instâncias ig-www-us:

    gcloud compute backend-services add-backend web-backend-service \
        --balancing-mode=UTILIZATION \
        --max-utilization=0.8 \
        --capacity-scaler=1 \
        --instance-group=ig-www-us \
        --instance-group-zone=us-central1-b \
        --global
    

    Adicione o grupo de instâncias ig-www-eu:

    gcloud compute backend-services add-backend web-backend-service \
        --balancing-mode=UTILIZATION \
        --max-utilization=0.8 \
        --capacity-scaler=1 \
        --instance-group=ig-www-eu \
        --instance-group-zone=europe-west1-b \
        --global
    
  4. Crie uma mapa de URL para encaminhar as solicitações recebidas para os serviços de back-end adequados. Nesse caso, os mapeamentos de caminhos de solicitação definidos por meio da sinalização --path-rules dividem o tráfego de acordo com o caminho do URL de cada solicitação para seu local. Qualquer tráfego que não conste na lista --path-rules é enviado para --default-service flag.

    1. Crie um mapa de URL:

      gcloud compute url-maps create web-map \
          --default-service web-backend-service
      
    2. Adicione uma correspondência de caminho ao mapa de URL e defina os mapeamentos de caminhos das solicitações:

      gcloud compute url-maps add-path-matcher web-map \
          --default-service web-backend-service \
          --path-matcher-name pathmap \
          --path-rules="/video=video-backend-service,/video/*=video-backend-service"
      
  5. Crie um recurso de certificado SSL para ser usado no proxy HTTPS. Para criar um certificado gerenciado pelo Google, você precisa ter um domínio. Se você não tiver um domínio, poderá usar um certificado SSL autoassinado para testes. Para mais informações, consulte Tipos de certificados SSL.

    Se você usa vários certificados SSL, é necessário criar um recurso de certificado SSL para cada certificado.

    Para criar um recurso de certificado SSL autogerenciado:

    gcloud compute ssl-certificates create www-ssl-cert \
        --certificate [CRT_FILE_PATH] \
        --private-key [KEY_FILE_PATH]
    

    Para criar um recurso de certificado SSL gerenciado pelo Google:

    gcloud compute ssl-certificates create www-ssl-cert \
      --domains [DOMAIN]
    
  6. Crie um proxy de destino HTTPS para encaminhar solicitações ao mapa de URL. O proxy é a parte do balanceador de carga onde é armazenado o certificado SSL para balanceamento de carga HTTPS. Por isso, nesta etapa, carregue também o certificado.

    gcloud compute target-https-proxies create https-lb-proxy \
        --url-map web-map --ssl-certificates www-ssl-cert
    
  7. Crie duas regras de encaminhamento global para encaminhar as solicitações recebidas para o proxy, uma para cada um dos endereços IP que você criou.

    • Para um balanceador de carga de aplicativo externo global, use o comando da CLI gcloud com load-balancing-scheme=EXTERNAL_MANAGED. Essa configuração oferece recursos avançados de gerenciamento de tráfego.
    • Para um balanceador de carga de aplicativo clássico, use load-balancing-scheme=EXTERNAL.
    gcloud compute forwarding-rules create https-content-rule \
        --load-balancing-scheme=LOAD_BALANCING_SCHEME \
        --network-tier=PREMIUM \
        --address=lb-ipv4-1 \
        --global \
        --target-https-proxy=https-lb-proxy \
        --ports=443
    
    gcloud compute forwarding-rules create https-content-ipv6-rule \
        --load-balancing-scheme=LOAD_BALANCING_SCHEME \
        --network-tier=PREMIUM \
        --address=lb-ipv6-1 \
        --global \
        --target-https-proxy=https-lb-proxy \
        --ports=443
    

Depois de criar a regra de encaminhamento global, pode levar vários minutos até a configuração ser propagada em todo o mundo.

Como conectar seu domínio ao balanceador de carga

Após a criação do balanceador de carga, anote o endereço IP associado a ele, por exemplo, 30.90.80.100. Para apontar seu domínio para o balanceador de carga, crie um registro A usando o serviço de registro de domínio. Se você adicionou vários domínios ao certificado SSL, adicione um registro A para cada um deles, todos apontando para o endereço IP do balanceador de carga. Por exemplo, para criar registros 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 você usa o Cloud DNS como provedor de DNS, consulte Adicionar, modificar e excluir registros.

como enviar tráfego às instâncias

Agora que você configurou o serviço de balanceamento de carga, comece a enviar tráfego para a regra de encaminhamento e veja o tráfego ir para instâncias diferentes.

Console e navegador da Web

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

    Acessar o "Balanceamento de carga"

  2. Clique em web-map para expandir o balanceador de carga que você acabou de criar.

  3. Na seção Back-end, confirme se as instâncias estão íntegras. A coluna Íntegra precisa estar preenchida, indicando a integridade das duas instâncias de cada um dos quatro grupos de instâncias. Se não estiver assim, tente atualizar a página. Pode levar alguns instantes para o Console do Google Cloud indicar que as instâncias estão íntegras. Caso os back-ends não apareçam como íntegros depois de alguns minutos, analise a configuração do firewall e defina as tags da rede atribuídas às instâncias do back-end.

  4. Registre os endereços IPv4 e IPv6 do balanceador de carga:

    1. No console do Google Cloud, acesse a página Endereços IP externos.

      Acessar Endereços IP externos

    2. Em Nome, encontre os endereços chamados lb-ipv4-1 e lb-ipv6-1 e registre os valores associados na coluna Endereços externos.

  5. Se você estiver usando um certificado gerenciado pelo Google:

    1. Crie os seguintes registros DNS:

    2. Confirme se o status do recurso de certificado é ACTIVE. Para mais informações, consulte Status do recurso de certificado SSL gerenciado pelo Google.

  6. Teste o balanceador de carga usando um navegador da Web e acessando uma das seguintes opções:

    • https://IP_ADDRESS, em que IP_ADDRESS é o endereço IPv4 do balanceador de carga. Se o navegador exibir um aviso de certificado, você precisará instruí-lo explicitamente a confiar no certificado. O aviso aparece porque os certificados geralmente são configurados com domínios, não com endereços IP.

    • https://FQDN, em que FQDN é o nome de domínio totalmente qualificado (FQDN, na sigla em inglês) em que você configurou o DNS para apontar para o endereço IP do balanceador de carga. Se você usou um certificado SSL auto-gerenciado e autoassinado ou um certificado SSL autogerenciado e assinado por uma autoridade de certificação personalizada, seu navegador exibirá um aviso de certificado, a menos que você o tenha configurado explicitamente para confiar no certificado ou em na autoridade de certificação. Para mais detalhes sobre certificados autogerenciados, consulte Como criar uma chave privada e um certificado.

    O navegador renderizará uma página exibindo o nome da instância que veiculou a página e a zona (por exemplo, Page on ig-www-us-02 in us-central1-b).

  7. No navegador, acesse uma das seguintes opções:

    • https://IP_ADDRESS/video, em que IP_ADDRESS é o endereço IPv4 do balanceador de carga.

    • https://FQDN/video, em que FQDN é o FQDN em que você configurou o DNS para apontar para o endereço IP do balanceador de carga.

    O navegador renderizará uma página exibindo o nome da instância de vídeo que veiculou a página e a zona (por exemplo, Page on ig-video-us-02 in us-central1-b).

gcloud e usando curl

  1. Registre os endereços IPv4 e IPv6 do balanceador de carga:

    gcloud compute addresses describe lb-ipv4-1 \
    --format="get(address)" \
    --global
    
    gcloud compute addresses describe lb-ipv6-1 \
    --format="get(address)" \
    --global
    
  2. Se você estiver usando um certificado gerenciado pelo Google:

    1. Crie os seguintes registros DNS:

    2. Confirme se o status do recurso de certificado é ACTIVE. Para mais informações, consulte Status do recurso de certificado SSL gerenciado pelo Google.

      gcloud compute ssl-certificates list
      
  3. Use o comando curl para testar a resposta desses URLs. Substitua IP_ADDRESS pelo endereço IPv4 do balanceador de carga:

    curl -k https://IP_ADDRESS
    
    curl -k https://IP_ADDRESS/video/
    
  4. Use o comando curl para testar a resposta desses URLs. Substitua IP_ADDRESS pelo endereço IPv6 do balanceador de carga. Para IPv6, coloque o endereço entre colchetes ([]) e desative globs com a sinalização -g (por exemplo, curl -g -6 "https://[2001:DB8::]/").

    curl -k -g -6 https://[IP_ADDRESS]
    
    curl -k -g -6 https://[IP_ADDRESS]/video/
    

Como testar a funcionalidade multirregional

Para simular um usuário em uma região geográfica diferente, conecte-se a uma das instâncias de máquina virtual em uma região diferente e execute um comando curl nessa instância para ver a solicitação ir para uma instância na região mais próxima dela.

Se você se conectar a ig-www-us-01, a execução de um comando curl mostrará que a solicitação vai para uma instância em us-central1. Você verá uma saída como esta: Page on ig-www-us-02 in us-central1-b.

Se você se conectar a ig-www-eu-01, a execução de um comando curl mostrará que a solicitação vai para uma instância em europe-west1. Você verá uma saída como esta: Page on ig-www-eu-02 in europe-west1-b.

É possível testar um sistema cliente em qualquer lugar do mundo. Se os back-ends de uma região não forem íntegros ou atingirem a capacidade, o balanceador de carga HTTPS automaticamente enviará o tráfego para a região mais próxima.

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. Você pode realizá-las em qualquer ordem.

Como ativar a afinidade de sessão

Estes procedimentos demonstram como configurar um tipo diferente de afinidade de sessão para cada serviço de back-end:

  • Afinidade da sessão do endereço IP do cliente para web-backend-service
  • Afinidade da sessão de cookie HTTP para video-backend-service

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 com base em um hash criado a partir do endereço IP do cliente.

Quando a afinidade de cookie gerado é ativada, o balanceador de carga emite um cookie na primeira solicitação. Em cada solicitação subsequente com o mesmo cookie, o balanceador de carga direciona a solicitação para a mesma VM ou o mesmo endpoint de back-end. No caso de balanceadores de carga de aplicativos externos, o cookie é chamado de GCLB.

Console

Para ativar a afinidade de sessão de IP do cliente para web-backend-service:

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

    Acessar o "Balanceamento de carga"

  2. Clique em Back-ends.

  3. Clique em web-backend-service (o nome de um dos serviços de back-end que você 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 da sessão, selecione IP do cliente no menu.

  6. Clique em Salvar.

Para ativar a afinidade de sessão de cookie gerada para video-backend-service:

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

    Acessar o "Balanceamento de carga"

  2. Clique em Back-ends.

  3. Clique em video-backend-service (o nome de um dos serviços de back-end que você 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 da sessão, selecione Cookies gerados no menu.

  6. Clique em Atualizar.

gcloud

Use o comando gcloud a seguir para atualizar o serviço de back-end web-backend-service, especificando a afinidade da sessão de IP do cliente:

gcloud compute backend-services update web-backend-service \
    --session-affinity=CLIENT_IP \
    --global

Use o comando gcloud para atualizar o serviço de back-end video-backend-service, especificando a afinidade da sessão de cookie gerada:

gcloud compute backend-services update video-backend-service \
    --session-affinity=GENERATED_COOKIE \
    --global

API

Para definir a afinidade da sessão de IP do cliente, faça uma solicitação PATCH para o método backendServices/patch.

PATCH https://www.googleapis.com/compute/v1/projects/[PROJECT_ID]/global/backendServices/web-backend-service
{
  "sessionAffinity": "CLIENT_IP"
}

Para definir a afinidade da sessão do cookie gerado, faça uma solicitação PATCH para o método backendServices/patch.

PATCH https://www.googleapis.com/compute/v1/projects/[PROJECT_ID]/global/backendServices/video-backend-service
{
  "sessionAffinity": "GENERATED_COOKIE"
}

Como remover endereços IP externos de VMs de back-end

Os balanceadores de carga de aplicativos externos se comunicam com back-ends usando endereços IP internos e rotas especiais do balanceador de carga. As instâncias de back-end não precisam de endereços IP externos para se comunicar com o balanceador de carga. Para aumentar a segurança, remova os endereços IP externos das instâncias de back-end.

Para remover endereços IP externos de instâncias de back-end, siga estas instruções.

Para se conectar a uma instância de back-end que não tenha um endereço IP externo usando SSH, consulte Como se conectar a uma instância que não tem um endereço IP externo.

Limpeza

Depois de concluir este tutorial, exclua os recursos que você criou para que não sejam cobrados no futuro. Se esses recursos foram criados no próprio projeto, exclua todo o projeto. Caso contrário, exclua os recursos individualmente.

Excluir o projeto

Console

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

    Acessar Projetos

  2. Na lista de projetos, selecione um e clique em Excluir.

  3. Na caixa de diálogo, digite PROJECT_ID e clique em Encerrar para excluir o projeto.

gcloud

Execute o seguinte comando, substituindo PROJECT_ID pelo ID do projeto:

gcloud projects delete PROJECT_ID

Como excluir recursos individuais

Console

Excluir o balanceador de carga

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

    Acessar o "Balanceamento de carga"

  2. Marque a caixa de seleção ao lado de web-map.

  3. Clique no botão Excluir na parte superior da página.

  4. Marque as caixas de seleção ao lado de todos os recursos extras, incluindo serviços de back-end, verificações de integridade e certificados SSL.

  5. Clique em Excluir balanceador de carga e recursos selecionados.

Como excluir os grupos de instâncias

  1. No Console do Google Cloud, acesse a página Grupos de instâncias.

    Acesse grupo de instâncias

  2. Marque a caixa de seleção na parte superior ao lado de Nome para selecionar todos os grupos de instâncias.

  3. Clique em Excluir.

  4. Na janela de confirmação, clique em Excluir.

Como liberar endereços IP externos

  1. No console do Google Cloud, acesse a página Endereços IP externos.

    Acessar Endereços IP externos

  2. Marque as caixas de seleção ao lado de lb-ipv4-1 e lb-ipv6-1.

  3. Clique em Liberar endereços estáticos.

  4. Na janela de confirmação, clique em Excluir.

Como excluir as regras de firewall

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

    Acessar as políticas de firewall

  2. Marque as caixas de seleção ao lado de fw-allow-health-check-and-proxy e fw-allow-ssh.

  3. Clique em Excluir.

  4. Na janela de confirmação, clique em Excluir.

Como excluir as instâncias de VM

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

    Acessar instâncias de VM

  2. Marque a caixa de seleção na parte superior ao lado de Nome para selecionar todas as instâncias.

  3. Clique em Excluir.

  4. Na janela de confirmação, clique em Excluir.

Como excluir a rede VPC

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

    Acessar redes VPC

  2. Clique em lb-network.

  3. Na página "Detalhes da rede", clique em Excluir rede VPC.

  4. Na janela de confirmação, clique em Excluir.

gcloud

Como excluir o balanceador de carga

Para excluir o balanceador de carga, é necessário excluir cada um dos componentes dele.

  1. Exclua as regras de encaminhamento:

    gcloud compute forwarding-rules delete https-content-rule \
        --global
    
    gcloud compute forwarding-rules delete https-content-ipv6-rule \
        --global
    
  2. Exclua os endereços IP externos globais:

    gcloud compute addresses delete lb-ipv4-1 \
        --global
    
    gcloud compute addresses delete lb-ipv6-1 \
        --global
    
  3. Exclua o proxy de destino:

    gcloud compute target-https-proxies delete https-lb-proxy
    
  4. Exclua o certificado SSL:

    gcloud compute ssl-certificates delete www-ssl-cert
    
  5. Exclua o mapa de URL:

    gcloud compute url-maps delete web-map
    
  6. Exclua os serviços de back-end:

    gcloud compute backend-services delete web-backend-service \
        --global
    
    gcloud compute backend-services delete video-backend-service \
        --global
    
  7. Exclua as verificações de integridade:

    gcloud compute health-checks delete http-basic-check
    

Você excluiu todos os recursos do balanceador de carga.

Como excluir os grupos de instâncias

Repita o comando a seguir para excluir quatro grupos de instâncias não gerenciadas, usando as seguintes combinações de nome e zona. Substitua INSTANCE_GROUP_NAME e ZONE adequadamente:

  • Nome: ig-www-us, zona: us-central1-b
  • Nome: ig-video-us, zona: us-central1-b
  • Nome: ig-www-eu, zona: europe-west1-b
  • Nome: ig-video-eu, zona: europe-west1-b
gcloud compute instance-groups unmanaged delete INSTANCE_GROUP_NAME \
   --zone=ZONE

Como excluir as instâncias de VM

Repita o comando a seguir para excluir as oito VMs, usando as combinações de nome e zona a seguir. Substitua VM_NAME e ZONE adequadamente:

  • Nome: ig-www-us-01, zona: us-central1-b
  • Nome: ig-www-us-02, zona: us-central1-b
  • Nome: ig-video-us-01, zona: us-central1-b
  • Nome: ig-video-us-02, zona: us-central1-b
  • Nome: ig-www-eu-01, zona: europe-west1-b
  • Nome: ig-www-eu-02, zona: europe-west1-b
  • Nome: ig-video-eu-01, zona: europe-west1-b
  • Nome: ig-video-eu-02, zona: europe-west1-b
gcloud compute instances delete VM_NAME \
   --zone=ZONE

Como excluir as regras de firewall

Exclua as duas regras de firewall:

gcloud compute firewall-rules delete fw-allow-health-check-and-proxy
gcloud compute firewall-rules delete fw-allow-ssh

Como excluir a rede VPC

  1. Exclua o us-subnet:

    gcloud compute networks subnets delete us-subnet \
    --region=us-central1
    
  2. Exclua o eu-subnet:

    gcloud compute networks subnets delete eu-subnet \
    --region=europe-west1
    
  3. Exclua a rede VPC:

    gcloud compute networks delete lb-network
    

Você excluiu todos os recursos configurados neste projeto.

A seguir