Configurar um balanceador de carga de aplicativo interno regional com buckets do Cloud Storage em um ambiente de VPC compartilhada

Neste documento, mostramos dois exemplos de configurações para configurar um regional internal Application Load Balancer em um ambiente de VPC compartilhada com buckets do Cloud Storage:

  • O primeiro exemplo cria todos os componentes e back-ends do balanceador de carga no projeto de serviço.
  • O segundo exemplo cria os componentes de front-end e o mapa de URL do balanceador de carga em um projeto de serviço, enquanto o bucket de back-end e os buckets do Cloud Storage do balanceador de carga são criados em um projeto de serviço diferente.

Os dois exemplos exigem a mesma configuração inicial para conceder as funções necessárias e configurar uma VPC compartilhada antes de começar a criar balanceadores de carga.

Para mais informações sobre outras arquiteturas de VPC compartilhada válidas, consulte Arquiteturas de VPC compartilhada.

Se você não quiser usar uma rede VPC compartilhada, consulte Configurar um regional internal Application Load Balancer com buckets do Cloud Storage.

Antes de começar

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

Criar projetos do Google Cloud

Crie Google Cloud projetos para um host e dois serviços.

Funções exigidas

Para receber as permissões necessárias para configurar um regional internal Application Load Balancer em um ambiente de VPC compartilhada com buckets do Cloud Storage, peça ao administrador para conceder a você os seguintes papéis do IAM:

Para mais informações sobre a concessão de papéis, consulte Gerenciar o acesso a projetos, pastas e organizações.

Também é possível conseguir as permissões necessárias usando papéis personalizados ou outros papéis predefinidos.

Configurar um ambiente de VPC compartilhada

Para configurar um ambiente de VPC compartilhada, siga estas etapas no projeto host:

  1. Configure a rede VPC no projeto host.
  2. Configure a sub-rede somente proxy no projeto host.
  3. Configure uma regra de firewall no projeto host.
  4. Configure a VPC compartilhada no projeto host.

Não é necessário realizar as etapas desta seção sempre que você quiser criar um novo balanceador de carga. No entanto, é preciso garantir que você tenha acesso aos recursos descritos aqui antes de continuar criando o balanceador de carga.

Este exemplo usa a seguinte rede VPC, região e sub-rede somente proxy:

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

  • Sub-rede para o balanceador de carga. uma sub-rede chamada subnet-us na região us-east1 usa 10.1.2.0/24 para o intervalo de IP primário.

  • Sub-rede para proxies Envoy. Uma sub-rede chamada proxy-only-subnet-us na região us-east1 usa 10.129.0.0/23 como o intervalo de IP principal.

Configurar uma VPC para o projeto host

Configure uma VPC de modo personalizado para o projeto host e crie uma sub-rede na mesma região em que você precisa configurar a regra de encaminhamento dos balanceadores de carga.

Não é necessário realizar essa etapa sempre que você quiser criar um novo balanceador de carga. Você só precisa garantir que o projeto de serviço tenha acesso a uma sub-rede na rede VPC compartilhada (além da sub-rede somente proxy).

Console

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

    Acessar redes VPC

  2. Clique em Criar rede VPC.

  3. No campo Nome, use lb-network.

  4. Em Modo de criação da sub-rede, selecione Personalizado.

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

    1. No campo Nome, use subnet-us.
    2. Na lista Região, selecione us-east1.
    3. No campo Intervalo IPv4, digite 10.1.2.0/24.
    4. Clique em Concluído.
  6. 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=HOST_PROJECT_ID
    

    Substitua HOST_PROJECT_ID pelo Google Cloud ID do projeto atribuído ao projeto ativado como um projeto host em um ambiente de VPC compartilhada.

  2. Crie uma sub-rede na rede VPC lb-network na região us-east1 com o comando gcloud compute networks subnets create.

    gcloud compute networks subnets create subnet-us \
        --network=lb-network \
        --range=10.1.2.0/24 \
        --region=us-east1 \
        --project=HOST_PROJECT_ID
    

Configurar a sub-rede somente proxy no projeto host

Uma sub-rede somente proxy fornece um conjunto de endereços IP que o Google Cloud usa para executar proxies Envoy em seu nome. Os proxies encerram as conexões do cliente e criam novas conexões com os back-ends.

Essa sub-rede somente proxy é usada por todos os balanceadores de carga regionais baseados no Envoy que estão na mesma região que a rede VPC. Só pode haver uma sub-rede somente proxy ativa para uma determinada finalidade, por região e por rede. Neste exemplo, criamos uma sub-rede somente proxy na região us-east1.

