Como configurar um balanceador de carga com buckets de back-end

Com os buckets de back-end, você usa os buckets do Google Cloud Storage com o balanceamento de carga HTTP(S).

Como usar um bucket do Google Cloud Storage como back-end do balanceador de carga

Um balanceador de carga HTTP(S) externo usa um mapa de URLs para direcionar o tráfego de URLs especificados para um serviço de back-end ou um bucket de back-end. Um caso de uso comum é:

  • enviar solicitações de conteúdo dinâmico, como dados, para um serviço de back-end;
  • enviar solicitações de conteúdo estático, como imagens, para um bucket de back-end.

No diagrama a seguir, o balanceador de carga envia tráfego com um caminho de /static/eu/ para um bucket do Cloud Storage na região europe-north. Todas as outras solicitações vão para um bucket do Cloud Storage na região us-east.

Distribuição de tráfego para o Cloud Storage (clique para ampliar)
Distribuição de tráfego para o Cloud Storage (clique para ampliar)

Neste documento, você verá como criar um balanceador de carga de HTTP(S) externo a fim de encaminhar solicitações de conteúdo estático para buckets do Cloud Storage. Depois de configurar um balanceador de carga com os buckets de back-end, as solicitações para caminhos de URL que começam com /static/eu são enviadas para o bucket europe-north do Cloud Storage. Todas as outras solicitações serão enviadas para o bucket us-east do Cloud Storage.

Antes de começar

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

Configurar um projeto padrão

  1. Se você estiver usando os utilitários gcloud ou gsutil, siga as instruções de instalação no documento Guia de início rápido: como usar a ferramenta gsutil.
  2. Configure um projeto padrão.

    Console

    a. Acesse a página inicial no Console do Google Cloud.
    Acessar a página inicial do Google Cloud

    b. À direita do Google Cloud, selecione um projeto no menu suspenso.

    gcloud ou gsutil

     gcloud config set project [PROJECT_ID]
    

    ou

     gsutil config set project [PROJECT_ID]
    
    • [PROJECT_ID]: o projeto que você usará neste guia.

Permissões

Para seguir este guia, você precisa criar buckets do Cloud Storage e um balanceador de carga em um projeto. É necessário ser proprietário ou editor de um projeto ou ter os seguintes papéis de IAM do Compute Engine:

Tarefa Papel obrigatório
Criar componentes do balanceador de carga Administrador de rede
Criar buckets do Cloud Storage Administrador de objetos do Storage

Para mais informações, consulte estes guias:

Como preparar os bucket e conteúdos do Cloud Storage

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

  • Crie os buckets.
  • Copie conteúdo para os buckets.
  • Forneça acesso público aos buckets.

Como criar buckets do Cloud Storage

Se você já tiver um bucket do Cloud Storage, pule para a próxima etapa.

Ao criar um bucket para usar como back-end de um balanceamento de carga HTTP(S), recomendamos que você escolha um bucket multirregional que replicará automaticamente os objetos em várias regiões do Google Cloud. Isso pode melhorar a disponibilidade do seu conteúdo e melhorar a tolerância a falhas em todo o aplicativo.

Console

  1. No Console do Cloud, abra o navegador do Cloud Storage:
    Abra o navegador do Cloud Storage
  2. Clique em Criar bucket.
  3. Especifique valores para os campos a seguir, deixando todos os outros nos próprios valores padrão:

    Propriedade Valor (insira o valor ou selecione uma opção conforme especificado)
    Nome Para cada bucket, insira um nome globalmente exclusivo. Se o nome inserido não for exclusivo, você receberá uma mensagem para tentar outro nome.
    Tipo de local Neste exemplo, selecione Região. Nas implantações de produção, recomendamos buckets multirregionais.
    Local Para um bucket, selecione us-east1
    Para o outro, selecione europe-north1
    Classe de armazenamento padrão Padrão
    Controle de acesso Uniforme
  4. Clique em Criar.

  5. Anote os nomes dos buckets recém-criados do Cloud Storage para a próxima etapa, em que são chamados de BUCKET_1_NAME e BUCKET_2_NAME.

