Configurar um balanceador de carga de aplicativo externo global com um serviço de back-end entre projetos e um bucket de back-end

Neste documento, mostramos como criar um balanceador de carga de aplicativo externo global com um serviço de back-end e um bucket de back-end localizados em um projeto diferente de onde estão o front-end do balanceador de carga e o mapa de URL. Esse modelo de implantação é conhecido como referência de serviço entre projetos.

O exemplo usado neste documento não usa um ambiente de VPC compartilhada para configurar a referência de serviço entre projetos. Para saber como configurar a referência de serviço entre projetos em um ambiente de VPC compartilhada, consulte Configurar um balanceador de carga de aplicativo externo global com VPC compartilhada.

Antes de começar

Certifique-se de que sua configuração atenda aos seguintes pré-requisitos.

Permissões e papéis do IAM necessários

Para seguir este guia, você precisa ter os seguintes papéis do IAM:

Tarefa Papel necessário
Criar um projeto Papel de criador de projetos (roles/resourcemanager.projectCreator)
Criar recursos de computação Papel de administrador de rede do Compute (roles/compute.networkAdmin)
Criar buckets do Cloud Storage Função de administrador de objetos do Storage (roles/storage.objectAdmin)

Usar um recurso de outro projeto

Neste exemplo, o projeto A faz referência ao serviço de back-end e ao bucket de back-end que estão localizados no projeto B.

Neste exemplo, um administrador do projeto B precisa conceder o papel de usuário dos serviços do balanceador de carga do Compute (roles/compute.loadBalancerServiceUser) ao administrador do projeto A para permitir o acesso ao serviço de back-end e ao bucket de back-end no projeto B. Esse papel pode ser concedido no nível do projeto ou do recurso.

Para saber mais sobre como atribuir esse papel, consulte Conceder permissões ao administrador do Compute Load Balancer para usar o serviço de back-end.

Criar Google Cloud projetos

Para o exemplo neste documento, siga as instruções duas vezes para criar dois projetos Google Cloud .

Console

Para criar um projeto novo, execute as seguintes etapas:

  1. Acesse a página Gerenciar recursos no console Google Cloud .

    Acessar "Gerenciar recursos"

    As etapas restantes aparecem no console do Google Cloud .

  2. Na lista suspensa Selecionar organização, na parte de cima da página, escolha o recurso da organização em que o projeto vai ser criado. Se você é um usuário da avaliação gratuita, pule esta etapa porque a lista não será exibida.
  3. Clique em Criar projeto.
  4. Na janela Novo projeto que vai ser exibida, insira o nome do projeto e selecione uma conta de faturamento, conforme aplicável. O nome de um projeto só pode ser composto por letras, números, aspas simples, hifens, espaços ou pontos de exclamação e precisa ter entre 4 e 30 caracteres.
  5. Insira o recurso da organização ou pasta mãe na caixa Local. Esse recurso vai ser o pai hierárquico do novo projeto. Se houver a opção Sem organização, selecione-a para criar o novo projeto como o nível superior da própria hierarquia de recursos.
  6. Quando terminar de inserir os detalhes do novo projeto, clique em Criar.

gcloud

  1. In the Google Cloud console, activate Cloud Shell.

    Activate Cloud Shell

    At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.

  2. Para criar um novo projeto, use o comando gcloud projects create:

    gcloud projects create PROJECT_ID
    

    Em que PROJECT_ID é o código do projeto que você quer criar. Um ID do projeto precisa começar com uma letra minúscula e deve conter apenas letras ASCII, dígitos e hifens e deve ter entre 6 e 30 caracteres.

Visão geral da configuração

Conforme mostrado no diagrama a seguir, o front-end e o mapa de URL de um balanceador de carga de aplicativo externo global são criados em um projeto diferente do serviço de back-end e do bucket de back-end do balanceador de carga. Esse tipo de implantação entre projetos não usa um ambiente de VPC compartilhada.

