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:
-
Configure a VPC compartilhada, ative o projeto host e conceda acesso aos administradores do projeto de serviço:
Administrador da VPC compartilhada do Compute (
roles/compute.xpnAdmin) no projeto host -
Adicionar e remover regras de firewall:
Administrador de segurança do Compute (
roles/compute.securityAdmin) no projeto host -
Acesso a um administrador do projeto de serviço para usar a rede VPC compartilhada:
Usuário da rede do Compute (
roles/compute.networkUser) no projeto host -
Crie os recursos de balanceamento de carga:
Administrador de rede do Compute (
roles/compute.networkAdmin) no projeto de serviço -
Criar instâncias do Compute Engine:
Administrador de instâncias do Compute (
roles/compute.instanceAdmin.v1) no projeto de serviço -
Criar e modificar certificados SSL do Compute Engine:
Administrador de segurança do Compute (
roles/compute.securityAdmin) no projeto de serviço -
Criar e modificar certificados SSL do Gerenciador de certificados:
Proprietário do Gerenciador de certificados (
roles/certificatemanager.owner) no projeto de serviço -
Permita que o balanceador de carga faça referência a buckets de back-end de outros projetos de serviço:
Usuário dos serviços do balanceador de carga do Compute (
roles/compute.loadBalancerServiceUser) no projeto de serviço
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:
- Configure a rede VPC no projeto host.
- Configure a sub-rede somente proxy no projeto host.
- Configure uma regra de firewall no projeto host.
- 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-usna regiãous-east1usa10.1.2.0/24para o intervalo de IP primário.Sub-rede para proxies Envoy. Uma sub-rede chamada
proxy-only-subnet-usna regiãous-east1usa10.129.0.0/23como 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
No console do Google Cloud , acesse a página Redes VPC.
Clique em Criar rede VPC.
No campo Nome, use
lb-network.Em Modo de criação da sub-rede, selecione Personalizado.
Na seção Nova sub-rede, forneça as seguintes informações:
- No campo Nome, use
subnet-us. - Na lista Região, selecione
us-east1. - No campo Intervalo IPv4, digite
10.1.2.0/24. - Clique em Concluído.
- No campo Nome, use
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 \ --project=HOST_PROJECT_IDSubstitua
HOST_PROJECT_IDpelo Google Cloud ID do projeto atribuído ao projeto ativado como um projeto host em um ambiente de VPC compartilhada.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 \ --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
No console do Google Cloud , acesse a página Redes VPC.
Clique no nome da rede VPC que você criou.
Na guia Sub-redes, clique em Adicionar sub-rede e forneça as seguintes informações:
- No campo Nome, use
proxy-only-subnet-us. - Na lista Região, selecione
us-east1. - Em Finalidade, selecione Regional Managed Proxy.
- No campo Intervalo IPv4, digite
10.129.0.0/23.
- No campo Nome, use
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 \ --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
No console do Google Cloud , acesse a página Políticas de firewall.
Clique em Criar regra de firewall para criar a regra que permite as verificações de integridade doGoogle Cloud .
Forneça as seguintes informações:
- No campo Nome, use
fw-allow-ssh. - Na lista Rede, selecione lb-network.
- Em Direção de tráfego, selecione Entrada.
- Em Ação se houver correspondência, selecione Permitir.
- Na lista Destinos, selecione Tags de destino especificadas.
- No campo Tags de destino, insira
allow-ssh. - Na lista Filtro de origem, selecione Intervalos IPv4.
- No campo Intervalos IPv4 de origem, insira
0.0.0.0/0. - Em Protocolos e portas, selecione Protocolos e portas especificados.
- Marque a caixa de seleção TCP e insira
22como o número da porta.
- No campo Nome, use
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ê omitesource-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:
Depois de concluir as etapas anteriores, siga uma destas configurações:
- Configurar um balanceador de carga no projeto de serviço
- Configurar um balanceador de carga com uma configuração entre projetos
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.
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:
- Crie os buckets do Cloud Storage.
- 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 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-east1com o comandogcloud 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_IDSubstitua:
BUCKET1_NAME: o nome do seu primeiro bucket do Cloud StorageBUCKET2_NAME: o nome do seu segundo bucket do Cloud StorageSERVICE_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:
- 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.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
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 interno estático usando
gcloud compute, use o comandocompute addresses create.gcloud compute addresses create ADDRESS_NAME \ --region=REGION \ --subnet=subnet-us \ --project=SERVICE_PROJECT_IDSubstitua:
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.
Use o comando
compute addresses describepara ver o resultado:gcloud compute addresses describe ADDRESS_NAME
Copie o endereço IP retornado para usar como
RESERVED_IP_ADDRESSnas 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:
- Implantar um certificado regional gerenciado pelo Google com o serviço de AC
- Implantar um certificado regional gerenciado pelo Google com autorização de DNS
- Implantar 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 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:
- 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-east1 \ --project=SERVICE_PROJECT_IDgcloud beta compute backend-buckets create backend-bucket-dogs \ --gcs-bucket-name=BUCKET2_NAME \ --load-balancing-scheme=INTERNAL_MANAGED \ --region=us-east1 --project=SERVICE_PROJECT_IDCrie 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_IDSubstitua
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-cats \ --region=us-east1 \ --project=SERVICE_PROJECT_IDCrie 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_IDSubstitua
TARGET_HTTP_PROXY_NAMEpelo 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_IDSubstitua:
TARGET_HTTPS_PROXY_NAME: o nome do proxy HTTPS de destino.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-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 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_IDSubstitua:
FORWARDING_RULE_NAME: o nome da regra de encaminhamentoRESERVED_IP_ADDRESS: o endereço IP reservado que você copiou na seção Reservar um endereço IP interno estático
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_IDSubstitua:
FORWARDING_RULE_NAME: o nome da regra de encaminhamentoRESERVED_IP_ADDRESS: o endereço IP reservado que você copiou na seção Reservar um endereço IP interno estático
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.
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_IDCopie o endereço IP retornado para usar como o
FORWARDING_RULE_IP_ADDRESS.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 endereço IP virtual (VIP) de front-end na região
us-east1da 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 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:
- Configurar as funções necessárias para configurar uma VPC compartilhada
- Configurar um ambiente de VPC compartilhada
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:
- Crie os buckets do Cloud Storage.
- Copie conteúdo para o bucket.
- Torne os buckets publicamente legíveis.
- 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
- 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 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 StorageBUCKET2_NAME: o nome do segundo bucket do Cloud StorageSERVICE_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:
- 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.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:
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-east1 \ --project=SERVICE_PROJECT_B_IDgcloud 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:
- Configure um recurso de certificado SSL anexado ao proxy de destino. Para mais informações, consulte Configurar um recurso de certificado SSL neste documento.
- 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.
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_IDSubstitua:
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
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/*=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_IDCrie 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_IDSubstitua
TARGET_HTTP_PROXY_NAMEpelo 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_IDSubstitua:
TARGET_HTTPS_PROXY_NAME: o nome do proxy HTTPS de destino.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-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 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_IDSubstitua:
FORWARDING_RULE_NAME: o nome da regra de encaminhamentoRESERVED_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_IDSubstitua:
FORWARDING_RULE_NAME: o nome da regra de encaminhamentoRESERVED_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.
No console do Google Cloud , acesse a página IAM.
Selecione o projeto.
Clique em Conceder acesso.
No campo Novos principais, insira o endereço de e-mail do principal ou outro identificador.
Na seção Atribuir funções, clique em Adicionar funções.
Na caixa de diálogo Selecionar papéis, no campo Pesquisar papéis, insira
Compute Load Balancer Services User.Marque a caixa de seleção Usuário de serviços do balanceador de carga do Compute.
Clique em Aplicar.
Opcional: adicione uma condição ao papel.
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.
No console do Google Cloud , acesse a página Back-ends.
Na lista de back-ends, selecione o bucket de back-end a que você quer conceder acesso e clique em Permissões.
Clique em Adicionar principal.
No campo Novos principais, insira o endereço de e-mail do principal ou outro identificador.
Na lista Selecionar um papel, escolha Usuário de serviços do balanceador de carga do Compute.
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 BLOAD_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):
- comando
gcloud projects add-iam-policy-binding - comando
gcloud compute backend-buckets add-iam-policy-binding
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'
SERVICE_PROJECT_B_ID: o ID do projeto Google Cloud atribuído ao projeto de serviço BLOAD_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á localizadoBACKEND_BUCKET_NAME: o nome do bucket de back-end
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.
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_IDCopie o endereço IP retornado para usar como o
FORWARDING_RULE_IP_ADDRESS.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 primeira etapa.
A seguir
- Visão geral da VPC compartilhada
- 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