gsutil

gsutil mb -p PROJECT_ID -c standard -l us-east1 -b on gs://BUCKET_1_NAME
gsutil mb -p PROJECT_ID -c standard -l europe-north1 -b on gs://BUCKET_2_NAME

Como copiar arquivos gráficos nos buckets do Cloud Storage

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

  1. Execute o comando a seguir no Cloud Shell, substituindo as variáveis de nome do bucket pelos nomes do bucket do Cloud Storage:

    gsutil cp gs://gcp-external-http-lb-with-bucket/three-cats.jpg gs://BUCKET_1_NAME/static/us/
    
    gsutil cp gs://gcp-external-http-lb-with-bucket/two-dogs.jpg gs://BUCKET_2_NAME/static/eu/
    
  2. No Console do Cloud, clique em Atualizar bucket para verificar se o arquivo gráfico está copiado.

Como tornar públicos os buckets do Cloud Storage

Torne os buckets do Cloud Storage publicamente legíveis. Com essa configuração, qualquer pessoa na Internet pode ver seus objetos e seus respectivos metadados, exceto Access Control Lists (ACLs). Qualquer pessoa na Internet também pode listar os objetos nos seus buckets. Não inclua informações confidenciais nos buckets públicos.

Para reduzir a probabilidade de exposição acidental de informações confidenciais, não armazene objetos públicos e dados confidenciais no mesmo bucket. Para mais informações, consulte Arquitetura de bucket recomendada.

Console

Permita que todos os usuários possam acessar e visualizar objetos no bucket. Repita esse procedimento para cada bucket.

  1. No Console do Cloud, abra o navegador do Cloud Storage:
    Abra o navegador do Cloud Storage
  2. Navegue até o bucket e clique na guia Permissões.
  3. Clique e selecione Adicionar membros.
  4. Em Novos membros, digite allUsers.
  5. Para o papel, selecione Armazenamento > Visualizador de objetos do Storage.
  6. Clique em Salvar.

gsutil

gsutil iam ch allUsers:objectViewer gs://BUCKET_1_NAME
gsutil iam ch allUsers:objectViewer gs://BUCKET_2_NAME

Como reservar um endereço IP externo

Agora que os buckets estão funcionando, configure um endereço IP externo, estático e global que seus clientes possam usar para alcançar seu balanceador de carga.

Essa etapa é opcional, mas recomendada, porque um endereço IP externo e estático fornece um único endereço para apontar ao domínio.

Console

  1. Acesse a página "Endereços IP externos" no Console do Google Cloud.
    Acessar a página "Endereços IP externos"
  2. Clique em Reservar endereço estático para reservar um endereço IPv4.
  3. Atribua um Nome de example-ip.
  4. Defina o Nível da rede como Premium.
  5. Defina Versão IP como IPv4.
  6. Defina Tipo como Global.
  7. Clique em Reservar.
  8. Certifique-se de que o Tipo esteja definido como Global.
  9. Clique em Reservar.

gcloud

gcloud compute addresses create example-ip \
    --network-tier=PREMIUM \
    --ip-version=IPV4 \
    --global

Anote o endereço IPv4 que foi reservado:

gcloud compute addresses describe example-ip \
    --format="get(address)" \
    --global

Como criar o balanceador de carga HTTP com os buckets de back-end

Se você quiser criar um balanceador de carga HTTPS, adicione um recurso de certificado SSL ao front-end do balanceador de carga. Para mais informações, consulte a visão geral dos certificados SSL.

  1. Acesse a página "Balanceamento de carga" no Console do Google Cloud.
    Acessar a página "Balanceamento de carga"
  2. Em Balanceamento de carga HTTP(S), clique em Iniciar configuração.
  3. Selecione Da internet para minhas VMs.
  4. Defina o Nome como http-lb.

Como configurar o back-end

  1. Clique em Configuração de back-end.
  2. Para Serviços de back-end e buckets de back-end, clique em Criar ou selecionar serviços de back-end e buckets de back-end. Depois, clique em Buckets de back-end > Criar um bucket de back-end.
  3. Defina o Nome como backend-bucket1.
  4. Clique em Procurar em Bucket do Cloud Storage.
  5. Selecione seu BUCKET_1_NAME e clique em Selecionar.
  6. Clique em Criar.

