Neste documento, você vai aprender a criar um balanceador de carga de aplicativo externo regional para encaminhar solicitações de conteúdo estático para buckets do Cloud Storage.
Antes de começar
Certifique-se de que sua configuração atenda aos seguintes pré-requisitos.
Instalar a CLI do Google Cloud
Algumas das instruções neste guia só podem ser executadas usando a Google Cloud CLI. Para instalar, consulte Instalar a CLI gcloud.
Encontre os comandos relacionados ao balanceamento de carga no documento de referências da CLI gcloud e da API.
Funções exigidas
Se você for o criador do projeto, vai receber o
papel de proprietário
(roles/owner). Por padrão, o papel de proprietário (roles/owner) ou
o papel de editor (roles/editor) inclui as permissões necessárias
para seguir este documento.
Se você não é o criador do projeto, as permissões necessárias precisam ser concedidas ao principal apropriado. Por exemplo, um principal pode ser uma Conta do Google (para usuários finais) ou uma conta de serviço.
Para receber as permissões necessárias para criar buckets do Cloud Storage e recursos de rede, peça ao administrador para conceder a você os papéis do IAM a seguir no projeto:
-
Crie uma rede VPC e componentes de balanceamento de carga:
Papel de administrador de rede do Compute (
roles/compute.networkAdmin) -
Crie buckets do Cloud Storage:
Papel de administrador de objetos do Storage (
roles/storage.objectAdmin)
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.
Para mais informações sobre papéis e permissões do Cloud Load Balancing, consulte Papéis e permissões. Para mais informações sobre como definir políticas do IAM com concessões condicionais para regras de encaminhamento, consulte Condições do IAM para regras de encaminhamento.
Configurar um recurso de certificado SSL
Para um balanceador de carga de aplicativo externo regional 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 do Certificate Manager.
Para este exemplo, crie um recurso de certificado SSL usando o Gerenciador de certificados, conforme descrito em um dos seguintes documentos:
- Implantar um certificado regional gerenciado pelo Google com autorização de DNS
- Implantar um certificado regional gerenciado pelo Google com o Certificate Authority Service
- Implante um certificado autogerenciado regional
Depois de criar o certificado, anexe-o ao proxy de destino HTTPS.
Recomendamos o uso de um certificado gerenciado pelo Google.
Limitações
As limitações a seguir se aplicam aos buckets do Cloud Storage quando usados como back-ends de um balanceador de carga de aplicativo externo regional:
O acesso privado a buckets não é compatível. Portanto, o bucket de back-end precisa estar acessível publicamente pela Internet.
URLs assinados não são compatíveis.
A integração do Cloud CDN não está disponível ao criar buckets de back-end para um balanceador de carga de aplicativo externo regional.
Ao usar um balanceador de carga de aplicativo regional externo para acessar buckets de back-end, somente o método HTTP
GETé compatível. É possível fazer o download do conteúdo do bucket, mas não é possível fazer upload de conteúdo para ele usando o balanceador de carga de aplicativo externo regional.Para um balanceador de carga de aplicativo externo regional, os buckets do Cloud Storage são compatíveis apenas na região em que o balanceador de carga está configurado. Não há suporte para buckets birregionais ou multirregionais.
Visão geral da configuração
O diagrama a seguir mostra um balanceador de carga de aplicativo externo regional com buckets de back-end localizados na mesma região que o balanceador de carga.
A regra de encaminhamento do balanceador de carga de aplicativo externo regional tem um endereço IP externo.
Nas seções a seguir, você vai configurar os diferentes recursos conforme mostrado no diagrama anterior.
Configurar a rede e a sub-rede somente proxy
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 proxies Envoy. Uma sub-rede chamada
proxy-only-subnet-usna regiãous-east1usa10.129.0.0/23como o intervalo de IP primário.
Configurar uma rede VPC de modo personalizado
Console
No console do Google Cloud , acesse a página Redes VPC.
Clique em Criar rede VPC.
Em Nome, insira
lb-network.Clique em Criar.
gcloud
Crie uma rede VPC personalizada, chamada
lb-network, com o comandogcloud compute networks create.gcloud compute networks create lb-network --subnet-mode=custom
Configurar a sub-rede somente proxy
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.
Console
No console do Google Cloud , acesse a página Redes VPC.
Clique no nome da rede VPC que você criou.
Na guia Sub-rede, clique em Adicionar sub-rede.
Digite as seguintes informações:
- Nome:
proxy-only-subnet-us - Região:
us-east1 - Finalidade: Proxy gerenciado regional
- Intervalo de endereços IP:
10.129.0.0/23
- Nome:
Clique em Add.
gcloud
Crie uma sub-rede somente proxy na região
us-east1com o comandogcloud 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
Configurar os buckets do Cloud Storage
O processo de configuração dos buckets do Cloud Storage é o seguinte:
- Crie os buckets.
- Copie conteúdo para os buckets.
Criar buckets do Cloud Storage
Neste exemplo, você cria dois buckets do Cloud Storage na região
us-east1.
Console
- No console do Google Cloud , acesse a página Buckets do Cloud Storage.
Clique em Criar.
Na seção Começar, insira um nome globalmente exclusivo que siga as diretrizes de nomenclatura.
Clique em Escolha onde armazenar os dados.
Defina o Tipo de local como Região.
Na lista de regiões, selecione us-east1.
Clique em Criar.
Clique em Buckets para retornar à página "Buckets do Cloud Storage". Use estas instruções para criar um segundo bucket na região us-east1.
gcloud
Crie o primeiro bucket na região
us-east1com o comandogcloud storage buckets create.gcloud storage buckets create gs://BUCKET1_NAME \ --default-storage-class=standard \ --location=us-east1 \ --uniform-bucket-level-accessCrie o segundo bucket também na região
us-east1com o comandogcloud storage buckets create.gcloud storage buckets create gs://BUCKET2_NAME \ --default-storage-class=standard \ --location=us-east1 \ --uniform-bucket-level-access
Substitua as variáveis BUCKET1_NAME
e BUCKET2_NAME
pelos nomes dos seus buckets do Cloud Storage.
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.
Execute os comandos a seguir no Cloud Shell, substituindo as variáveis de nome do bucket pelos nomes exclusivos dos seus 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:
- No console do Google Cloud , acesse a página Buckets do Cloud Storage.
Na lista de buckets, clique no nome do bucket que você quer tornar público.
Selecione a guia Permissões.
Na seção Permissões, clique no botão Conceder acesso. A caixa de diálogo Conceder acesso será exibida.
No campo Novos participantes, insira
allUsers.No campo Selecionar um papel, insira
Storage Object Viewerna caixa de filtro e selecione Visualizador de objetos do Storage nos resultados filtrados.Clique em Salvar.
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
Reserve o endereço IP do balanceador de carga
Reserve um endereço IP externo estático para a regra de encaminhamento do balanceador de carga.
Console
No console do Google Cloud , acesse a página Reservar um endereço estático.
Escolha um nome para o novo endereço.
Em Versão IP, selecione IPv4.
Em Tipo, selecione Regional.
Em Região, selecione us-east1.
Deixe a opção Anexado a definida como Nenhum. Depois de criar o balanceador de carga, esse endereço IP será anexado à regra de encaminhamento do balanceador de carga.
Clique em Reservar para reservar o IP.
gcloud
Para reservar um endereço IP externo estático, use o comando
gcloud compute addresses create.gcloud compute addresses create ADDRESS_NAME \ --region=us-east1
Substitua:
ADDRESS_NAME: o nome que você quer atribuir a esse endereço.
Use o comando
gcloud compute addresses describepara ver o resultado:gcloud compute addresses describe ADDRESS_NAME
O endereço IP retornado é chamado de
RESERVED_IP_ADDRESS na seção a seguir.
Configurar o balanceador de carga com buckets de back-end
Nesta seção, mostramos como criar os seguintes recursos para um balanceador de carga de aplicativo externo regional:
- Dois buckets de back-end. Os buckets de back-end servem como um wrapper para os buckets do Cloud Storage que você criou anteriormente.
- Mapa de URL
- Proxy de destino
- Uma regra de encaminhamento com endereços IP regionais. A regra de encaminhamento tem um endereço IP externo.
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 usando a gcloud CLI, siga estas etapas:
Crie dois buckets de back-end na região
us-east1com o comandogcloud beta compute backend-buckets create. Os buckets de back-end têm um esquema de balanceamento de carga deEXTERNAL_MANAGED.gcloud beta compute backend-buckets create backend-bucket-cats \ --gcs-bucket-name=BUCKET1_NAME \ --load-balancing-scheme=EXTERNAL_MANAGED \ --region=us-east1gcloud beta compute backend-buckets create backend-bucket-dogs \ --gcs-bucket-name=BUCKET2_NAME \ --load-balancing-scheme=EXTERNAL_MANAGED \ --region=us-east1Substitua as variáveis
BUCKET1_NAMEeBUCKET2_NAMEpelos nomes dos seus buckets do Cloud Storage.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-east1Substitua a variável
URL_MAP_NAMEpelo nome do mapa de URL.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 ahttp://FORWARDING_RULE_IP_ADDRESS/love-to-fetch/two-dogs.jpgusa o back-endbackend-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-endbackend-bucket-dogsporque 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-catsSubstitua a variável
URL_MAP_NAMEpelo nome do mapa de URL.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 http-proxy \ --url-map=URL_MAP_NAME \ --region=us-east1Substitua a variável
URL_MAP_NAMEpelo nome do mapa de URL.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, 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 https-proxy \ --url-map=URL_MAP_NAME \ --certificate-manager-certificates=CERTIFICATE_NAME \ --region=us-east1Substitua:
URL_MAP_NAME: o nome do mapa de URL.CERTIFICATE_NAME: o nome do certificado SSL que você criou usando o Gerenciador de certificados.
Crie uma regra de encaminhamento com um endereço IP na região
us-east1usando o comandogcloud compute forwarding-rules create.Para tráfego HTTP, crie uma regra de encaminhamento regional para encaminhar solicitações recebidas ao proxy HTTP de destino:
gcloud compute forwarding-rules create http-fw-rule \ --load-balancing-scheme=EXTERNAL_MANAGED \ --network=lb-network \ --address=RESERVED_IP_ADDRESS \ --ports=80 \ --region=us-east1 \ --target-http-proxy=http-proxy \ --target-http-proxy-region=us-east1Para o tráfego HTTPS, crie uma regra de encaminhamento regional para encaminhar as solicitações recebidas para o proxy HTTPS de destino:
gcloud compute forwarding-rules create https-fw-rule \ --load-balancing-scheme=EXTERNAL_MANAGED \ --network=lb-network \ --address=RESERVED_IP_ADDRESS \ --ports=443 \ --region=us-east1 \ --target-https-proxy=https-proxy \ --target-https-proxy-region=us-east1
Enviar uma solicitação HTTP ao balanceador de carga
Agora que o serviço de balanceamento de carga está em execução, é possível enviar uma solicitação para a regra de encaminhamento do balanceador de carga.
Anote o endereço IP da regra de encaminhamento do balanceador de carga (
http-fw-rule), que está na regiãous-east1.gcloud compute forwarding-rules describe http-fw-rule \ --region=us-east1Copie o endereço IP retornado para usar como
FORWARDING_RULE_IP_ADDRESSna próxima etapa.Faça uma solicitação HTTP para o endereço IP virtual (VIP) da regra de encaminhamento 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
A seguir
- Visão geral do balanceador de carga de aplicativo externo
- Sub-redes somente proxy para balanceadores de carga baseados em Envoy
- Gerenciar certificados
- Limpar uma configuração de balanceamento de carga