Console

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

    Acessar redes VPC

  2. Clique no nome da rede VPC que você criou.

  3. Na guia Sub-redes, clique em Adicionar sub-rede e forneça as seguintes informações:

    1. No campo Nome, use proxy-only-subnet-us.
    2. Na lista Região, selecione us-east1.
    3. Em Finalidade, selecione Regional Managed Proxy.
    4. No campo Intervalo IPv4, digite 10.129.0.0/23.
  4. Clique em Adicionar.

gcloud

  • Crie uma sub-rede somente proxy na região us-east1 com o comando gcloud compute networks subnets create.

    gcloud compute networks subnets create proxy-only-subnet-us \
        --purpose=REGIONAL_MANAGED_PROXY \
        --role=ACTIVE \
        --region=us-east1 \
        --network=lb-network \
        --range=10.129.0.0/23 \
        --project=HOST_PROJECT_ID
    

Configurar uma regra de firewall no projeto host

Este exemplo usa a regra de firewall de entrada fw-allow-ssh, que permite a conectividade SSH de entrada na porta TCP 22 de qualquer endereço. É possível escolher um intervalo de IP de origem mais restritivo para essa regra. Por exemplo, é possível especificar apenas os intervalos de IP do sistema do qual você inicia sessões SSH. Este exemplo usa a tag de destino allow-ssh para identificar as máquinas virtuais (VMs) às quais a regra de firewall se aplica. Sem essas regras de firewall, a regra padrão de negação de entrada bloqueia o tráfego que chega para as instâncias de back-end.

Console

  1. No console do 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 as verificações de integridade doGoogle Cloud .

  3. Forneça as seguintes informações:

    1. No campo Nome, use fw-allow-ssh.
    2. Na lista Rede, selecione lb-network.
    3. Em Direção de tráfego, selecione Entrada.
    4. Em Ação se houver correspondência, selecione Permitir.
    5. Na lista Destinos, selecione Tags de destino especificadas.
    6. No campo Tags de destino, insira allow-ssh.
    7. Na lista Filtro de origem, selecione Intervalos IPv4.
    8. No campo Intervalos IPv4 de origem, insira 0.0.0.0/0.
    9. Em Protocolos e portas, selecione Protocolos e portas especificados.
    10. Marque a caixa de seleção TCP e insira 22 como o número da porta.
  4. Clique em Criar.

gcloud

  • Crie a regra de firewall fw-allow-ssh que permita a conectividade SSH para VMs com a tag de rede allow-ssh. Quando você omite source-ranges, oGoogle Cloud interpreta a regra como sendo qualquer origem.

    gcloud compute firewall-rules create fw-allow-ssh \
        --network=lb-network \
        --action=allow \
        --direction=ingress \
        --target-tags=allow-ssh \
        --rules=tcp:22 \
        --project=HOST_PROJECT_ID
    

Configurar a VPC compartilhada no projeto host

Ative um projeto host da VPC compartilhada e anexe projetos de serviço a ele para que eles possam usar a rede VPC compartilhada. Para configurar a VPC compartilhada no projeto host, consulte as seguintes páginas:

  1. Ativar um projeto host.
  2. Anexar um projeto de serviço.

Depois de concluir as etapas anteriores, siga uma destas configurações:

Configurar um balanceador de carga no projeto de serviço

Este exemplo cria um regional internal Application Load Balancer em que todos os componentes de balanceamento de carga (regra de encaminhamento, proxy de destino, mapa de URL e bucket de back-end) e os buckets do Cloud Storage são criados no projeto de serviço.

Os recursos de rede do regional internal Application Load Balancer, como a sub-rede somente proxy, são criados no projeto host.

Figura 1. Balanceador de carga HTTP externo regional em um ambiente de VPC compartilhada com buckets do Cloud Storage
Figura 1. Balanceador de carga de aplicativo interno regional em um ambiente de VPC compartilhada com buckets do Cloud Storage

Nesta seção, mostramos como configurar o balanceador de carga e os back-ends.

Nos exemplos desta página, é definido explicitamente um endereço IP reservado para a regra de encaminhamento do regional internal Application Load Balancer, em vez de permitir que um endereço IP temporário seja alocado. Como prática recomendada, reserve endereços IP para regras de encaminhamento.

Configurar os buckets do Cloud Storage

O processo de configuração dos buckets do Cloud Storage é o seguinte:

  1. Crie os buckets do Cloud Storage.
  2. Copie conteúdo para os buckets.
  3. Torne os buckets publicamente legíveis.

Criar buckets do Cloud Storage