Repita esta etapa para criar backend-bucket2 e navegue até BUCKET_2_NAME.

Como configurar regras de host e correspondentes de caminho

As regras de host e os correspondentes de caminho são componentes de configuração do Mapa de URLs de um balanceador de carga de HTTP(S) externo.

  1. Clique em Regras de host e caminho.
  2. Para backend-bucket1, não é possível alterar os hosts e caminhos padrão. Isso significa que todas as solicitações sem correspondência vão para backend-bucket1.
  3. Para backend-bucket2, insira * no campo Hosts.
  4. Para backend-bucket2, insira /static/eu/* no campo Caminhos.

    Hosts Caminhos Back-end
    Todos sem correspondência (padrão) Todos sem correspondência (padrão) backend-bucket1
    * /static/eu/* backend-bucket2

Como configurar o front-end

  1. Clique em Configuração de front-end.
  2. Verifique se as seguintes opções estão configuradas com estes valores:

    Propriedade Valor: digite um valor ou selecione uma opção conforme especificado
    Protocolo HTTP
    Nível de serviço da rede Premium
    Versão IP IPv4
    Endereço IP example-ip
    Porta 80

    Se você quiser criar um balanceador de carga HTTPS em vez de um balanceador de carga HTTP, precisará ter um certificado SSL (gcloud compute ssl-certificates list) e preencher os campos da seguinte maneira:

    Propriedade Valor: digite um valor ou selecione uma opção conforme especificado
    Protocolo HTTP(S)
    Nível de serviço da rede Premium
    Versão IP IPv4
    Endereço IP example-ip
    Porta 443
    Selecione um certificado ou crie um novo
  3. Clique em Concluído.

Como verificar a configuração

  1. Clique em Revisar e finalizar.
  2. Verifique os Buckets de back-end, as Regras de host e caminho e o Front-end.
  3. Clique em Criar.
  4. Aguarde o balanceador de carga ser criado.
  5. Clique no nome do balanceador de carga (http-lb).
  6. Anote o endereço IP do balanceador de carga para a próxima tarefa. Ele é referenciado como IP_ADDRESS.

Como enviar tráfego para seu bucket de back-end

Agora que você configurou o balanceador de carga, será possível começar a enviar tráfego para o endereço IP do balanceador.

Console

  1. Acesse a página "Balanceamento de carga" no Console do Google Cloud.
    Acessar a página "Balanceamento de carga"
  2. Clique em http-lb para expandir o balanceador de carga que você acabou de criar.
  3. Na seção Back-end, confirme se os buckets de back-end estão íntegros. Você precisa ver uma marca de seleção verde ao lado dos buckets de back-end. Se não estiver assim, tente atualizar a página. Pode levar alguns instantes para o Console do Cloud indicar que os back-ends estão íntegros.
  4. Depois que o Console do Cloud mostrar que os buckets de back-end estão íntegros, teste o balanceador de carga. Para isso, use um navegador da Web e acesse https://IP_ADDRESS/static/eu/two-dogs.jpg e https://IP_ADDRESS/static/us/three-cats.jpg, em que IP_ADDRESS é o endereço IP do balanceador de carga. Seu navegador precisa renderizar páginas que tenham conteúdo que mostre os arquivos gráficos:

    • http://IP_ADDRESS/static/eu/two-dogs.jpg
    • http://IP_ADDRESS/static/us/three-cats.jpg

gcloud

Use o comando curl para testar a resposta do URL. Substitua IP_ADDRESS pelo endereço IPv4 do balanceador de carga:

curl http://IP_ADDRESS/static/eu/two-dogs.jpg
curl http://IP_ADDRESS/static/us/three-cats.jpg

Limitações

  • Os buckets de back-end só são compatíveis com balanceadores de carga HTTP(S) externos.
  • Os buckets de back-end não são compatíveis com o Identity-Aware Proxy.

A seguir