Configure um Application Load Balancer externo global com um serviço de back-end e um contentor de back-end entre projetos

Este documento mostra como criar um Application Load Balancer externo global com um serviço de back-end e um contentor de back-end localizados num projeto diferente daquele onde estão localizados o front-end do Load Balancer e o mapa de URLs. Este modelo de implementação é conhecido como referência de serviços entre projetos.

O exemplo usado neste documento não usa um ambiente de VPC partilhada para configurar referências de serviços entre projetos. Para saber como configurar referências de serviços entre projetos num ambiente de VPC partilhada, consulte o artigo Configure um Application Load Balancer externo global com a VPC partilhada.

Antes de começar

Certifique-se de que a configuração cumpre os seguintes pré-requisitos.

Funções e autorizações de IAM necessárias

Para seguir este guia, tem de ter as seguintes funções do IAM:

Tarefa Função necessária
Criar um projeto Função de criador do projeto (roles/resourcemanager.projectCreator)
Crie recursos de computação Função de administrador de rede de computação (roles/compute.networkAdmin)
Crie contentores do Cloud Storage Função de administrador de objetos de armazenamento (roles/storage.objectAdmin)

Use um recurso de um projeto diferente

(Neste exemplo, o projeto A faz referência ao serviço de back-end e ao contentor de back-end localizados no projeto B.)

Neste exemplo, um administrador do projeto B tem de conceder a função de utilizador dos serviços de equilibrador de carga do Compute () (roles/compute.loadBalancerServiceUser) ao administrador do projeto A para permitir o acesso ao serviço de back-end e ao contentor de back-end no projeto B. Esta função pode ser concedida ao nível do projeto ou ao nível do recurso.

Para saber como atribuir esta função, consulte o artigo Conceda autorizações ao administrador do Compute Load Balancer para usar o serviço de back-end.

Crie Trusted Cloud by S3NS projetos

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

Consola

Para criar um novo projeto, faça o seguinte:

  1. Aceda à página Gerir recursos na Trusted Cloud consola.

    Aceda a Gerir recursos

    Os passos restantes aparecem na Trusted Cloud consola.

  2. Na lista pendente Selecionar organização na parte superior da página, selecione o recurso de organização no qual quer criar um projeto. Se for um utilizador da avaliação gratuita, ignore este passo, uma vez que esta lista não é apresentada.
  3. Clique em Criar projeto.
  4. Na janela Novo projeto apresentada, introduza um nome do projeto e selecione uma conta de faturação, conforme aplicável. Um nome de projeto só pode conter letras, números, aspas simples, hífenes, espaços ou pontos de exclamação e tem de ter entre 4 e 30 carateres.
  5. Introduza a organização principal ou o recurso de pasta na caixa Localização. Esse recurso vai ser o principal hierárquico do novo projeto. Se Nenhuma organização for uma opção, pode selecioná-la para criar o seu novo projeto como o nível superior da sua própria hierarquia de recursos.
  6. Quando terminar de introduzir os detalhes do novo projeto, clique em Criar.

gcloud

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

    Activate Cloud Shell

    At the bottom of the Trusted 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 ID do projeto que quer criar. Um ID do projeto tem de começar com uma letra minúscula e pode conter apenas letras ASCII, dígitos e hífenes, e tem de ter entre 6 e 30 carateres.

Vista geral da configuração

Conforme representado no diagrama seguinte, o front-end e o mapa de URLs de um Application Load Balancer externo global são criados num projeto diferente do serviço de back-end e do contentor de back-end do Load Balancer. Este tipo de implementação entre projetos não usa um ambiente de VPC partilhada.