Neste exemplo, você cria dois buckets do Cloud Storage na região us-east1.

Console

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

    Acessar buckets

  2. Clique em Criar.

  3. Na seção Começar, insira 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.

  8. Clique em Buckets para voltar à página Buckets do Cloud Storage. Use as instruções anteriores para criar um segundo bucket na região us-east1.

gcloud

  • Crie os buckets na região us-east1 com o comando gcloud storage buckets create.

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

    Substitua:

    • BUCKET1_NAME: o nome do seu primeiro bucket do Cloud Storage
    • BUCKET2_NAME: o nome do seu segundo bucket do Cloud Storage
    • SERVICE_PROJECT_ID: o Google Cloud ID do projeto atribuído ao projeto de serviço

Copiar conteúdo para seus buckets do Cloud Storage

Para preencher os buckets do Cloud Storage, copie um arquivo gráfico de um bucket público do Cloud Storage para seus próprios buckets do Cloud Storage.

gcloud storage cp gs://gcp-external-http-lb-with-bucket/three-cats.jpg gs://BUCKET1_NAME/love-to-purr/
gcloud storage cp gs://gcp-external-http-lb-with-bucket/two-dogs.jpg gs://BUCKET2_NAME/love-to-fetch/

Tornar os buckets do Cloud Storage publicamente legíveis

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 console do Google Cloud , acesse a página Buckets do Cloud Storage.

    Acessar buckets

  2. Na lista de buckets, marque a caixa de seleção de cada um que você quer tornar público.

  3. Clique no botão Permissões. A caixa de diálogo Permissões é exibida.

  4. Na caixa de diálogo Permissões, clique no botão Adicionar principal. A caixa de diálogo Conceder acesso será exibida.

  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://BUCKET1_NAME \
    --member=allUsers \
    --role=roles/storage.objectViewer
gcloud storage buckets add-iam-policy-binding gs://BUCKET2_NAME \
    --member=allUsers \
    --role=roles/storage.objectViewer

Reservar um endereço IP interno e estático

Reserve um endereço IP interno estático para a regra de encaminhamento do balanceador de carga. Para mais informações, consulte Reservar um endereço IP interno estático.

Console

  1. No console do Google Cloud , acesse a página Reservar endereço IP interno estático.

    Acessar "Reservar endereço IP estático interno"

  2. No campo Nome, insira um nome para o novo endereço.

  3. Na lista Versão IP, selecione IPv4.

  4. Na lista Rede, selecione lb-network.

  5. Na lista Sub-rede, selecione subnet-us.

  6. Em Região, selecione us-east1.

  7. Na lista Endereço IP estático, selecione Atribuir automaticamente. Depois de criar o balanceador de carga, esse endereço IP será anexado à regra de encaminhamento do balanceador de carga.

  8. Clique em Reservar para reservar o IP.

gcloud

  1. Para reservar um endereço IP interno estático usando gcloud compute, use o comando compute addresses create.

     gcloud compute addresses create ADDRESS_NAME  \
         --region=REGION \
         --subnet=subnet-us \
         --project=SERVICE_PROJECT_ID
    

    Substitua:

    • ADDRESS_NAME: o nome que você quer atribuir a esse endereço.
    • REGION: a região em que você quer reservar o endereço. Essa região precisa ser a mesma do balanceador de carga. Por exemplo, us-east1.
    • SERVICE_PROJECT_ID: o ID do projeto Google Cloud atribuído ao projeto de serviço.
  2. Use o comando compute addresses describe para ver o resultado:

     gcloud compute addresses describe ADDRESS_NAME
    

    Copie o endereço IP retornado para usar como RESERVED_IP_ADDRESS nas seções subsequentes.

Configurar um recurso de certificado SSL

Para um regional internal Application Load Balancer que usa HTTPS como o protocolo de solicitação e resposta, é possível criar um recurso de certificado SSL usando um certificado SSL do Compute Engine ou um certificado do Gerenciador de certificados.

Para este exemplo, crie um recurso de certificado SSL usando o Gerenciador de certificados, conforme descrito em um dos seguintes documentos:

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

Recomendamos o uso de um certificado gerenciado pelo Google para reduzir a sobrecarga operacional, como riscos de segurança associados ao gerenciamento manual de certificados.

Configurar o balanceador de carga com buckets de back-end

