Neste documento, você verá como criar um regional internal Application Load Balancer 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 realizadas usando a CLI gcloud. Para instalar, consulte Instalar a Google Cloud CLI.
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 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:
-
Criar componentes do balanceador de carga, sub-redes e redes:
Administrador de rede do Compute (
roles/compute.networkAdmin) -
Adicionar e remover regras de firewall:
Administrador de segurança do Compute (
roles/compute.securityAdmin) -
Crie buckets do Cloud Storage:
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, consulte Condições do IAM para regras de encaminhamento.
Configurar um recurso de certificado SSL
Para um regional internal Application Load Balancer que usa HTTPS como o protocolo de solicitação e resposta, 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 emitido pela instância do serviço de AC
- Implantar um certificado regional gerenciado pelo Google com autorização de DNS
- Implante um certificado autogerenciado regional
Recomendamos o uso de um certificado gerenciado pelo Google.
Limitações
As seguintes limitações se aplicam aos buckets do Cloud Storage ao serem usados como back-ends de um regional internal Application Load Balancer:
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 regional internal Application Load Balancer.
Ao usar um regional internal Application Load Balancer para acessar buckets de back-end, apenas o método HTTP
GETé compatível. Você pode fazer o download de conteúdo do bucket, mas não é possível fazer upload de conteúdo para ele usando o regional internal Application Load Balancer .Para um regional internal Application Load Balancer, 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
É possível configurar um regional internal Application Load Balancer em uma região, conforme mostrado no diagrama de arquitetura a seguir:
Conforme mostrado no diagrama de arquitetura, este exemplo cria um
regional internal Application Load Balancer em uma
rede de nuvem privada virtual (VPC) com dois buckets de back-end, em que cada bucket
de back-end faz referência a um bucket do Cloud Storage. Os buckets do Cloud Storage estão localizados na região us-east1, e é possível balancear a carga do tráfego entre eles.
Configurar a rede e as sub-redes
Na rede VPC, configure uma sub-rede na região
us-east1 em que a regra de encaminhamento dos balanceadores de carga será configurada.
Além disso, configure uma sub-rede somente proxy na região, us-east1, em que
você quer configurar o balanceador de carga.
Neste exemplo, usamos a seguinte rede VPC, região e sub-redes:
Rede. Uma rede VPC de modo personalizado denominada
lb-network.Sub-rede para o balanceador de carga. uma sub-rede chamada
subnet-usna regiãous-east1usa10.1.2.0/24para o intervalo de IP primário.Sub-rede para o proxy Envoy. Uma sub-rede chamada
proxy-only-subnet-usna regiãous-east1que usa10.129.0.0/23para o intervalo de IP principal.
Configurar as sub-redes para a regra de encaminhamento do balanceador de carga
Crie uma sub-rede na mesma região em que a regra de encaminhamento dos balanceadores de carga será configurada.
Console
No console do Google Cloud , acesse a página Redes VPC.
Clique em Criar rede VPC.
Em Nome, insira
lb-network.Na seção Sub-redes, defina o Modo de criação da sub-rede como Personalizado.
Na seção Nova sub-rede, insira as seguintes informações:
- Nome:
subnet-us - Selecione uma Região:
us-east1 - Intervalo de endereços IP:
10.1.2.0/24 - Clique em Concluído.
- Nome:
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
Crie uma sub-rede na rede VPC
lb-networkna regiãous-east1com o comandogcloud compute networks subnets create.gcloud compute networks subnets create subnet-us \ --network=lb-network \ --range=10.1.2.0/24 \ --region=us-east1
Configurar as sub-redes 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.
Neste exemplo, criamos uma sub-rede somente proxy na região us-east1.
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:
- Em Nome, insira
proxy-only-subnet-us. - Em Região, insira
us-east1. - Em Finalidade, selecione Regional Managed Proxy.
- Em Intervalo de endereços IP, insira
10.129.0.0/23.
- Em Nome, insira
Clique em Adicionar.
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 uma regra de firewall
Este exemplo usa uma regra de firewall de entrada, fw-allow-ssh, que permite o acesso SSH
na porta 22 à VM do cliente.
Console
No console do Google Cloud , acesse a página Políticas de firewall.
Clique em Criar regra de firewall para criar a regra que autorize conexões SSH de entrada na VM cliente:
Na página Criar regra de firewall, insira as seguintes informações:
- Nome:
fw-allow-ssh - Rede:
lb-network - Direção do tráfego: entrada
- Ação na correspondência: permitir
- Destinos: tags de destino especificadas
- Tags de meta:
allow-ssh - Filtro de origem: intervalos IPv4
- Intervalos IPv4 de origem:
0.0.0.0/0 - Protocolos e portas:
- Escolha Protocolos e portas especificados.
- Marque a caixa de seleção tcp e insira
22como o número da porta.
- Nome:
Clique em Criar.
gcloud
Crie a regra de firewall
fw-allow-sshque permita a conectividade SSH para VMs com a tag de redeallow-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
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.
- 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
- 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 as instruções anteriores para criar um segundo bucket na mesma região, us-east1.
gcloud
Crie os buckets 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-accessgcloud storage buckets create gs://BUCKET2_NAME \ --default-storage-class=standard \ --location=us-east1 \ --uniform-bucket-level-accessSubstitua
BUCKET1_NAMEeBUCKET2_NAMEpelos 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.
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, marque a caixa de seleção de cada um que você quer tornar público.
Clique no botão Permissões. A caixa de diálogo Permissões é exibida.
Na caixa de diálogo Permissões, clique no botão Adicionar principal. 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.objectViewergcloud storage buckets add-iam-policy-binding gs://BUCKET2_NAME \
--member=allUsers \
--role=roles/storage.objectViewerReservar um endereço IP interno e estático
Reserve um endereço IPv4 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
No console do Google Cloud , acesse a página Reservar endereço IP interno estático.
No campo Nome, insira um nome para o novo endereço.
Na lista Versão IP, selecione IPv4.
Na lista Rede, selecione lb-network.
Na lista Sub-rede, selecione subnet-us.
Em Região, selecione us-east1.
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.
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 \ --subnet=subnet-usSubstitua
ADDRESS_NAMEpelo nome do novo endereço.Para conferir as informações sobre o endereço, use o comando
gcloud compute addresses describe.gcloud compute addresses describe ADDRESS_NAME
Copie o endereço IP retornado para usar como
RESERVED_IP_ADDRESSna 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 regional internal Application Load Balancer:
- 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 recebe um endereço IP da sub-rede criada para as regras de encaminhamento do balanceador de carga. Se você tentar atribuir um endereço IP à regra de encaminhamento da sub-rede somente proxy, a criação da regra de encaminhamento vai falhar.
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:
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 deINTERNAL_MANAGED.gcloud beta compute backend-buckets create backend-bucket-cats \ --gcs-bucket-name=BUCKET1_NAME \ --load-balancing-scheme=INTERNAL_MANAGED \ --region=us-east1gcloud beta compute backend-buckets create backend-bucket-dogs \ --gcs-bucket-name=BUCKET2_NAME \ --load-balancing-scheme=INTERNAL_MANAGED \ --region=us-east1Crie 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 lb-map \ --default-backend-bucket=backend-bucket-cats \ --region=us-east1Configure 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 lb-map \ --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-east1Crie 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=lb-map \ --region=us-east1Para 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.
gcloud compute target-https-proxies create https-proxy \ --url-map=lb-map \ --certificate-manager-certificates=CERTIFICATE_NAME \ --region=us-east1Substitua
CERTIFICATE_NAMEpelo 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-east1com o comandogcloud 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 a regra de encaminhamento e recriá-la, ela poderá receber um novo endereço IP.
Para tráfego HTTP, crie as regras de encaminhamento para encaminhar solicitações recebidas ao proxy HTTP de destino:
gcloud compute forwarding-rules create http-fw-rule-1 \ --load-balancing-scheme=INTERNAL_MANAGED \ --network=lb-network \ --subnet=subnet-us \ --subnet-region=us-east1 \ --ports=80 \ --target-http-proxy=http-proxy \ --target-http-proxy-region=us-east1 \ --region=us-east1Para o tráfego HTTPS, crie as regras de encaminhamento global para encaminhar as solicitações recebidas para o proxy de destino HTTPS:
gcloud compute forwarding-rules create https-fw-rule-1 \ --load-balancing-scheme=INTERNAL_MANAGED \ --network=lb-network \ --subnet=subnet-us \ --subnet-region=us-east1 \ --address=RESERVED_IP_ADDRESS \ --ports=443 \ --target-https-proxy=https-proxy \ --target-http-proxy-region=us-east1 \ --region=us-east1Substitua
RESERVED_IP_ADDRESSpelo nome do endereço que você copiou na seção Reservar um endereço IP interno estático.
Enviar uma solicitação HTTP ao balanceador de carga
Envie uma solicitação de uma VM cliente interna para a regra de encaminhamento do balanceador de carga.
Anotar o endereço IP da regra de encaminhamento do balanceador de carga
Receba o endereço IP da regra de encaminhamento do balanceador de carga (http-fw-rule-1)
na região us-east1 para fazer uma solicitação HTTP ao endereço IP virtual (VIP)
na região usando curl.
gcloud compute forwarding-rules describe http-fw-rule-1 \
--region=us-east1
Copie o endereço IP retornado para usar como
FORWARDING_RULE_IP_ADDRESS na próxima etapa.
Criar uma VM cliente para testar a conectividade
Crie uma VM cliente e envie uma solicitação HTTP para os VIPs na rede VPC. A VM cliente pode estar em qualquer zona na mesma região que o balanceador de carga e usar qualquer sub-rede na mesma rede VPC. Neste exemplo, você cria a VM cliente na mesma sub-rede da regra de encaminhamento do balanceador de carga.
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-sshEstabeleça uma conexão SSH com a VM cliente.
gcloud compute ssh client-a --zone=us-east1-c
Neste exemplo, o regional internal Application Load Balancer tem um VIP de front-end na região
us-east1na 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_ADDRESSpelo endereço IP que você copiou na seção Receber o endereço IP da regra de encaminhamento do balanceador de carga.
A seguir
- Visão geral do balanceador de carga interno do aplicativo
- Sub-redes somente proxy para balanceadores de carga baseados em Envoy
- Gerenciar certificados
- Limpar uma configuração de balanceamento de carga