Nesta configuração, o mapa de URLs encaminha pedidos de conteúdo estático (/images/*) para um contentor de back-end, enquanto todos os outros pedidos são encaminhados para o serviço de back-end predefinido.

Um Application Load Balancer interno entre regiões envia tráfego para um serviço de back-end do Cloud Storage e um contentor de back-end localizados num projeto diferente.
Implementação em vários projetos (clique para aumentar).

A tabela seguinte oferece uma vista geral dos recursos criados no projeto A e no projeto B. O front-end e o mapa de URLs 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 do URL
  • Proxy de destino
  • Regra de encaminhamento
  • Rede da VPC
  • Sub-rede
  • Serviço de back-end

    O serviço de back-end faz referência às instâncias de back-end num grupo de instâncias. Os seguintes recursos são usados para criar as instâncias de back-end. Para efeitos deste exemplo, as instâncias de back-end são criadas numa sub-rede denominada lb-backend-subnet na região us-west1.

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

Nas secções seguintes, vamos configurar os diferentes recursos indicados na tabela anterior, começando pela configuração de uma rede VPC e de uma sub-rede para as VMs de back-end do equilibrador de carga no projeto B.

Configure 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. A rede é uma rede VPC no modo personalizado denominada lb-network.

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

Consola

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

    Aceda a redes de VPC

  2. Clique em Criar rede de VPC.

  3. Em Nome, introduza lb-network.

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

  5. Na secção Nova sub-rede, introduza 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, denominada 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 lb-networkrede de VPC 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
    

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

Para configurar um serviço de back-end, tem de fazer o seguinte:

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

Crie um modelo de instância

O precursor da criação de um grupo de instâncias geridas é a criação de um modelo de instância, que é um recurso que pode usar para criar instâncias de máquinas virtuais (VMs). O tráfego dos clientes é equilibrado em carga para VMs num grupo de instâncias. O grupo de instâncias gerido fornece VMs que executam os servidores de back-end de um balanceador de carga de aplicações externo. Neste exemplo, os back-ends servem os respetivos nomes de anfitrião.

Consola

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

    Aceda a Modelos de instâncias

  2. Clique em Criar modelo de instância.

  3. Em Nome, introduza backend-template.

  4. Na secção Disco de arranque, certifique-se de que o disco de arranque está definido para uma imagem do Debian, como Debian GNU/Linux 12 (bookworm). Clique em Alterar para alterar a imagem, se necessário.

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

  6. Expanda Rede e configure os seguintes campos:

    1. Para etiquetas de rede, introduza load-balanced-backend.
    2. Na secção Interfaces de rede, configure os seguintes campos:
      • Rede: lb-network
      • Subnet: lb-backend-subnet
      • Tipo de pilha de IP: IPv4
    3. Clique em Concluído
  7. 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
    # 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. Crie 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
    

Crie um grupo de instâncias geridas

Consola

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

    Aceda a Grupos de instâncias

  2. Clique em Criar grupo de instâncias.

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

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

  5. Na lista Modelo de instância, selecione o modelo de instância backend-template que criou no passo anterior.

  6. Na secção Localização, selecione Zona única e introduza os seguintes valores:

    • Para Região, selecione us-west1.

    • Para Zona, selecione us-west1-a.

  7. Na secção Ajuste automático de escala, introduza os seguintes valores:

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

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

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

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

    • Em Nome da portabilidade, introduza http.

    • Em Número da porta, introduza 80.

  9. Clique em Criar.

gcloud

  1. Crie um grupo de instâncias gerido e selecione o modelo de instância que criou no passo 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. Adicione uma porta com nome 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
    

Crie uma verificação de funcionamento

As verificações de funcionamento são testes que confirmam a disponibilidade dos back-ends. Crie uma verificação de funcionamento que use o protocolo HTTP e sondas na porta 80. Mais tarde, vai anexar esta verificação de estado ao serviço de back-end referenciado pelo balanceador de carga.

Consola

  1. Na Trusted Cloud consola, aceda à página Compute Engine Verificações de estado.

    Aceda às verificações de saúde

  2. Para o nome da verificação de estado, introduza lb-health-check.

  3. Defina o protocolo como HTTP.

  4. Clique em Criar.

gcloud

Crie uma verificação de funcionamento de HTTP.

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

Crie uma regra de firewall

Para as sondas de verificação de estado, tem de criar uma regra de firewall de permissão de entrada ao nível da rede, que, para efeitos deste exemplo, é lb-network. Esta regra de firewall permite que as sondas de verificação de estado alcancem as 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 com balanceamento de carga, que permite todo o tráfego TCP dos sistemas de verificação de funcionamento em Trusted Cloude 35.191.0.0/16.130.211.0.0/22 Este exemplo usa a etiqueta de destino load-balanced-backend para identificar as instâncias às quais deve ser aplicada.

Consola

  1. Na Trusted 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 que permite ligações SSH de entrada na VM do cliente:

    • Nome: fw-allow-health-check
    • Rede: lb-network
    • Direção do tráfego: entrada
    • Ação na correspondência: Permitir
    • Objetivos: etiquetas de destino especificadas
    • Etiquetas de segmentação: load-balanced-backend
    • Filtro de origem: intervalos IPv4
    • Intervalos de IPv4 de origem: 130.211.0.0/22 e 35.191.0.0/16
    • Protocolos e portas:
      • Escolha Protocolos e portas especificados.
      • Selecione a caixa de verificação TCP e, de seguida, introduza 80 para o número da porta. Como prática recomendada, limite esta regra apenas aos protocolos e às portas que correspondam aos usados pela sua verificação de estado. Se usar tcp:80 para o protocolo e a porta, Trusted Cloud by S3NS pode usar HTTP na porta 80 para contactar as suas VMs, mas não pode usar HTTPS na porta 443 para as contactar.
  3. Clique em Criar.

gcloud

  1. Crie a regra de firewall fw-allow-health-check para permitir verificações de funcionamentoTrusted Cloud . Este exemplo permite todo o tráfego TCP de sondas de verificação de estado. No entanto, pode configurar um conjunto mais restrito de portas para satisfazer as 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
    

Crie um serviço de back-end

Crie um serviço de back-end global para distribuir o tráfego entre back-ends. Como parte deste passo, tem de atribuir a verificação de estado que criou ao serviço de back-end e adicionar o grupo de instâncias como back-end ao serviço de back-end.

Consola

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

    Aceda a Balanceamento de carga

  2. Aceda à secção Back-ends.

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

  4. Para o Serviço de back-end global, clique no botão Criar junto ao mesmo.

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

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

  7. Defina o Protocolo como HTTP.

  8. No campo Porta com nome, introduza http. Este é o mesmo nome da porta que introduziu ao criar o grupo de instâncias gerido.

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

    1. Na secção Back-ends, defina o Grupo de instâncias como lb-backend, que é o grupo de instâncias gerido que criou num passo anterior.

    2. Para Transferir números, introduza 80.

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

  10. Para adicionar uma verificação de funcionamento, na lista Verificação de funcionamento, selecione lb-health-check, que é a verificação de funcionamento que criou 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 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 o seu grupo de instâncias como back-end ao 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
    

Configure um contentor de back-end no projeto B

Para criar um bucket de back-end, tem de fazer o seguinte:

  1. Crie o contentor do Cloud Storage.
  2. Copie conteúdo para o contentor.
  3. Tornar o contentor acessível publicamente.
  4. Crie um contentor de back-end e associe-o ao contentor do Cloud Storage.

Crie um contentor do Cloud Storage

Consola

  1. Na Trusted Cloud consola, aceda à página Recipientes do Cloud Storage.

    Aceda a Recipientes

  2. Clique em Criar.

  3. Na caixa Dê um nome ao seu contentor, introduza um nome globalmente exclusivo que siga as diretrizes de nomenclatura.

  4. Clique em Escolher onde quer armazenar os seus dados.

  5. Defina o Tipo de localização como Região.

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

  7. Clique em Criar.

gcloud

  1. Crie um contentor 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 contentor do Cloud Storage.

Copie um ficheiro gráfico para o seu contentor do Cloud Storage

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

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

Torne o seu contentor do Cloud Storage publicamente legível

Para tornar todos os objetos num contentor legíveis para todos na Internet pública, conceda ao principal allUsers a função de leitor de objetos do armazenamento (roles/storage.objectViewer).

Consola

Para conceder a todos os utilizadores acesso à visualização de objetos nos seus contentores, repita o seguinte procedimento para cada contentor:

  1. Na Trusted Cloud consola, aceda à página Recipientes do Cloud Storage.

    Aceda a Recipientes

  2. Na lista de contentores, clique no nome do contentor que quer tornar público.

  3. Selecione o separador Permissões junto à parte superior da página.

  4. Na secção Autorizações, clique no botão Conceder acesso. É apresentada a caixa de diálogo Conceder acesso.

  5. No campo Novos principais, introduza allUsers.

  6. No campo Selecionar uma função, introduza Storage Object Viewer na caixa de filtro e selecione Visualizador de objetos do Storage nos resultados filtrados.

  7. Clique em Guardar.

  8. Clique em Permitir acesso público.

gcloud

Para conceder a todos os utilizadores acesso à visualização de objetos nos seus contentores, 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 do nome do contentor pelos nomes únicos dos seus contentores do Cloud Storage.

Crie um contentor de back-end

Os contentores de back-end funcionam como um wrapper para os contentores do Cloud Storage que criou anteriormente. Direcionam o tráfego recebido para contentores do Cloud Storage.

Consola

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

    Aceda a Balanceamento de carga

  2. Aceda à secção Back-ends.

  3. Clique em Criar contentor de back-end.

  4. Introduza um nome para o seu contentor de back-end.

  5. Selecione um contentor do Cloud Storage para direcionar o seu contentor de back-end.

  6. Clique em Criar.

gcloud

Crie um contentor 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

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

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

  • Endereço IP
  • Certificado SSL
  • Mapa do 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.

Consola

  1. Na Trusted Cloud consola, aceda à página de endereços IP da VPC.

    Aceda a Endereços IP

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

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

  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

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

Configure um recurso de certificado SSL

Neste exemplo, pode usar HTTP ou HTTPS como o protocolo de pedido e resposta entre o cliente e o balanceador de carga. Para criar um balanceador de carga HTTPS, tem de adicionar um recurso de certificado SSL ao front-end do balanceador de carga.

Crie um recurso de certificado SSL conforme descrito na seguinte documentação:

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

Depois de criar o certificado, pode anexá-lo ao proxy de destino HTTPS.

Configure os componentes de um Application Load Balancer externo global

Consola

Selecione o tipo de balanceador de carga

  1. Na Trusted 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

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

Configure a interface

Para HTTP:

  1. Clique em Configuração do front-end.
  2. Introduza um nome para a regra de encaminhamento.
  3. Defina o Protocolo como HTTP.
  4. Selecione o endereço IP que criou em Reserve o endereço IP do equilibrador de carga.
  5. Defina a Porta para 80.
  6. Clique em Concluído.

Para HTTPS:

Se estiver a usar o protocolo HTTPS entre o cliente e o balanceador de carga, precisa de um ou mais recursos de certificado SSL para configurar o proxy. Para obter informações sobre como criar recursos de certificados SSL, consulte o artigo Certificados SSL.

  1. Clique em Configuração do front-end.
  2. Introduza um nome para a regra de encaminhamento.
  3. No campo Protocolo, selecione HTTPS (includes HTTP/2).
  4. Selecione o endereço IP que criou em Reserve o endereço IP do equilibrador de carga.
  5. Certifique-se de que a Porta está definida como 443 para permitir o tráfego HTTPS.
  6. Clique na lista Certificado.
  7. Selecione o nome do certificado SSL que 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. Para o ID do projeto, introduza 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 quer usar.
  5. Clique em OK.

Configure as regras de encaminhamento

  1. Clique em Regras de encaminhamento.

  2. Para o modo, selecione Regra de anfitrião e caminho avançada.

  3. Selecione Adicionar regra de anfitrião e caminho.

  4. No campo Anfitriões, introduza * para corresponder a todos os nomes de anfitriões.

  5. Na secção Patch matcher, introduza 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, a correspondência de caminhos é composta por uma regra de caminho e um serviço predefinido. A regra de caminho encaminha todos os pedidos para /images/* para um contentor de back-end. Todos os outros pedidos são encaminhados para o serviço de back-end predefinido.

  6. Clique em Concluído.

Para ver informações sobre a gestão do tráfego, consulte o artigo Vista geral da gestão do tráfego.

Reveja e finalize a configuração

  1. Reveja os diferentes componentes do equilibrador de carga que configurou nos passos anteriores. Vai reparar que a secção Back-ends tem referência ao serviço de back-end e ao contentor de back-end.

  2. Clique em Criar.

gcloud

Para criar os componentes de equilíbrio de carga mencionados acima através da CLI gcloud, siga estes passos:

  1. Crie um mapa de URLs 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 um correspondente de caminho para o mapa de URLs. Neste exemplo, o correspondente de caminhos é composto por uma regra de caminho e um serviço predefinido. A regra de caminho encaminha todos os pedidos para /images/* para um contentor de back-end. Todos os outros pedidos são encaminhados para o serviço de back-end predefinido.

    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 o tráfego HTTP, crie um proxy HTTP de destino para encaminhar pedidos para o mapa de URLs:

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

    Para o tráfego HTTPS, crie um proxy HTTPS de destino para encaminhar pedidos para o mapa de URLs. O proxy é a parte do balanceador de carga que contém o certificado SSL para um balanceador de carga HTTPS. Depois de criar o certificado, 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 os pedidos recebidos para o proxy HTTP de destino:

    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 os pedidos recebidos para o proxy HTTPS de destino:

    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
    

Teste o balanceador de carga

A configuração do equilibrador de carga pode demorar alguns minutos. Depois, pode enviar um pedido ao equilibrador de carga. Neste exemplo, o pedido é enviado para a regra de encaminhamento HTTP do balanceador de carga.

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

gcloud compute forwarding-rules describe HTTP_FORWARDING_RULE_NAME \
    --global

Se direcionasse o navegador para http://IP_ADDRESS, o pedido seria encaminhado para o serviço de back-end, que devolve uma página com informações mínimas sobre a instância de back-end.

No entanto, se direcionasse o navegador para http://IP_ADDRESS/images/three-cats.jpg, o pedido para /images/* é encaminhado para o contentor de back-end, que devolve o ficheiro gráfico.

O que se segue?