Nesta seção, mostramos como criar os seguintes recursos para um regional internal Application Load Balancer:

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.

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

  1. Crie dois buckets de back-end na região us-east1 com o comando gcloud beta compute backend-buckets create. Os buckets de back-end têm um esquema de balanceamento de carga de INTERNAL_MANAGED.

      gcloud beta compute backend-buckets create backend-bucket-cats \
          --gcs-bucket-name=BUCKET1_NAME \
          --load-balancing-scheme=INTERNAL_MANAGED \
          --region=us-east1 \
          --project=SERVICE_PROJECT_ID
    
      gcloud beta compute backend-buckets create backend-bucket-dogs \
          --gcs-bucket-name=BUCKET2_NAME \
          --load-balancing-scheme=INTERNAL_MANAGED \
          --region=us-east1
          --project=SERVICE_PROJECT_ID
    
  2. Crie um mapa de URL para encaminhar solicitações recebidas para o bucket de back-end com o comando gcloud beta compute url-maps create.

      gcloud beta compute url-maps create URL_MAP_NAME \
          --default-backend-bucket=backend-bucket-cats \
          --region=us-east1 \
          --project=SERVICE_PROJECT_ID
    

    Substitua URL_MAP_NAME pelo nome do mapa de URL.

  3. Configure as regras de host e de caminho do mapa de URL com o comando gcloud beta compute url-maps add-path-matcher.

    Neste exemplo, o bucket de back-end padrão é backend-bucket-cats, que processa todos os caminhos que existem nele. No entanto, qualquer solicitação direcionada a http://FORWARDING_RULE_IP_ADDRESS/love-to-fetch/two-dogs.jpg usa o back-end backend-bucket-dogs. Por exemplo, se a pasta /love-to-fetch/ também existir no seu back-end padrão (backend-bucket-cats), o balanceador de carga vai priorizar o back-end backend-bucket-dogs porque há uma regra de caminho específica para /love-to-fetch/*.

      gcloud beta compute url-maps add-path-matcher URL_MAP_NAME \
          --path-matcher-name=path-matcher-pets \
          --new-hosts=* \
          --backend-bucket-path-rules="/love-to-fetch/*=backend-bucket-dogs" \
          --default-backend-bucket=backend-bucket-cats \
          --region=us-east1 \
          --project=SERVICE_PROJECT_ID
    
  4. Crie um proxy de destino com o comando gcloud compute target-http-proxies create.

    HTTP

    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 \
          --region=us-east1 \
          --project=SERVICE_PROJECT_ID
    

    Substitua TARGET_HTTP_PROXY_NAME pelo nome do proxy HTTP de destino.

    HTTPS

    Para tráfego HTTPS, crie um proxy HTTPS de destino para encaminhar solicitações ao mapa de URLs. 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.

    Para anexar um certificado do Gerenciador de certificados, execute o seguinte comando:

      gcloud compute target-https-proxies create TARGET_HTTPS_PROXY_NAME \
          --url-map=URL_MAP_NAME \
          --certificate-manager-certificates=CERTIFICATE_NAME \
          --region=us-east1 \
          --project=SERVICE_PROJECT_ID
    

    Substitua:

  5. Crie uma regra de encaminhamento com um endereço IP na região us-east1 com o comando gcloud compute forwarding-rules create.

    A reserva de um endereço IP é opcional para uma regra de encaminhamento HTTP. No entanto, é necessário reservar um endereço IP para uma regra de encaminhamento HTTPS.

    Neste exemplo, um endereço IP temporário está associado à regra de encaminhamento HTTP do balanceador de carga. Um endereço IP temporário permanece constante enquanto a regra de encaminhamento existir. Se você precisar excluir e recriar a regra de encaminhamento, ela poderá receber um novo endereço IP.

    HTTP

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

      gcloud compute forwarding-rules create FORWARDING_RULE_NAME \
          --load-balancing-scheme=INTERNAL_MANAGED \
          --network=projects/HOST_PROJECT_ID/global/networks/lb-network \
          --subnet=subnet-us \
          --subnet-region=us-east1 \
          --address=RESERVED_IP_ADDRESS
          --ports=80 \
          --region=us-east1 \
          --target-http-proxy=TARGET_HTTP_PROXY_NAME \
          --target-http-proxy-region=us-east1 \
          --project=SERVICE_PROJECT_ID
    

    Substitua:

    HTTPS

    Para o tráfego HTTPS, crie uma regra de encaminhamento regional para encaminhar solicitações recebidas para o proxy HTTPS de destino:

      gcloud compute forwarding-rules create FORWARDING_RULE_NAME \
          --load-balancing-scheme=INTERNAL_MANAGED \
          --network=projects/HOST_PROJECT_ID/global/networks/lb-network \
          --subnet=subnet-us \
          --subnet-region=us-east1 \
          --address=RESERVED_IP_ADDRESS \
          --ports=443 \
          --region=us-east1 \
          --target-https-proxy=TARGET_HTTPS_PROXY_NAME \
          --target-https-proxy-region=us-east1 \
          --project=SERVICE_PROJECT_ID
    

    Substitua:

Enviar uma solicitação HTTP ao balanceador de carga

Agora que o serviço de balanceamento de carga está em execução, envie uma solicitação de uma VM de cliente interna para a regra de encaminhamento do balanceador de carga.

  1. Anote o endereço IP da regra de encaminhamento do balanceador de carga, que está na região us-east1.

     gcloud compute forwarding-rules describe FORWARDING_RULE_NAME \
         --region=us-east1 \
         --project=SERVICE_PROJECT_ID
    

    Copie o endereço IP retornado para usar como o FORWARDING_RULE_IP_ADDRESS.

  2. Crie uma VM cliente na região us-east1.

    gcloud compute instances create client-a \
        --image-family=debian-12 \
        --image-project=debian-cloud \
        --network=lb-network \
        --subnet=subnet-us \
        --zone=us-east1-c \
        --tags=allow-ssh
    
  3. Estabeleça uma conexão SSH com a VM cliente.

    gcloud compute ssh client-a --zone=us-east1-c
    
  4. Neste exemplo, o regional internal Application Load Balancer tem um endereço IP virtual (VIP) de front-end na região us-east1 da rede VPC. Faça uma solicitação HTTP para o VIP nessa região usando curl.

    curl http://FORWARDING_RULE_IP_ADDRESS/love-to-purr/three-cats.jpg --output three-cats.jpg
    
    curl http://FORWARDING_RULE_IP_ADDRESS/love-to-fetch/two-dogs.jpg --output two-dogs.jpg
    

    Substitua FORWARDING_RULE_IP_ADDRESS pelo endereço IP que você copiou na primeira etapa.

Configurar um balanceador de carga com uma configuração entre projetos

O exemplo anterior nesta página mostra como configurar uma implantação de VPC compartilhada em que todos os componentes do balanceador de carga e os back-ends dele são criados no projeto de serviço.

Os balanceadores de carga de aplicativo internos regionais também permitem configurar implantações de VPC compartilhada em que um mapa de URL em um projeto host ou de serviço pode referenciar buckets de back-end localizados em vários projetos de serviço em ambientes de VPC compartilhada.

Use as etapas desta seção como referência para configurar qualquer uma das combinações compatíveis listadas aqui:

  • Regra de encaminhamento, proxy de destino e mapa de URL no projeto host, além dos buckets de back-end em um projeto de serviço
  • Regra de encaminhamento, proxy de destino e mapa de URL em um projeto de serviço, com os buckets de back-end em outro projeto de serviço.

Nesta seção, a última configuração é apresentada como um exemplo.

Visão geral da configuração

Este exemplo configura um balanceador de carga com o front-end e o back-end em dois projetos de serviço diferentes.

Se você ainda não tiver feito isso, conclua todas as etapas de pré-requisito para configurar a VPC compartilhada e configurar a rede, as sub-redes e as regras de firewall necessárias para este exemplo. Para instruções, consulte as seguintes seções nesta página:

Figura 2. Front-end e back-end do balanceador de carga em projetos de serviço diferentes
Figura 2. Front-end e back-end do balanceador de carga em projetos de serviço diferentes.

Configurar os buckets do Cloud Storage e de back-end no projeto de serviço B

Todas as etapas nesta seção precisam ser realizadas no projeto de serviço B.

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

  1. Crie os buckets do Cloud Storage.
  2. Copie conteúdo para o bucket.
  3. Torne os buckets publicamente legíveis.
  4. Crie um bucket de back-end e direcione-o para o bucket do Cloud Storage.

Criar buckets do Cloud Storage

Neste exemplo, crie o bucket do Cloud Storage na região us-east1.

Console

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

    Acessar buckets

  2. Clique em Criar.

  3. Na seção Começar, insira 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.

  8. Clique em Buckets para voltar à página Buckets do Cloud Storage. Use as instruções anteriores para criar um segundo bucket na região us-east1.

gcloud

Crie os buckets na região us-east1 com o comando gcloud storage buckets create.

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

Substitua:

  • BUCKET1_NAME: o nome do seu primeiro bucket do Cloud Storage
  • BUCKET2_NAME: o nome do segundo bucket do Cloud Storage
  • SERVICE_PROJECT_B_ID: o Google Cloud ID do projeto atribuído ao projeto de serviço B

Copiar arquivos gráficos para os buckets do Cloud Storage