Nessa configuração, o mapa de URL encaminha solicitações de conteúdo estático (/images/*) para um bucket de back-end, enquanto todas as outras solicitações são roteadas para o serviço de back-end padrão.

Um balanceador de carga de aplicativo interno entre regiões envia tráfego para um serviço de back-end do Cloud Storage e um bucket de back-end localizados em um projeto diferente.
Implantação entre projetos (clique para ampliar).

A tabela a seguir mostra uma visão geral dos recursos criados no projeto A e no projeto B. O front-end e o mapa de URL do balanceador de carga são criados no projeto A, enquanto os componentes de back-end são criados no projeto B.

Recursos criados no projeto A Recursos criados no projeto B
  • Endereço IP
  • Certificado SSL
  • Mapa de URL
  • Proxy de destino
  • Regra de encaminhamento
  • Rede VPC
  • Sub-rede
  • Serviço de back-end

    O serviço de back-end faz referência às instâncias de back-end em um grupo de instâncias. Os recursos a seguir são usados para criar as instâncias de back-end. Para este exemplo, as instâncias de back-end são criadas em uma sub-rede chamada lb-backend-subnet na região us-west1.

    • Modelo de instância
    • Grupo de instâncias
    • Verificação de integridade
    • Regra de firewall
  • Bucket de back-end
    • O bucket de back-end faz referência a um bucket do Cloud Storage.

Nas próximas seções, vamos configurar os diferentes recursos listados na tabela anterior, começando pela configuração de uma rede VPC e uma sub-rede para as VMs de back-end do balanceador de carga no projeto B.

Configurar uma rede e uma sub-rede para as VMs de back-end do balanceador de carga no projeto B

Para este exemplo, as VMs de back-end são criadas na seguinte rede e sub-rede:

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

  • Sub-rede para VMs de back-end do balanceador de carga: uma sub-rede chamada lb-backend-subnet na região us-west1 usa 10.1.2.0/24 como o intervalo de IP principal. Os intervalos de endereços IPv4 primário e secundário de uma sub-rede são endereços IPv4 internos regionais. Para mais informações, consulte Intervalos IPv4 válidos.

Console

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

    Acessar redes VPC

  2. Clique em Criar rede VPC.

  3. Em Nome, insira lb-network.

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

  5. Na seção Nova sub-rede, insira as seguintes informações:

    • Nome: lb-backend-subnet
    • Selecione uma Região: us-west1
    • Intervalo de endereços IP: 10.1.2.0/24
  6. Clique em Concluído.

  7. Clique em Criar.

gcloud

  1. Crie uma rede VPC personalizada, chamada lb-network, com o comando gcloud compute networks create.

    gcloud compute networks create lb-network \
        --subnet-mode=custom \
        --project=PROJECT_B_ID
    
  2. Crie uma sub-rede na rede VPC lb-network na região us-west1 com o comando gcloud compute networks subnets create.

    gcloud compute networks subnets create lb-backend-subnet \
        --network=lb-network \
        --range=10.1.2.0/24 \
        --region=us-west1 \
        --project=PROJECT_B_ID
    

Configurar um serviço de back-end no projeto B

Para configurar um serviço de back-end, faça o seguinte:

  • Criar um modelo de instância.
  • Criar um grupo de instâncias.
  • Criar uma verificação de integridade.
  • Crie uma regra de firewall.
  • Crie um serviço de back-end.

Criar um modelo de instância

O precursor da criação de um grupo de instâncias gerenciadas é a criação de um modelo de instância, que é um recurso que pode ser usado para criar instâncias de máquina virtual (VM, na sigla em inglês). O tráfego dos clientes é balanceado por carga para VMs em um grupo de instâncias. O grupo de instâncias gerenciadas fornece VMs que executam os servidores de back-end de um balanceador de carga de aplicativo externo. Neste tutorial, os back-ends disponibilizam seus próprios nomes de host.

Console

  1. No console Google Cloud , acesse a página Modelos de instância do Compute Engine.

    Acesse "Modelos de instância"

  2. Clique em Criar modelo de instância.

  3. Em Nome, insira backend-template.

  4. Na seção Disco de inicialização, verifique se o disco está definido como uma imagem do Debian, como Debian GNU/Linux 12 (bookworm). Clique em Alterar para mudar a imagem se necessário.

  5. Expanda a seção Opções avançadas.

  6. Expanda Rede e configure os seguintes campos:

    1. Em Tags de rede, insira load-balanced-backend.
    2. Na seção Interfaces de rede, configure os seguintes campos:
      • Rede: lb-network
      • Sub-rede: lb-backend-subnet
      • Tipo de pilha de IP: IPv4
    3. Clique em Concluir.
  7. Expanda Gerenciamento. No campo Script de inicialização, digite o script a seguir:

    #! /bin/bash
    apt-get update
    apt-get install apache2 -y
    a2ensite default-ssl
    a2enmod ssl
    # Retrieve the instance name from metadata
    vm_hostname="$(curl -H "Metadata-Flavor:Google" \
    http://metadata.google.internal/computeMetadata/v1/instance/name)"
    # Create an index file
    echo "Page served from: $vm_hostname" | \
    tee /var/www/html/index.html
    # Restart Apache to apply changes
    systemctl restart apache2' \
    
  8. Clique em Criar.

gcloud

  1. Criar um modelo de instância.

    gcloud compute instance-templates create INSTANCE_TEMPLATE_NAME \
        --region=us-west1 \
        --network=projects/PROJECT_B_ID/global/networks/lb-network \
        --subnet=projects/PROJECT_B_ID/regions/us-west1/subnetworks/lb-backend-subnet \
        --tags=load-balanced-backend \
        --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
        # Retrieve the instance name from metadata
        vm_hostname="$(curl -H "Metadata-Flavor:Google" \
        http://metadata.google.internal/computeMetadata/v1/instance/name)"
        # Create an index file
        echo "Page served from: $vm_hostname" | \
        tee /var/www/html/index.html
        # Restart Apache to apply changes
        systemctl restart apache2' \
        --project=PROJECT_B_ID
    

Criar um grupo gerenciado de instâncias

Console

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

    Acesse grupo de instâncias

  2. Selecione Criar grupo de instâncias.

  3. Nas opções, selecione Novo grupo gerenciado de instâncias (sem estado).

  4. Para o nome do grupo de instâncias, insira lb-backend.

  5. Na lista Modelo de instância, selecione o modelo de instância backend-template que você criou na etapa anterior.

  6. Na seção Local, selecione Única zona e insira os seguintes valores:

    • Em Região, selecione us-west1.

    • Em Zona, selecione us-west1-a.

  7. Na seção Escalonamento automático, insira os seguintes valores:

    • Em Modo de escalonamento automático, selecione Ativado: adicionar e remover instâncias para o grupo.

    • Em Número mínimo de instâncias, selecione 2.

    • Em Número máximo de instâncias, selecione 3.

  8. Na seção Mapeamento de portas, clique em Adicionar porta e insira os seguintes valores:

    • Em Nome da porta, insira http.

    • Em Número da porta, digite 80.

  9. Clique em Criar.

gcloud

  1. Crie um grupo de instâncias gerenciadas e selecione o modelo de instância que você criou na etapa anterior:

    gcloud compute instance-groups managed create INSTANCE_GROUP_NAME \
        --zone=us-west1-a \
        --size=2 \
        --template=INSTANCE_TEMPLATE_NAME \
        --project=PROJECT_B_ID
    
  2. Como adicionar uma porta nomeada ao grupo de instâncias:

    gcloud compute instance-groups set-named-ports INSTANCE_GROUP_NAME \
        --named-ports=http:80 \
        --zone=us-west1-a \
        --project=PROJECT_B_ID
    

Criar uma verificação de integridade

As verificações de integridade são testes que confirmam a disponibilidade dos back-ends. Crie uma verificação de integridade que use o protocolo HTTP e faça sondagens na porta 80. Posteriormente, você anexará essa verificação de integridade ao serviço de back-end referenciado pelo balanceador de carga.

Console

  1. No console Google Cloud , acesse a página Verificações de integridade do Compute Engine:

    Acessar "Verificações de integridade"

  2. Para o nome da verificação de integridade, insira lb-health-check.

  3. Defina o protocolo como HTTP.

  4. Clique em Criar.

gcloud

Crie uma verificação de integridade HTTP.

gcloud compute health-checks create http lb-health-check \
  --use-serving-port \
  --project=PROJECT_B_ID

Criar uma regra de firewall

Para as sondagens de verificação de integridade, crie uma regra de firewall de permissão de entrada no nível da rede, que, para fins deste exemplo, é lb-network. Essa regra de firewall permite que as sondagens de verificação de integridade alcancem suas instâncias de back-end. Este exemplo usa a seguinte regra de firewall:

  • fw-allow-health-check: uma regra de entrada, aplicável às instâncias cuja carga está sendo balanceada, que permite todo o tráfego TCP dos sistemas de verificação de integridade do Google Cloudem 130.211.0.0/22 e 35.191.0.0/16. Neste exemplo, usamos a tag de destino load-balanced-backend para identificar as instâncias a que ela se aplicará.

Console

  1. No console Google Cloud , acesse a página Políticas de firewall.

    Acesse as políticas de firewall

  2. Clique em Criar regra de firewall para criar a regra que permite conexões SSH de entrada na VM cliente:

    • Nome: fw-allow-health-check
    • Rede: lb-network
    • Direção do tráfego: entrada
    • Ação na correspondência: permitir
    • Destinos: tags de destino especificadas
    • Tags de meta: load-balanced-backend
    • Filtro de origem: intervalos IPv4
    • Intervalos IPv4 de origem: 130.211.0.0/22 e 35.191.0.0/16
    • Protocolos e portas:
      • Escolha Protocolos e portas especificados.
      • Marque a caixa de seleção tcp e insira 80 como o número da porta. Como prática recomendada, limite esta regra somente aos protocolos e portas que correspondem aos usados por sua verificação de integridade. Se você usar tcp:80 para o protocolo e a porta, Google Cloud poderá usar HTTP na porta 80 para entrar em contato com suas VMs, mas não poderá usar HTTPS na porta 443.
  3. Clique em Criar.

gcloud

  1. Crie a regra de firewall fw-allow-health-check para permitir verificações de integridadeGoogle Cloud . Neste exemplo, todo o tráfego TCP de sondagens de verificação de integridade é permitido. No entanto, é possível configurar um conjunto mais restrito de portas para atender às suas necessidades.

    gcloud compute firewall-rules create FIREWALL_RULE_NAME \
       --network=lb-network \
       --action=allow \
       --direction=ingress \
       --source-ranges=130.211.0.0/22,35.191.0.0/16 \
       --target-tags=load-balanced-backend \
       --rules=tcp \
       --project=PROJECT_B_ID
    

Criar um serviço de back-end

Crie um serviço de back-end global para distribuir o tráfego entre os back-ends. Como parte desta etapa, você precisa atribuir a verificação de integridade criada ao serviço de back-end e adicionar o grupo de instâncias como o back-end ao serviço de back-end.

Console

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

    Acessar o "Balanceamento de carga"

  2. Acesse a seção Back-ends.

  3. Clique em Criar serviço de back-end.

  4. Em Serviço de back-end global, clique no botão Criar ao lado dele.

  5. Para o nome do serviço de back-end, insira cross-ref-backend-service.

  6. Em Tipo de back-end, selecione Grupo de instâncias.

  7. Defina Protocolo como HTTP.

  8. No campo Porta nomeada, insira http. Esse é o mesmo nome de porta inserido ao criar o grupo gerenciado de instâncias.

  9. Para adicionar back-ends ao serviço de back-end, faça o seguinte:

    1. Na seção Back-ends, defina o Grupo de instâncias como lb-backend, que é o grupo de instâncias gerenciadas criado em uma etapa anterior.

    2. Em Números de portas, insira 80.

    3. Para adicionar o back-end, clique em Concluído. .

  10. Para adicionar uma verificação de integridade, na lista Verificação de integridade, selecione lb-health-check, que é a verificação de integridade criada anteriormente.

  11. Para criar o serviço de back-end, clique em Criar.

gcloud

  1. Crie um serviço de back-end global para distribuir o tráfego entre os back-ends:

    gcloud compute backend-services create BACKEND_SERVICE_NAME \
        --load-balancing-scheme=EXTERNAL_MANAGED \
        --protocol=HTTP \
        --port-name=http \
        --health-checks=HEALTH_CHECK_NAME \
        --global \
        --project=PROJECT_B_ID
    
  2. Adicione seu grupo de instâncias como back-end do serviço de back-end:

    gcloud compute backend-services add-backend BACKEND_SERVICE_NAME \
        --instance-group=INSTANCE_GROUP_NAME \
        --instance-group-zone=us-west1-a \
        --global \
        --project=PROJECT_B_ID
    

Configurar um bucket de back-end no projeto B

Para criar um bucket de back-end, faça o seguinte:

  1. Crie o bucket do Cloud Storage.
  2. Copie o conteúdo para o bucket.
  3. Torne o bucket acessível publicamente.
  4. Crie um bucket de back-end e o aponte para o bucket do Cloud Storage.

Criar um bucket do Cloud Storage

Console

  1. No Google Cloud console, acesse a página Buckets do Cloud Storage.

    Acessar buckets

  2. Clique em Criar.

  3. Na caixa Nomear seu bucket, digite um nome globalmente exclusivo que siga as diretrizes de nomenclatura.

  4. Clique em Escolha onde armazenar os dados.

  5. Defina o Tipo de local como Região.

  6. Na lista de regiões, selecione us-east1.

  7. Clique em Criar.

gcloud

  1. Crie um bucket na região us-east1 com o comando gcloud storage buckets create.

    gcloud storage buckets create gs://BUCKET_NAME \
        --default-storage-class=standard \
        --location=us-east1 \
        --uniform-bucket-level-access \
        --project=PROJECT_B_ID
    

Substitua a variável BUCKET_NAME pelo nome do bucket do Cloud Storage.

Copiar um arquivo gráfico para o bucket do Cloud Storage

Execute o comando a seguir no Cloud Shell, substituindo as variáveis de nome do bucket pelo nome exclusivo do bucket do Cloud Storage, para copiar o arquivo gráfico de um bucket público do Cloud Storage para a pasta images/ no seu próprio bucket do Cloud Storage:

gcloud storage cp gs://gcp-external-http-lb-with-bucket/three-cats.jpg gs://BUCKET_NAME/images/

Tornar o bucket do Cloud Storage publicamente legível.

Para tornar todos os objetos de um bucket legíveis para todos na Internet pública, conceda ao allUsers principal o papel Leitor de objetos do Storage (roles/storage.objectViewer).

Console

Para conceder acesso a todos os usuários para visualizar objetos nos seus buckets, repita o procedimento a seguir para cada bucket:

  1. No Google Cloud console, acesse a página Buckets do Cloud Storage.

    Acessar buckets

  2. Na lista de buckets, clique no nome do bucket que você quer tornar público.

  3. Selecione a guia Permissões na parte superior da página.

  4. Na seção Permissões, clique no botão Conceder acesso. A caixa de diálogo Conceder acesso vai aparecer.

  5. No campo Novos participantes, insira allUsers.

  6. No campo Selecionar um papel, insira Storage Object Viewer na caixa de filtro e selecione Visualizador de objetos do Storage nos resultados filtrados.

  7. Clique em Salvar.

  8. Clique em Permitir acesso público.

gcloud

Para conceder a todos os usuários acesso para visualizar objetos nos seus buckets, execute o comando buckets add-iam-policy-binding.

gcloud storage buckets add-iam-policy-binding gs://BUCKET_NAME --member=allUsers --role=roles/storage.objectViewer

Substitua as variáveis de nome do bucket pelos nomes exclusivos dos seus buckets do Cloud Storage.

Criar um bucket de back-end

Os buckets de back-end servem como um wrapper para os buckets do Cloud Storage criados anteriormente. Eles direcionam o tráfego recebido para os buckets do Cloud Storage.

Console

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

    Acessar o "Balanceamento de carga"

  2. Acesse a seção Back-ends.

  3. Clique em Criar bucket de back-end.

  4. Insira um nome para o bucket do back-end.

  5. Selecione um bucket do Cloud Storage para apontar seu bucket de back-end.

  6. Clique em Criar.

gcloud

Crie um bucket de back-end com o comando gcloud compute backend-buckets create no projeto B.

gcloud compute backend-buckets create BACKEND_BUCKET_NAME \
  --gcs-bucket-name=BUCKET_NAME \
  --project=PROJECT_B_ID

Configurar os componentes de front-end do balanceador de carga no projeto A

Esta seção mostra como configurar os seguintes componentes de front-end do balanceador de carga no projeto A:

  • Endereço IP
  • Certificado SSL
  • Mapa de URL
  • Proxy de destino
  • Regra de encaminhamento

Reserve o endereço IP do balanceador de carga

Reserve um endereço IP externo estático global que possa ser atribuído à regra de encaminhamento do balanceador de carga.

Console

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

    Acessar endereços IP

  2. Clique em Reservar endereço IP estático externo.

  3. Em Nome, insira cross-ref-ip-address.

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

  5. Defina Versão IP como IPv4.

  6. Configure Tipo como Global.

  7. Clique em Reservar.

gcloud

Crie um endereço IP externo estático global.

gcloud compute addresses create IP_ADDRESS_NAME \
    --ip-version=IPV4 \
    --network-tier=PREMIUM \
    --global \
    --project=PROJECT_A_ID

Configurar um recurso de certificado SSL

Neste exemplo, é possível usar HTTP ou HTTPS como protocolo de solicitação e resposta entre o cliente e o balanceador de carga. Para criar um balanceador de carga HTTPS, é necessário adicionar um recurso de certificado SSL ao front-end do balanceador de carga.

Crie um recurso de certificado SSL, conforme descrito na documentação a seguir:

Recomendamos o uso de um certificado gerenciado pelo Google.

Depois de criar o certificado, anexe-o ao proxy de destino HTTPS.

Configurar os componentes de um balanceador de carga de aplicativo externo global

Console

Iniciar a configuração

  1. No console 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 externo global e clique em Próxima.
  7. Clique em Configurar.

Configuração básica

  1. Insira um nome para o balanceador de carga.
  2. Mantenha a página aberta para continuar.

Configure o front-end

Para HTTP:

  1. Clique em Configuração de front-end.
  2. Insira um nome para a regra de encaminhamento.
  3. Defina Protocolo como HTTP.
  4. Selecione o Endereço IP criado em Reservar o endereço IP do balanceador de carga.
  5. Defina a Porta como 80.
  6. Clique em Concluído.

Para HTTPS:

Se você usa o HTTPS entre o cliente e o balanceador de carga, um ou mais recursos de certificado SSL serão necessários para configurar o proxy. Saiba mais sobre como criar recursos de certificado SSL em Certificados SSL.

  1. Clique em Configuração de front-end.
  2. Insira um nome para a regra de encaminhamento.
  3. No campo Protocolo, selecione HTTPS (includes HTTP/2).
  4. Selecione o Endereço IP criado em Reservar o endereço IP do balanceador de carga.
  5. Certifique-se de que Porta esteja definida como 443, para permitir tráfego HTTPS.
  6. Clique na lista Certificate.
  7. Selecione o nome do certificado SSL que você criou anteriormente.
  8. Clique em Concluído.

Configure o back-end

  1. Clique em Configuração de back-end.
  2. Clique em Serviços de back-end entre projetos.
  3. Em ID do projeto, insira o ID do projeto para o projeto B.
  4. Na lista Selecionar serviços de back-end, selecione o serviço de back-end do projeto B que você quer usar.
  5. Clique em OK.

Configurar as regras de roteamento

  1. Clique em Regras de roteamento.

  2. Em "Modo", selecione Regra avançada de host e caminho.

  3. Selecione Adicionar regra de host e caminho.

  4. No campo Hosts, insira * para corresponder a todos os nomes de host.

  5. Na seção Correspondência de patches, insira a seguinte configuração YAML.

    defaultService: projects/PROJECT_B_ID/global/backendServices/BACKEND_SERVICE_NAME
    name: PATH_MATCHER_NAME
    pathRules:
    - paths:
      - /images/*
      service: projects/PROJECT_B_ID/global/backendBuckets/BACKEND_BUCKET_NAME
    

    Neste exemplo, o Path Matcher é composto por uma regra de caminho e um serviço padrão. A regra de caminho encaminha todas as solicitações para /images/* a um bucket de back-end. Todas as outras solicitações são roteadas para o serviço de back-end padrão.

  6. Clique em Concluído.

Para mais informações sobre o gerenciamento de tráfego, consulte Visão geral do gerenciamento de tráfego.

Revise e finalize a configuração

  1. Revise os diferentes componentes do balanceador de carga que você configurou nas etapas anteriores. A seção Back-ends faz referência ao serviço de back-end e ao bucket de back-end.

  2. Clique em Criar.

gcloud

Para criar os componentes de balanceamento de carga mencionados acima usando a CLI gcloud, siga estas etapas:

  1. Crie um mapa de URL com o comando gcloud compute url-maps create.

    gcloud compute url-maps create URL_MAP_NAME \
      --default-service=projects/PROJECT_B_ID/global/backendServices/BACKEND_SERVICE_NAME \
      --global \
      --project=PROJECT_A_ID
    
  2. Adicione uma correspondência de caminho para o mapa de URL. A correspondência de caminho, neste exemplo, é composta por uma regra de caminho e um serviço padrão. A regra de caminho encaminha todas as solicitações para /images/* para um bucket de back-end. Todas as outras solicitações são roteadas para o serviço de back-end padrão.

    gcloud compute url-maps add-path-matcher URL_MAP_NAME \
      --path-matcher-name=PATH_MATCHER_NAME \
      --default-service=projects/PROJECT_B_ID/global/backendServices/BACKEND_SERVICE_NAME  \
      --backend-bucket-path-rules=/images/*=projects/PROJECT_B_ID/global/backendBuckets/BACKEND_BUCKET_NAME
    
  3. Crie um proxy de destino com o comando gcloud compute target-http-proxies create.

    Para tráfego HTTP, crie um proxy HTTP de destino para encaminhar solicitações ao mapa de URL:

    gcloud compute target-http-proxies create TARGET_HTTP_PROXY_NAME \
      --url-map=URL_MAP_NAME \
      --global \
      --project=PROJECT_A_ID
    

    Para tráfego HTTPS, crie um proxy HTTPS de destino para encaminhar solicitações ao mapa de URL. O proxy é a parte do balanceador de carga que armazena o certificado SSL de um balanceador de carga HTTPS. Depois de criar o certificado, você pode anexá-lo ao proxy de destino HTTPS.

    gcloud compute target-https-proxies create TARGET_HTTPS_PROXY_NAME \
      --url-map=URL_MAP_NAME \
      --ssl-certificates=CERTIFICATE_NAME \
      --global \
      --project=PROJECT_A_ID
    

    Substitua CERTIFICATE_NAME pelo nome do certificado SSL.

  4. Crie uma regra de encaminhamento global com o comando gcloud compute forwarding-rules create.

    Para o tráfego HTTP, crie as regras de encaminhamento globais para encaminhar as solicitações recebidas para o proxy de destino HTTP:

    gcloud compute forwarding-rules create HTTP_FORWARDING_RULE_NAME \
      --load-balancing-scheme=EXTERNAL_MANAGED \
      --address=IP_ADDRESS_NAME \
      --global \
      --target-http-proxy=TARGET_HTTP_PROXY_NAME \
      --ports=80 \
      --project=PROJECT_A_ID
    

    Para o tráfego HTTPS, crie as regras de encaminhamento globais para encaminhar as solicitações recebidas para o proxy de destino HTTPS:

    gcloud compute forwarding-rules create HTTPS_FORWARDING_RULE_NAME \
      --load-balancing-scheme=EXTERNAL_MANAGED \
      --address=IP_ADDRESS_NAME \
      --global \
      --target-https-proxy=TARGET_HTTPS_PROXY_NAME \
      --ports=443 \
      --project=PROJECT_A_ID
    

Testar o balanceador de carga

Pode levar alguns minutos para que o balanceador de carga seja configurado. Depois disso, você poderá enviar uma solicitação para ele. Neste exemplo, a solicitação é enviada para a regra de encaminhamento HTTP do balanceador de carga.

Anote o endereço IP da regra de encaminhamento HTTP do balanceador de carga.

gcloud compute forwarding-rules describe HTTP_FORWARDING_RULE_NAME \
    --global

Se você apontar o navegador para http://IP_ADDRESS, a solicitação será roteada para o serviço de back-end, que retorna uma página com informações mínimas sobre a instância de back-end.

No entanto, se você apontar o navegador para http://IP_ADDRESS/images/three-cats.jpg, a solicitação para /images/* será roteada para o bucket de back-end, que retorna o arquivo gráfico.

A seguir