Para testar a configuração, copie um arquivo gráfico de um bucket público do Cloud Storage para seus próprios buckets do Cloud Storage.

gcloud storage cp gs://gcp-external-http-lb-with-bucket/three-cats.jpg gs://BUCKET1_NAME/love-to-purr/
gcloud storage cp gs://gcp-external-http-lb-with-bucket/two-dogs.jpg gs://BUCKET2_NAME/love-to-fetch/

Tornar os buckets do Cloud Storage publicamente legíveis

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 console do Google Cloud , acesse a página Buckets do Cloud Storage.

    Acessar buckets

  2. Na lista de buckets, marque a caixa de seleção de cada um que você quer tornar público.

  3. Clique no botão Permissões. A caixa de diálogo Permissões é exibida.

  4. Na caixa de diálogo Permissões, clique no botão Adicionar principal. A caixa de diálogo Conceder acesso será exibida.

  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://BUCKET1_NAME \
    --member=allUsers \
    --role=roles/storage.objectViewer
gcloud storage buckets add-iam-policy-binding gs://BUCKET2_NAME \
    --member=allUsers \
    --role=roles/storage.objectViewer

Configurar o balanceador de carga com buckets de back-end

Para criar os buckets de back-end, siga estas etapas:

  1. Crie dois buckets de back-end na região us-east1 com o comando gcloud beta compute backend-buckets create. Os buckets de back-end têm um esquema de balanceamento de carga de INTERNAL_MANAGED.

      gcloud beta compute backend-buckets create backend-bucket-cats \
          --gcs-bucket-name=BUCKET1_NAME \
          --load-balancing-scheme=INTERNAL_MANAGED \
          --region=us-east1 \
          --project=SERVICE_PROJECT_B_ID
    
      gcloud beta compute backend-buckets create backend-bucket-dogs \
          --gcs-bucket-name=BUCKET2_NAME \
          --load-balancing-scheme=INTERNAL_MANAGED \
          --region=us-east1
          --project=SERVICE_PROJECT_B_ID
    

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

Todas as etapas nesta seção precisam ser realizadas no projeto de serviço A.

No projeto de serviço A, crie os seguintes componentes de balanceamento de carga de front-end:

  1. Configure um recurso de certificado SSL anexado ao proxy de destino. Para mais informações, consulte Configurar um recurso de certificado SSL neste documento.
  2. Crie e reserve um endereço IP interno estático para a regra de encaminhamento do balanceador de carga. Para mais informações, consulte Reservar um endereço IP interno estático neste documento.
  3. Crie um mapa de URL para encaminhar solicitações recebidas para o bucket de back-end no projeto de serviço B com o comando gcloud beta compute url-maps create.

      gcloud beta compute url-maps create URL_MAP_NAME \
          --default-backend-bucket=backend-bucket-cats \
          --region=us-east1 \
          --project=SERVICE_PROJECT_A_ID
    

    Substitua:

    • URL_MAP_NAME: o nome do mapa de URL.
    • SERVICE_PROJECT_A_ID: o ID do projeto Google Cloud atribuído ao projeto de serviço A
  4. Configure as regras de host e de caminho do mapa de URL com o comando gcloud beta compute url-maps add-path-matcher.

    Neste exemplo, o bucket de back-end padrão é backend-bucket-cats, que processa todos os caminhos que existem nele. No entanto, qualquer solicitação direcionada a http://FORWARDING_RULE_IP_ADDRESS/love-to-fetch/two-dogs.jpg usa o back-end backend-bucket-dogs. Por exemplo, se a pasta /love-to-fetch/ também existir no seu back-end padrão (backend-bucket-cats), o balanceador de carga vai priorizar o back-end backend-bucket-dogs porque há uma regra de caminho específica para /love-to-fetch/*.

      gcloud beta compute url-maps add-path-matcher URL_MAP_NAME \
          --path-matcher-name=path-matcher-pets \
          --new-hosts=* \
          --backend-bucket-path-rules="/love-to-fetch/*=projects/SERVICE_PROJECT_B_ID/regional/backendBuckets/backend-bucket-dogs" \
          --default-backend-bucket=projects/SERVICE_PROJECT_B_ID/regional/backendBuckets/backend-bucket-cats \
          --region=us-east1
          --project=SERVICE_PROJECT_A_ID
    
  5. Crie um proxy de destino com o comando gcloud compute target-http-proxies create.

    HTTP

    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 \
          --region=us-east1 \
          --project=SERVICE_PROJECT_A_ID
    

    Substitua TARGET_HTTP_PROXY_NAME pelo nome do proxy HTTP de destino.

    HTTPS

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

    Para anexar um certificado do Gerenciador de certificados, execute o seguinte comando:

      gcloud compute target-https-proxies create TARGET_HTTPS_PROXY_NAME \
          --url-map=lb-map \
          --certificate-manager-certificates=CERTIFICATE_NAME \
          --region=us-east1 \
          --project=SERVICE_PROJECT_A_ID
    

    Substitua:

  6. Crie uma regra de encaminhamento com um endereço IP na região us-east1 com o comando gcloud compute forwarding-rules create.

    A reserva de um endereço IP é opcional para uma regra de encaminhamento HTTP. No entanto, é necessário reservar um endereço IP para uma regra de encaminhamento HTTPS.

    Neste exemplo, um endereço IP temporário está associado à regra de encaminhamento HTTP do balanceador de carga. Um endereço IP temporário permanece constante enquanto a regra de encaminhamento existir. Se você precisar excluir e recriar a regra de encaminhamento, ela poderá receber um novo endereço IP.

    HTTP

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

      gcloud compute forwarding-rules create FORWARDING_RULE_NAME \
          --load-balancing-scheme=INTERNAL_MANAGED \
          --network=projects/HOST_PROJECT_ID/global/networks/lb-network \
          --subnet=subnet-us \
          --address=RESERVED_IP_ADDRESS
          --ports=80 \
          --region=us-east1 \
          --target-http-proxy=TARGET_HTTP_PROXY_NAME \
          --target-http-proxy-region=us-east1 \
          --project=SERVICE_PROJECT_A_ID
    

    Substitua:

    • FORWARDING_RULE_NAME: o nome da regra de encaminhamento
    • RESERVED_IP_ADDRESS: o endereço IP reservado

    HTTPS

    Para o tráfego HTTPS, crie uma regra de encaminhamento regional para encaminhar solicitações recebidas para o proxy HTTPS de destino:

      gcloud compute forwarding-rules create FORWARDING_RULE_NAME \
          --load-balancing-scheme=INTERNAL_MANAGED \
          --network=projects/HOST_PROJECT_ID/global/networks/lb-network \
          --subnet=subnet-us \
          --address=RESERVED_IP_ADDRESS \
          --ports=443 \
          --region=us-east1 \
          --target-https-proxy=TARGET_HTTPS_PROXY_NAME \
          --target-https-proxy-region=us-east1 \
          --project=SERVICE_PROJECT_A_ID
    

    Substitua:

    • FORWARDING_RULE_NAME: o nome da regra de encaminhamento
    • RESERVED_IP_ADDRESS: o endereço IP reservado

Conceder permissão ao administrador do balanceador de carga do Compute para usar o bucket de back-end

Se você quiser que os balanceadores de carga façam referência a buckets de back-end em outros projetos de serviço, o administrador do balanceador de carga precisará ter a permissão compute.backendBuckets.use. Para conceder essa permissão, use o papel predefinido do IAM chamado Usuário de serviços do balanceador de carga do Compute (roles/compute.loadBalancerServiceUser). Esse papel precisa ser concedido pelo Administrador do projeto de serviço e pode ser aplicado no nível do projeto de serviço ou no nível do bucket de back-end individual.

Neste exemplo, um administrador de projeto de serviço do projeto B precisa executar um dos comandos a seguir para conceder a permissão compute.backendBuckets.use a um administrador do balanceador de carga do projeto de serviço A. Isso pode ser feito no nível do projeto (para todos os buckets de back-end no projeto) ou por bucket de back-end.

Console

Permissões de nível de projeto

Use as etapas a seguir para conceder permissões a todos os buckets de back-end no projeto.

Você precisa das permissões compute.regionBackendBuckets.setIamPolicy e resourcemanager.projects.setIamPolicy para concluir esta etapa.

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

    Acessar IAM

  2. Selecione o projeto.

  3. Clique em Conceder acesso.

  4. No campo Novos principais, insira o endereço de e-mail do principal ou outro identificador.

  5. Na seção Atribuir funções, clique em Adicionar funções.

  6. Na caixa de diálogo Selecionar papéis, no campo Pesquisar papéis, insira Compute Load Balancer Services User.

  7. Marque a caixa de seleção Usuário de serviços do balanceador de carga do Compute.

  8. Clique em Aplicar.

  9. Opcional: adicione uma condição ao papel.

  10. Clique em Salvar.

Permissões no nível do recurso para buckets de back-end individuais

Use as etapas a seguir para conceder permissões a buckets de back-end individuais no projeto.

A permissão compute.regionBackendBuckets.setIamPolicy é necessária para concluir esta etapa.

  1. No console do Google Cloud , acesse a página Back-ends.

    Acessar back-ends

  2. Na lista de back-ends, selecione o bucket de back-end a que você quer conceder acesso e clique em Permissões.

  3. Clique em Adicionar principal.

  4. No campo Novos principais, insira o endereço de e-mail do principal ou outro identificador.

  5. Na lista Selecionar um papel, escolha Usuário de serviços do balanceador de carga do Compute.

  6. Clique em Salvar.

gcloud

Permissões de nível de projeto

Use as etapas a seguir para conceder permissões a todos os buckets de back-end no projeto.

Você precisa das permissões compute.regionBackendBuckets.setIamPolicy e resourcemanager.projects.setIamPolicy para concluir esta etapa.

  gcloud projects add-iam-policy-binding SERVICE_PROJECT_B_ID \
      --member="user:LOAD_BALANCER_ADMIN" \
      --role="roles/compute.loadBalancerServiceUser"

Substitua:

  • SERVICE_PROJECT_B_ID: o ID do projeto Google Cloud atribuído ao projeto de serviço B
  • LOAD_BALANCER_ADMIN: o principal para quem a vinculação deve ser adicionada.

Permissões no nível do recurso para buckets de back-end individuais

No nível do bucket de back-end, os administradores do projeto de serviço podem usar um dos comandos a seguir para conceder o papel de usuário de serviços do balanceador de carga do Compute (roles/compute.loadBalancerServiceUser):

Use o comando gcloud projects add-iam-policy-binding para conceder o papel de usuário de serviços do balanceador de carga do Compute.

Você precisa da permissão compute.regionBackendBuckets.setIamPolicy para concluir esta etapa.

  gcloud projects add-iam-policy-binding SERVICE_PROJECT_B_ID \
      --member="user:LOAD_BALANCER_ADMIN" \
      --role="roles/compute.loadBalancerServiceUser" \
      --condition='expression=resource.name=="projects/SERVICE_PROJECT_B_ID/regions/REGION/backendBuckets/BACKEND_BUCKET_NAME",title=Shared VPC condition'
Substitua:
  • SERVICE_PROJECT_B_ID: o ID do projeto Google Cloud atribuído ao projeto de serviço B
  • LOAD_BALANCER_ADMIN: o principal para quem a vinculação deve ser adicionada.
  • REGION: a Google Cloud região em que o bucket de back-end está localizado
  • BACKEND_BUCKET_NAME: o nome do bucket de back-end
Como alternativa, use o comando gcloud compute backend-buckets add-iam-policy-binding para conceder o papel de usuário de serviços do balanceador de carga do Compute.
  gcloud compute backend-buckets add-iam-policy-binding BACKEND_BUCKET_NAME \
      --member="user:LOAD_BALANCER_ADMIN" \
      --role="roles/compute.loadBalancerServiceUser" \
      --project=SERVICE_PROJECT_B_ID \
      --region=REGION

Enviar uma solicitação HTTP ao balanceador de carga

Agora que o serviço de balanceamento de carga está em execução, envie uma solicitação de uma VM de cliente interna para a regra de encaminhamento do balanceador de carga.

  1. Anote o endereço IP da regra de encaminhamento do balanceador de carga, que está na região us-east1.

     gcloud compute forwarding-rules describe FORWARDING_RULE_NAME \
         --region=us-east1 \
         --project=SERVICE_PROJECT_A_ID
    

    Copie o endereço IP retornado para usar como o FORWARDING_RULE_IP_ADDRESS.

  2. Crie uma VM cliente na região us-east1.

    gcloud compute instances create client-a \
        --image-family=debian-12 \
        --image-project=debian-cloud \
        --network=lb-network \
        --subnet=subnet-us \
        --zone=us-east1-c \
        --tags=allow-ssh
    
  3. Estabeleça uma conexão SSH com a VM cliente.

    gcloud compute ssh client-a --zone=us-east1-c
    
  4. Neste exemplo, o regional internal Application Load Balancer tem um VIP de front-end na região us-east1 na rede VPC. Faça uma solicitação HTTP para o VIP nessa região usando curl.

    curl http://FORWARDING_RULE_IP_ADDRESS/love-to-purr/three-cats.jpg --output three-cats.jpg
    
    curl http://FORWARDING_RULE_IP_ADDRESS/love-to-fetch/two-dogs.jpg --output two-dogs.jpg
    

    Substitua FORWARDING_RULE_IP_ADDRESS pelo endereço IP que você copiou na primeira etapa.

A seguir