Configurar balanceadores de carga de aplicativo externos regionais com a VPC compartilhada

Neste documento, mostramos duas configurações de amostra para configurar um balanceador de carga de aplicativo externo em um ambiente de VPC compartilhada:

  • 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 serviço de back-end e os back-ends do balanceador de carga são criados em um projeto de serviço diferente. Esse tipo de implantação, em que o mapa de URL faz referência a um serviço de back-end em outro projeto, é chamado de Referência de serviço entre projetos.

Os dois exemplos exigem a mesma configuração inicial para conceder permissões e definir a VPC compartilhada antes de começar a criar balanceadores de carga.

Essas não são as únicas configurações de VPC compartilhada compatíveis com o balanceador de carga de aplicativo regional externo. Para 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 balanceador de carga de aplicativo externo regional com back-ends de grupos de instâncias de VM.

Antes de começar

  1. Leia Visão geral da VPC compartilhada.
  2. Leia a Visão geral do balanceador de carga de aplicativo externo, incluindo a seção Arquiteturas de VPC compartilhada.

Permissões necessárias

A configuração de um balanceador de carga em uma rede VPC compartilhada requer algumas configurações e provisionamento iniciais de um administrador. Após a configuração inicial, o proprietário de um projeto de serviço pode realizar uma das seguintes ações:

  • Implantar todos os componentes e os back-ends do balanceador de carga em um projeto de serviço.
  • Implante os componentes do back-end do balanceador de carga (serviço de back-end e back-ends) em projetos de serviço que podem ser referenciados por um mapa de URL em outro serviço ou projeto de host.

Esta seção resume as permissões necessárias para seguir este guia para configurar um balanceador de carga em uma rede VPC compartilhada.

Configurar VPC compartilhada

Os seguintes papéis são necessários para as seguintes tarefas:

  1. Executar tarefas administrativas únicas, como configurar a VPC compartilhada e ativar um projeto host.
  2. Executar tarefas administrativas que precisam ser repetidas sempre que você quiser integrar um novo projeto de serviço. Isso inclui anexar o projeto de serviço, provisionar e configurar recursos de rede e conceder acesso ao administrador do projeto de serviço.

Essas tarefas precisam ser executadas no projeto host da VPC compartilhada. Recomendamos que o administrador da VPC compartilhada também seja o proprietário do projeto host da VPC compartilhada. Isso concede automaticamente os papéis de administrador de rede e administrador de segurança.

Tarefa Papel necessário
Configurar a VPC compartilhada, ativar o projeto host e conceder acesso aos administradores do projeto de serviço Administrador de VPC compartilhada
Criar sub-redes no projeto host da VPC compartilhada e conceder acesso aos administradores do projeto de serviço Administrador de rede
Adicionar e remover regras de firewall Administrador de segurança

Depois que as sub-redes são provisionadas, o proprietário do projeto de host precisa conceder o papel do usuário de rede no projeto de hosta qualquer pessoa (normalmente desenvolvedores, contas de serviço ou administradores do projeto de serviço) que precisa usar esses recursos.

Tarefa Papel necessário
Usar redes e sub-redes VPC pertencentes ao projeto host Usuário de rede

Esse papel pode ser concedido no nível do projeto ou para sub-redes individuais. Recomendamos que você conceda o papel em sub-redes individuais. Conceder o papel no projeto fornece acesso a todas as sub-redes atuais e futuras na VPC do projeto host.

Implantar balanceador de carga e back-ends

Os administradores do projeto de serviço precisam dos seguintes papéis no projeto de serviço para criar recursos e back-ends de balanceamento de carga. Essas permissões são concedidas automaticamente ao proprietário ou editor do projeto de serviço.

Papéis concedidos no projeto de serviço
Tarefa Papel necessário
Criar componentes do balanceador de carga Administrador de rede
Criar instâncias Administrador de instâncias
Criar e modificar certificados SSL Administrador de segurança

Pré-requisitos

Nesta seção, você precisa executar as seguintes etapas:

  1. Como configurar a rede e as sub-redes no projeto host.
  2. Configure a VPC compartilhada no projeto host.

As etapas nesta seção não precisam ser realizadas 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.

Como configurar a rede e as sub-redes no projeto host

Você precisa de uma rede VPC compartilhada com duas sub-redes: uma para o front-end e os back-ends do balanceador de carga e outra para os proxies do balanceador de carga.

Este exemplo usa a seguinte rede, região e sub-redes:

  • Rede: o nome da rede é lb-network.

  • Sub-rede para o front-end e os back-ends do balanceador de carga. uma sub-rede chamada lb-frontend-and-backend-subnet na região us-west1 usa 10.1.2.0/24 para o intervalo de IP primário.

  • Sub-rede para proxies: uma sub-rede chamada proxy-only-subnet na região us-west1 usa 10.129.0.0/23 como o intervalo de IP primário.

Configurar a sub-rede para o front-end e os back-ends do balanceador de carga

Essa etapa não precisa ser realizada 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).

Todas as etapas nesta seção precisam ser realizadas no projeto host.

Console

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

    Acessar redes VPC

  2. Clique em Criar rede VPC.
  3. Em Nome, insira lb-network.
  4. Na seção Sub-redes:

    1. Defina o Modo de criação da sub-rede como Personalizado.
    2. Na seção Nova sub-rede, insira as seguintes informações:

      • Name: lb-frontend-and-backend-subnet
      • Região: us-west1

      • Intervalo de endereços IP: 10.1.2.0/24

    3. Clique em Concluído.

  5. Clique em Criar.

gcloud

  1. Crie uma rede VPC com o comando gcloud compute networks create:

    gcloud compute networks create lb-network --subnet-mode=custom
    
  2. Crie uma sub-rede na rede lb-network, região us-west1:

    gcloud compute networks subnets create lb-frontend-and-backend-subnet \
        --network=lb-network \
        --range=10.1.2.0/24 \
        --region=us-west1
    

Terraform

  1. Crie uma rede VPC:

    # Shared VPC network
    resource "google_compute_network" "lb_network" {
      name                    = "lb-network"
      provider                = google-beta
      project                 = "my-host-project-id"
      auto_create_subnetworks = false
    }

  2. Crie uma sub-rede na região us-west1:

    # Shared VPC network - backend subnet
    resource "google_compute_subnetwork" "lb_frontend_and_backend_subnet" {
      name          = "lb-frontend-and-backend-subnet"
      provider      = google-beta
      project       = "my-host-project-id"
      region        = "us-west1"
      ip_cidr_range = "10.1.2.0/24"
      role          = "ACTIVE"
      network       = google_compute_network.lb_network.id
    }

Configurar a sub-rede somente proxy

A sub-rede somente proxy é usada por todos os balanceadores de carga regionais baseados no Envoy na região us-west1, na rede VPC lb-network. Só pode haver uma sub-rede somente proxy ativa por região, por rede.

Não realize esta etapa se já houver uma sub-rede somente proxy reservada na região us-west1 desta rede.

Todas as etapas nesta seção precisam ser realizadas no projeto host.

Console

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

    Acessar redes VPC

  2. Clique no nome da rede VPC compartilhada: lb-network.
  3. Clique em Add subnet.
  4. Em Nome, insira proxy-only-subnet.
  5. Em Região, selecione us-west1.
  6. Defina Finalidade como Proxy gerenciado regional.
  7. Em Intervalo de endereços IP, insira 10.129.0.0/23.
  8. Clique em Adicionar.

gcloud

Crie a sub-rede somente proxy com o comando gcloud compute networks subnets create.

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

Terraform

Crie a sub-rede somente proxy:

# Shared VPC network - proxy-only subnet
resource "google_compute_subnetwork" "proxy_only_subnet" {
  name          = "proxy-only-subnet"
  provider      = google-beta
  project       = "my-host-project-id"
  region        = "us-west1"
  ip_cidr_range = "10.129.0.0/23"
  role          = "ACTIVE"
  purpose       = "REGIONAL_MANAGED_PROXY"
  network       = google_compute_network.lb_network.id
}

Conceder aos administradores do projeto de serviço acesso à sub-rede de back-end

Os administradores de projetos de serviço exigem acesso à sub-rede lb-frontend-and-backend-subnet para que possam provisionar os back-ends do balanceador de carga.

Um administrador de VPC compartilhada precisa conceder acesso à sub-rede de back-end aos administradores (ou desenvolvedores que implantarão recursos e back-ends que usam a sub-rede) do projeto de serviço. Veja instruções em Administradores de projetos de serviço para algumas sub-redes.

Configurar regras de firewall no projeto host

Neste exemplo, usamos as seguintes regras de firewall:
  • fw-allow-health-check. uma regra de entrada, aplicável às instâncias cuja carga está sendo balanceada, que permite todo o tráfego TCP dos sistemas de verificação de integridade do Google Cloud (em 130.211.0.0/22 e 35.191.0.0/16). Este exemplo usa a tag de destino load-balanced-backend para identificar as instâncias às quais ela deve se aplicar.
  • fw-allow-proxies. Uma regra de entrada, aplicável às instâncias submetidas a balanceamento de carga, que permite o tráfego TCP em portas80 ,443 e 8080 dos proxies gerenciados do balanceador de carga. Neste exemplo, usamos a tag de destino load-balanced-backend para identificar as instâncias às quais ela deve se aplicar.
Sem essas regras de firewall, a regra padrão de negação de entrada bloqueará o tráfego que chega para as instâncias de back-end.

Todas as etapas nesta seção precisam ser realizadas no projeto host.

Console

  1. No Console do Google Cloud, acesse a página políticas de Firewall.

    Acessar as políticas de firewall

  2. Clique em Criar regra de firewall para criar a regra que permite as verificações de integridade do Google Cloud:
    • Name: fw-allow-health-check
    • Rede: lb-network
    • Direção do tráfego: entrada
    • Ação na correspondência: permitir
    • Destinos: tags de destino especificadas
    • Tags de meta: load-balanced-backend
    • Filtro de origem: intervalos IPv4
    • Intervalos IPv4 de origem: 130.211.0.0/22 e 35.191.0.0/16
    • Protocolos e portas:
      • Escolha Protocolos e portas especificados.
      • Marque TCP e insira 80 como o número da porta.
      • Como prática recomendada, limite esta regra somente aos protocolos e portas que correspondem aos usados por sua verificação de integridade. Se você usar tcp:80 para o protocolo e a porta, o Google Cloud poderá usar HTTP na porta 80 para entrar em contato com suas VMs, mas não poderá usar HTTPS na porta 443 para entrar em contato com elas.

  3. Clique em Criar.
  4. Clique em Criar regra de firewall para criar a regra que permite as verificações de integridade do Google Cloud:
    • Name: fw-allow-proxies
    • Rede: lb-network
    • Direção do tráfego: entrada
    • Ação na correspondência: permitir
    • Destinos: tags de destino especificadas
    • Tags de meta: load-balanced-backend
    • Filtro de origem: intervalos IPv4
    • Intervalos IPv4 de origem: 10.129.0.0/23
    • Protocolos e portas:
      • Escolha Protocolos e portas especificados.
      • Marque TCP e insira 80, 443, 8080 como os números de porta.
  5. Clique em Criar.

gcloud

  1. Crie a regra de firewall fw-allow-health-check para permitir verificações de integridade do Google Cloud. Neste exemplo, todo o tráfego TCP de sondagens de verificação de integridade é permitido. No entanto, é possível configurar um conjunto mais restrito de portas para atender às suas necessidades.

    gcloud compute firewall-rules create fw-allow-health-check \
       --network=lb-network \
       --action=allow \
       --direction=ingress \
       --source-ranges=130.211.0.0/22,35.191.0.0/16 \
       --target-tags=load-balanced-backend \
       --rules=tcp
    
  2. Crie a regra de firewall fw-allow-proxies para permitir que o tráfego da sub-rede somente proxy do Envoy chegue aos seus back-ends.

    gcloud compute firewall-rules create fw-allow-proxies \
       --network=lb-network \
       --action=allow \
       --direction=ingress \
       --source-ranges=10.129.0.0/23 \
       --target-tags=load-balanced-backend \
       --rules=tcp:80,tcp:443,tcp:8080
    

Terraform

  1. Crie uma regra de firewall para permitir verificações de integridade do Google Cloud.

    resource "google_compute_firewall" "fw_allow_health_check" {
      name          = "fw-allow-health-check"
      provider      = google-beta
      project       = "my-host-project-id"
      direction     = "INGRESS"
      network       = google_compute_network.lb_network.id
      source_ranges = ["130.211.0.0/22", "35.191.0.0/16"]
      allow {
        protocol = "tcp"
      }
      target_tags = ["load-balanced-backend"]
    }

  2. Crie uma regra de firewall para permitir que o tráfego da sub-rede somente proxy do Envoy chegue aos seus back-ends.

    resource "google_compute_firewall" "fw_allow_proxies" {
      name          = "fw-allow-proxies"
      provider      = google-beta
      project       = "my-host-project-id"
      direction     = "INGRESS"
      network       = google_compute_network.lb_network.id
      source_ranges = ["10.129.0.0/23"]
      allow {
        protocol = "tcp"
        ports    = ["80", "443", "8080"]
      }
      target_tags = ["load-balanced-backend"]
    }

Configurar a VPC compartilhada no projeto host

Esta etapa envolve ativar um projeto host da VPC compartilhada, compartilhar sub-redes do projeto host e anexar projetos de serviço ao projeto host para que os projetos de serviço possam usar a rede VPC compartilhada. Para configurar a VPC compartilhada no projeto host, consulte as seguintes páginas:

O restante das instruções pressupõe que você já configurou a VPC compartilhada. Isso inclui a configuração de políticas do Cloud IAM para sua organização e a designação dos projetos host e de serviço.

Não continue até configurar a VPC compartilhada e ativar os projetos host e de serviço.

Depois de concluir as etapas definidas nesta seção de pré-requisitos, você poderá seguir uma das seguintes configurações:

Configurar um balanceador de carga no projeto de serviço

Este exemplo cria um balanceador de carga de aplicativo externo em que todos os componentes de balanceamento de carga (regra de encaminhamento, proxy de destino, mapa de URLs e serviço de back-end) e os back-ends são criados no projeto de serviço.

Os recursos de rede do balanceador de carga de aplicativo interno, como a sub-rede somente proxy e a sub-rede para as instâncias de back-end, são criados no projeto host. As regras de firewall para as instâncias de back-end também são criadas no projeto host.

Figura 1. Balanceador de carga HTTP(S) externo regional em VPC compartilhada
Figura 1. Balanceador de carga de aplicativo externo regional em VPC compartilhada

Nesta seção, mostramos como configurar o balanceador de carga e os back-ends. Essas etapas devem ser realizadas pelo administrador do projeto de serviço (ou um desenvolvedor que opere nele) e não exigem o envolvimento do administrador do projeto host. As etapas nesta seção são muito semelhantes às etapas padrão para configurar balanceadores de carga de aplicativo externos regionais.

No exemplo desta página, é definido explicitamente um endereço IP externo reservado para a regra de encaminhamento do balanceador de carga de aplicativo externo regional, em vez de um endereço IP externo temporário ser alocado. Como prática recomendada, reserve endereços IP para regras de encaminhamento.

Criar um back-end de grupo gerenciado de instâncias

Nesta seção, mostramos como criar um modelo de instância e um back-end de grupo de instâncias gerenciadas. O tráfego dos clientes tem a carga balanceada para VMs nesses grupos de instâncias.

Console

  1. Crie um modelo de instância. No Console do Google Cloud, acesse a página Modelos de instância.

    Acessar "Modelos de instância"

    1. Clique em Criar modelo de instância.
    2. Em Nome, insira l7-xlb-backend-template.
    3. Verifique se o disco de inicialização está definido como uma imagem Debian. Por exemplo, Debian GNU/Linux 10 (buster). Estas instruções usam comandos que estão disponíveis apenas no Debian, como apt-get. Se você precisar alterar o disco de inicialização, clique em Alterar.
      1. Em Sistema operacional, selecione Debian.
      2. Em Versão, selecione uma das imagens Debian disponíveis, como Debian GNU/Linux 10 (buster).
      3. Clique em Selecionar.
    4. Clique em Opções avançadas e em Rede.
    5. Insira as seguintes tags de rede: load-balanced-backend.
    6. Em Interfaces de rede, selecione Redes compartilhadas comigo (do projeto host: HOST_PROJECT_ID).
    7. Selecione a sub-rede lb-frontend-and-backend-subnet na rede lb-network.
    8. Clique em Gerenciamento. Em Gerenciamento, insira o script a seguir no campo Script de inicialização.

      #! /bin/bash
      apt-get update
      apt-get install apache2 -y
      a2ensite default-ssl
      a2enmod ssl
      vm_hostname="$(curl -H "Metadata-Flavor:Google" \
      http://metadata.google.internal/computeMetadata/v1/instance/name)"
      echo "Page served from: $vm_hostname" | \
      tee /var/www/html/index.html
      systemctl restart apache2
      
    9. Clique em Criar.

  2. Crie um grupo de instâncias gerenciadas. No Console do Google Cloud, acesse a página Grupos de instâncias.

    Acesse grupo de instâncias

    1. Clique em Criar grupo de instâncias.
    2. Escolha Novo grupo gerenciado de instâncias (sem estado). Para mais informações, consulte MIGs sem estado ou com estado.
    3. Em Nome, insira l7-xlb-backend-example.
    4. Em Local, selecione Zona única.
    5. Em Região, selecione us-west1.
    6. Em Zona, selecione us-west1-a.
    7. Em Modelo de instância, selecione l7-xlb-backend-template.
    8. Especifique o número de instâncias que você quer criar no grupo.

      Neste exemplo, especifique as seguintes opções em Escalonamento automático:

      • Em Modo de escalonamento automático, selecione Off:do not autoscale.
      • Em Número máximo de instâncias, insira 2.

      Opcionalmente, na seção Escalonamento automático, é possível configurar o grupo de instâncias para adicionar ou remover instâncias automaticamente com base no uso da CPU da instância.

    9. Clique em Criar.

gcloud

As instruções gcloud deste guia pressupõem que você está usando o Cloud Shell ou outro ambiente com o bash instalado.

  1. Crie um modelo de instância de VM com o servidor HTTP usando o comando gcloud compute instance-templates create.

    gcloud compute instance-templates create l7-xlb-backend-template \
    --region=us-west1 \
    --network=projects/HOST_PROJECT_ID/global/networks/lb-network \
    --subnet=projects/HOST_PROJECT_ID/regions/us-west1/subnetworks/lb-frontend-and-backend-subnet \
    --tags=load-balanced-backend \
    --image-family=debian-10 \
    --image-project=debian-cloud \
    --metadata=startup-script='#! /bin/bash
    apt-get update
    apt-get install apache2 -y
    a2ensite default-ssl
    a2enmod ssl
    vm_hostname="$(curl -H "Metadata-Flavor:Google" \
    http://metadata.google.internal/computeMetadata/v1/instance/name)"
    echo "Page served from: $vm_hostname" | \
    tee /var/www/html/index.html
    systemctl restart apache2' \
    --project=SERVICE_PROJECT_ID
    
  2. Crie um grupo de instâncias gerenciadas na zona com o comando gcloud compute instance-groups managed create.

    gcloud compute instance-groups managed create l7-xlb-backend-example \
        --zone=us-west1-a \
        --size=2 \
        --template=l7-xlb-backend-template \
        --project=SERVICE_PROJECT_ID
    

Reservar o endereço IP do balanceador de carga no projeto de serviço

Reserve um endereço IP externo estático regional para o balanceador de carga no projeto de serviço.

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

Console

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

    Acessar "Reservar um endereço estático"

  2. Insira um nome para o novo endereço.

  3. Em Nível de serviço de rede, selecione Padrão.

  4. Em Versão IP, selecione IPv4. Os endereços IPv6 só podem ser globais. Também só podem ser usados com balanceadores de carga globais.

  5. Em Tipo, selecione Regional.

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

  7. 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.

  8. Para reservar o endereço IP, clique em Reservar.

gcloud

Para reservar um endereço IP externo estático, use o comando compute addresses create.

gcloud compute addresses create IP_ADDRESS_NAME  \
    --region=us-west1 \
    --network-tier=STANDARD \
    --project=SERVICE_PROJECT_ID

Substitua:

  • IP_ADDRESS_NAME: o nome que você quer atribuir a esse endereço.
  • SERVICE_PROJECT_ID: o ID do projeto de serviço em que o balanceador de carga está sendo criado.

Configurar o balanceador de carga

Nesta seção, mostramos como criar os seguintes recursos regionais de balanceador de carga de aplicativo externo:

  • Verificação de integridade de HTTP
  • Serviço de back-end com um grupo de instâncias gerenciadas como o back-end
  • Um mapa de URL
  • Certificado SSL (obrigatório apenas para HTTPS)
  • Proxy de destino
  • Regra de encaminhamento

Disponibilidade de proxy

Dependendo do número de projetos de serviço que usam a mesma rede VPC compartilhada, há a possibilidade de atingir cotas ou limites mais rapidamente do que no modelo de implantação de rede em que cada projeto do Google Cloud hospeda a própria rede.

Por exemplo, às vezes, as regiões do Google Cloud não têm capacidade de proxy suficiente para um novo balanceador de carga de aplicativo externo regional. Se isso acontecer, o Console do Google Cloud fornecerá uma mensagem de aviso sobre a disponibilidade de proxy quando você criar o balanceador de carga. Para resolver esse problema, siga um destes procedimentos:

  • Aguarde o problema de capacidade ser resolvido.
  • Entre em contato com sua equipe de vendas do Google Cloud para aumentar esses limites.

Console

Migrar o contexto para o projeto de serviço

  1. No Console do Google Cloud, abra a página Painel.

    Ir para o painel

  2. Clique na lista Selecionar de na parte superior da página. Na janela Selecionar de exibida, selecione o projeto de serviço em que você quer criar o balanceador de carga.

Iniciar a configuração

  1. No console do Google Cloud, acesse a página Balanceamento de carga.

    Acessar o "Balanceamento de carga"

  2. Clique em Criar balanceador de carga.
  3. Em Tipo de balanceador de carga, selecione Balanceador de carga de aplicativo (HTTP/HTTPS) e clique em Próxima.
  4. Em Voltado ao público ou interno, selecione Voltado ao público (externo) e clique em Próxima.
  5. Em Implantação global ou de região única, selecione Melhor para cargas de trabalho regionais e clique em Próxima.
  6. Clique em Configurar.

Configuração básica

  1. Em Nome do balanceador de carga, digite l7-xlb-shared-vpc.
  2. Em Região, selecione us-west1.
  3. Em Rede, selecione lb-network (do Projeto: HOST_PROJECT_ID).

    Se você vir um aviso Sub-rede exclusiva de proxy necessária na rede VPC compartilhada, confirme se o administrador do projeto de host criou o proxy-only-subnet na região us-west1 na rede VPC compartilhada lb-network. A criação do balanceador de carga será bem-sucedida mesmo que você não tenha permissão para visualizar a sub-rede exclusiva de proxy nesta página.

  4. Mantenha a página aberta para continuar.

Configure o front-end

Para HTTP:

  1. Clique em Configuração de front-end.
  2. Clique em Adicionar IP e porta de front-end.
  3. Defina o Nome como l7-xlb-forwarding-rule.
  4. Defina Protocolo como HTTP.
  5. Defina a Porta como 80.
  6. Selecione o Endereço IP criado em Como reservar o endereço IP do balanceador de carga.

  7. Clique em Concluído.

Para HTTPS:

Se você usa o HTTPS entre o cliente e o balanceador de carga, um ou mais recursos de certificado SSL serão necessários para configurar o proxy. Saiba mais sobre como criar recursos de certificado SSL em Certificados SSL. No momento, os certificados gerenciados pelo Google não são compatíveis com balanceadores de carga regionais de aplicativos.

  1. Clique em Configuração de front-end.
  2. Clique em Adicionar IP e porta de front-end.
  3. No campo Nome, use l7-xlb-forwarding-rule.
  4. No campo Protocolo, selecione HTTPS (includes HTTP/2).
  5. Certifique-se de que Porta esteja definida como 443, para permitir tráfego HTTPS.
  6. Selecione o Endereço IP criado em Como reservar o endereço IP do balanceador de carga.
  7. Clique na lista Certificate.
    1. Se você já tiver um recurso de certificado SSL autogerenciado que você quer usar como o certificado SSL principal, selecione-o no menu.
    2. Caso contrário, selecione Criar um novo certificado.
      1. Preencha um Nome para l7-xlb-cert.
      2. Nos campos apropriados, faça o upload dos arquivos formatados em PEM:
        • Certificado de chave pública
        • Cadeia de certificados
        • Chave privada
      3. Clique em Criar.
  8. Para adicionar recursos de certificado além do certificado SSL principal, siga estas etapas:
    1. Clique em Adicionar certificado.
    2. Selecione um certificado na lista Certificados ou clique em Criar um novo certificado e siga as instruções acima.
  9. Clique em Concluído.

Configure o back-end

  1. Clique em Configuração de back-end.
  2. No menu Criar ou selecionar serviços de back-end, selecione Criar um serviço de back-end.
  3. Defina o Nome do serviço de back-end como l7-xlb-backend-service.
  4. Defina o Tipo de back-end como Grupos de instâncias.
  5. Na seção Novo back-end:
    1. Defina o Grupo de instâncias como l7-xlb-backend-example.
    2. Defina os Números de portas como 80.
    3. Defina o Modo de balanceamento como Utilização.
    4. Clique em Concluído.
  6. Na seção Verificação de integridade, escolha Criar verificação de integridade com os seguintes parâmetros:
    1. Name: l7-xlb-basic-check
    2. Protocolo: HTTP
    3. Porta: 80
  7. Clique em Salvar e continuar.
  8. Clique em Criar.

Configurar as regras de roteamento

  • Clique em Regras de roteamento. Certifique-se de que l7-xlb-backend-service seja o único serviço de back-end para qualquer host e qualquer caminho sem correspondência.

Saiba mais sobre gerenciamento de tráfego em Como configurar o gerenciamento de tráfego.

Revise e finalize a configuração

  • Clique em Criar

gcloud

  1. Defina a verificação de integridade HTTP com o comando gcloud compute health-checks create http.

    gcloud compute health-checks create http l7-xlb-basic-check \
       --region=us-west1 \
       --use-serving-port \
       --project=SERVICE_PROJECT_ID
    
  2. Defina o serviço de back-end com o comando gcloud compute backend-services create.

    gcloud compute backend-services create l7-xlb-backend-service \
      --load-balancing-scheme=EXTERNAL_MANAGED \
      --protocol=HTTP \
      --health-checks=l7-xlb-basic-check \
      --health-checks-region=us-west1 \
      --region=us-west1 \
      --project=SERVICE_PROJECT_ID
    
  3. Adicione back-ends ao serviço de back-end com o comando gcloud compute backend-services add-backend.

    gcloud compute backend-services add-backend l7-xlb-backend-service \
      --balancing-mode=UTILIZATION \
      --instance-group=l7-xlb-backend-example \
      --instance-group-zone=us-west1-a \
      --region=us-west1 \
      --project=SERVICE_PROJECT_ID
    
  4. Crie o mapa de URL com o comando gcloud compute url-maps create.

    gcloud compute url-maps create l7-xlb-map \
      --default-service=l7-xlb-backend-service \
      --region=us-west1 \
      --project=SERVICE_PROJECT_ID
    
  5. Crie o proxy de destino.

    Para HTTP:

    Para um balanceador de carga HTTP, crie o proxy de destino com o comando gcloud compute target-http-proxies create.

    gcloud compute target-http-proxies create l7-xlb-proxy \
      --url-map=l7-xlb-map \
      --url-map-region=us-west1 \
      --region=us-west1 \
      --project=SERVICE_PROJECT_ID
    

    Para HTTPS:

    Saiba mais sobre como criar recursos de certificado SSL em Certificados SSL. No momento, os certificados gerenciados pelo Google não são compatíveis com balanceadores de carga regionais de aplicativos.

    Atribua os caminhos de arquivo aos nomes de variáveis.

    export LB_CERT=path to PEM-formatted file
    
    export LB_PRIVATE_KEY=path to PEM-formatted file
    

    Crie um certificado SSL regional usando o comando gcloud compute ssl-certificates create.

    gcloud compute ssl-certificates create l7-xlb-cert \
      --certificate=$LB_CERT \
      --private-key=$LB_PRIVATE_KEY \
      --region=us-west1
    

    Use o certificado SSL regional para criar um proxy de destino com o comando gcloud compute target-https-proxies create.

    gcloud compute target-https-proxies create l7-xlb-proxy \
      --url-map=l7-xlb-map \
      --region=us-west1 \
      --ssl-certificates=l7-xlb-cert \
      --project=SERVICE_PROJECT_ID
    
  6. Crie a regra de encaminhamento.

    Para redes personalizadas, referencie a sub-rede na regra de encaminhamento.

    Como endereço IP da regra de encaminhamento, use o lb-frontend-and-backend-subnet. Se você tentar usar a sub-rede somente proxy, a criação da regra de encaminhamento falhará.

    Para HTTP:

    Use o comando gcloud compute forwarding-rules create com as sinalizações corretas.

    gcloud compute forwarding-rules create l7-xlb-forwarding-rule \
      --load-balancing-scheme=EXTERNAL_MANAGED \
      --network=projects/HOST_PROJECT_ID/global/networks/lb-network \
      --address=IP_ADDRESS_NAME \
      --ports=80 \
      --region=us-west1 \
      --target-http-proxy=l7-xlb-proxy \
      --target-http-proxy-region=us-west1 \
      --network-tier=STANDARD \
      --project=SERVICE_PROJECT_ID
    

    Para HTTPS:

    Crie a regra de encaminhamento usando o comando gcloud compute forwarding-rules create com as sinalizações corretas.

    gcloud compute forwarding-rules create l7-xlb-forwarding-rule \
      --load-balancing-scheme=EXTERNAL_MANAGED \
      --network=projects/HOST_PROJECT_ID/global/networks/lb-network \
      --address=IP_ADDRESS_NAME \
      --ports=443 \
      --region=us-west1 \
      --target-https-proxy=l7-xlb-proxy \
      --target-https-proxy-region=us-west1 \
      --network-tier=STANDARD \
      --project=SERVICE_PROJECT_ID
    

Testar o balanceador de carga

Agora que o serviço de balanceamento de carga está em execução, é possível enviar o tráfego para a regra de encaminhamento e observar como ele será distribuído em várias instâncias.

Console

  1. No Console do Google Cloud, acesse a página Balanceamento de carga.

    Acessar o "Balanceamento de carga"

  2. Clique no balanceador de carga que você acabou de criar.
  3. Anote o endereço IP do balanceador de carga. Esse endereço IP é chamado de LB_IP_ADDRESS nas etapas a seguir.
  4. Na seção Back-end, confirme se as VMs estão íntegras. A coluna Integridade deve estar preenchida, indicando que ambas as VMs estão íntegras (2/2). Caso contrário, primeiro tente recarregar a página. Pode levar alguns instantes para o console do Google Cloud indicar que as VMs estão íntegras. Se os back-ends não forem exibidos depois de alguns minutos, analise a configuração do firewall e a tag de rede atribuída às suas VMs de back-end.
  5. Depois que o console do Google Cloud mostrar que as instâncias de back-end estão íntegras, teste o balanceador de carga com um navegador da Web acessando https://LB_IP_ADDRESS (ou http://LB_IP_ADDRESS). Substitua LB_IP_ADDRESS pelo endereço IP do balanceador de carga.
  6. Caso você tenha usado um certificado autoassinado durante o teste, o navegador exibirá um aviso. Você precisa permitir que o navegador aceite um certificado autoassinado.
  7. Seu navegador deve renderizar uma página que mostre o nome da instância que a exibiu e a zona dela (por exemplo, Page served from: lb-backend-example-xxxx). Caso seu navegador não renderize essa página, revise as configuração mostradas neste guia.

gcloud

Anote o endereço IP que foi reservado:

gcloud compute addresses describe IP_ADDRESS_NAME \
    --format="get(address)" \
    --region=us-west1

É possível testar o balanceador de carga usando um navegador da Web acessando https://IP_ADDRESS_NAME (ou http://IP_ADDRESS_NAME). Substitua IP_ADDRESS_NAME pelo endereço IP do balanceador de carga.

Caso você tenha usado um certificado autoassinado durante o teste de HTTPS, o navegador exibirá um aviso. Você precisa permitir que o navegador aceite um certificado autoassinado.

O navegador precisa renderizar uma página com informações mínimas sobre a instância de back-end. Se o navegador não renderizar a página, revise as configurações neste guia.

Configurar um balanceador de carga com um serviço de back-end 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.

O balanceamento de carga de aplicativo externo regional também permite configurar implantações de VPC compartilhada em que um mapa de URL em um projeto host ou de serviço pode referenciar serviços de back-end (e back-ends) localizados em vários projetos de serviço em ambientes de VPC compartilhada. Isso é chamado de referência de serviço entre projetos.

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, com serviço 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 serviço de back-end em outro projeto de serviço.

A referência de serviços entre projetos pode ser usada com grupos de instâncias, NEGs sem servidor ou qualquer outro tipo de back-end com suporte. Se estiver usando NEGs sem servidor, crie uma VM na rede VPC em que você pretende criar o front-end do balanceador de carga. Por exemplo, consulte Criar uma instância de VM em uma sub-rede específica em Configurar um balanceador de carga de aplicativo externo regional com o Cloud Run.

Requisitos para criação

Este exemplo configura um balanceador de carga de amostra 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 no início desta 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.

Reservar o endereço IP do balanceador de carga no projeto de serviço A

Reserve um endereço IP externo estático regional para o balanceador de carga no projeto de serviço A.

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

Console

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

    Acessar "Reservar um endereço estático"

  2. Para o nome do novo endereço, digite cross-ref-ip-address.

  3. Em Nível de serviço de rede, selecione Padrão.

  4. Em Versão IP, selecione IPv4. Os endereços IPv6 só podem ser globais. Também só podem ser usados com balanceadores de carga globais.

  5. Em Tipo, selecione Regional.

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

  7. 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.

  8. Para reservar o endereço IP, clique em Reservar.

gcloud

Para reservar um endereço IP externo estático, use o comando compute addresses create.

gcloud compute addresses create IP_ADDRESS_CROSS_REF  \
    --region=us-west1 \
    --network-tier=STANDARD \
    --project=SERVICE_PROJECT_A_ID

Substitua:

  • IP_ADDRESS_CROSS_REF: o nome que você quer atribuir a esse endereço.
  • SERVICE_PROJECT_A_ID: o ID do projeto de serviço A em que o front-end do balanceador de carga está sendo criado.

Crie os back-ends e o serviço de back-end no projeto de serviço B

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

Console

  1. Crie um modelo de instância. No Console do Google Cloud, acesse a página Modelos de instância.

    Acessar "Modelos de instância"

    1. Clique em Criar modelo de instância.
    2. Digite um Nome para o modelo de instância: cross-ref-backend-template.
    3. Verifique se o disco de inicialização está definido como uma imagem Debian. Por exemplo, Debian GNU/Linux 10 (buster). Estas instruções usam comandos que estão disponíveis apenas no Debian, como apt-get. Se você precisar alterar o disco de inicialização, clique em Alterar.
      1. Em Sistema operacional, selecione Debian.
      2. Em Versão, selecione uma das imagens Debian disponíveis, como Debian GNU/Linux 10 (buster).
      3. Clique em Selecionar.
    4. Clique em Opções avançadas e em Rede.
    5. Insira as seguintes tags de rede: load-balanced-backend.
    6. Em Interfaces de rede, selecione Redes compartilhadas comigo (do projeto host: HOST_PROJECT_ID).
    7. Selecione a sub-rede lb-frontend-and-backend-subnet na rede lb-network.
    8. Clique em Gerenciamento. Em Gerenciamento, insira o script a seguir no campo Script de inicialização:

      #! /bin/bash
      apt-get update
      apt-get install apache2 -y
      a2ensite default-ssl
      a2enmod ssl
      vm_hostname="$(curl -H "Metadata-Flavor:Google" \
      http://metadata.google.internal/computeMetadata/v1/instance/name)"
      echo "Page served from: $vm_hostname" | \
      tee /var/www/html/index.html
      systemctl restart apache2
      
    9. Clique em Criar.

  2. Crie um grupo de instâncias gerenciadas. No Console do Google Cloud, acesse a página Grupos de instâncias.

    Acesse grupo de instâncias

    1. Clique em Criar grupo de instâncias.
    2. Escolha Novo grupo gerenciado de instâncias (sem estado). Para mais informações, consulte MIGs sem estado ou com estado.
    3. Digite um Nome para o grupo de instâncias: cross-ref-ig-backend.
    4. Em Local, selecione Zona única.
    5. Em Região, selecione us-west1.
    6. Em Zona, selecione us-west1-a.
    7. Em Modelo de instância, selecione cross-ref-backend-template.
    8. Especifique o número de instâncias que você quer criar no grupo.

      Neste exemplo, especifique as seguintes opções em Escalonamento automático:

      • Em Modo de escalonamento automático, selecione Off:do not autoscale.
      • Em Número máximo de instâncias, insira 2.

      Opcionalmente, na seção Escalonamento automático, é possível configurar o grupo de instâncias para adicionar ou remover instâncias automaticamente com base no uso da CPU da instância.

    9. Clique em Criar.

  3. Criar um serviço de back-end regional Como parte desta etapa, também criamos a verificação de integridade e adicionamos back-ends ao serviço de back-end. No console do Google Cloud, abra a página Back-ends.

    Acessar back-ends

    1. Clique em Criar serviço de back-end regional.
    2. Digite um Nome para o serviço de back-end: cross-ref-backend-service.
    3. Em Região, selecione us-west1.
    4. Em Tipo de balanceador de carga, selecione Balanceador de carga de aplicativo externo regional (EXTERNAL_MANAGED).
    5. Defina o Tipo de back-end como Grupos de instâncias.
    6. Na seção Back-ends, defina Rede como lb-network.
    7. Clique em Adicionar back-end e defina os seguintes campos:
      1. Defina o Grupo de instâncias como cross-ref-ig-backend.
      2. Defina Números de portas como 80.
      3. Defina Modo de balanceamento como Utilização.
      4. Clique em Concluído.
    8. Na seção Verificação de integridade, escolha Criar verificação de integridade com os seguintes parâmetros:
      1. Name: cross-ref-http-health-check
      2. Protocolo: HTTP
      3. Porta: 80
      4. Clique em Save.
    9. Opcional: na seção Adicionar permissões, insira os principais do IAM (geralmente um endereço de e-mail) de administradores do balanceador de carga de outros projetos para que eles possam usar esse serviço de back-end balanceadores de carga nos próprios projetos. Sem essa permissão, não é possível usar a referência de serviços entre projetos.

      Se você não tiver permissão para definir políticas de controle de acesso para serviços de back-end neste projeto, ainda será possível criar o serviço de back-end agora, e um usuário autorizado poderá executar essa etapa mais tarde, conforme descrito na seção Conceda permissões ao administrador do balanceador de carga para usar o serviço de back-end. Essa seção também descreve como conceder acesso a todos os serviços de back-end neste projeto para que você não precise conceder acesso sempre que criar um novo serviço de back-end.

    10. Clique em Criar.

gcloud

  1. Crie um modelo de instância de VM com o servidor HTTP usando o comando gcloud compute instance-templates create.

    gcloud compute instance-templates create BACKEND_IG_TEMPLATE \
        --region=us-west1 \
        --network=projects/HOST_PROJECT_ID/global/networks/lb-network \
        --subnet=projects/HOST_PROJECT_ID/regions/us-west1/subnetworks/lb-frontend-and-backend-subnet \
        --tags=load-balanced-backend \
        --image-family=debian-10 \
        --image-project=debian-cloud \
        --metadata=startup-script='#! /bin/bash
        apt-get update
        apt-get install apache2 -y
        a2ensite default-ssl
        a2enmod ssl
        vm_hostname="$(curl -H "Metadata-Flavor:Google" \
        http://metadata.google.internal/computeMetadata/v1/instance/name)"
        echo "Page served from: $vm_hostname" | \
        tee /var/www/html/index.html
        systemctl restart apache2' \
        --project=SERVICE_PROJECT_B_ID
    

    Substitua:

    • BACKEND_IG_TEMPLATE: o nome do modelo do grupo de instâncias.
    • SERVICE_PROJECT_B_ID: o ID do projeto de serviço B, em que os back-ends do balanceador de carga e o serviço de back-end estão sendo criados.
    • HOST_PROJECT_ID: o ID do projeto host da VPC compartilhada.
  2. Crie um grupo de instâncias gerenciadas na zona com o comando gcloud compute instance-groups managed create.

    gcloud compute instance-groups managed create BACKEND_MIG \
        --zone=us-west1-a \
        --size=2 \
        --template=BACKEND_IG_TEMPLATE \
        --project=SERVICE_PROJECT_B_ID
    

    Substitua:

    • BACKEND_MIG: o nome do grupo de instâncias de back-end.
  3. Defina a verificação de integridade HTTP com o comando gcloud compute health-checks create http.

    gcloud compute health-checks create http HTTP_HEALTH_CHECK_NAME \
      --region=us-west1 \
      --use-serving-port \
      --project=SERVICE_PROJECT_B_ID
    

    Substitua:

    • HTTP_HEALTH_CHECK_NAME: o nome da verificação de integridade HTTP.
  4. Defina o serviço de back-end com o comando gcloud compute backend-services create.

    gcloud compute backend-services create BACKEND_SERVICE_NAME \
      --load-balancing-scheme=EXTERNAL_MANAGED \
      --protocol=HTTP \
      --health-checks=HTTP_HEALTH_CHECK_NAME \
      --health-checks-region=us-west1 \
      --region=us-west1 \
      --project=SERVICE_PROJECT_B_ID
    

    Substitua:

    • BACKEND_SERVICE_NAME: o nome do serviço de back-end criado no projeto de serviço B.
  5. Adicione back-ends ao serviço de back-end com o comando gcloud compute backend-services add-backend.

    gcloud compute backend-services add-backend BACKEND_SERVICE_NAME \
      --balancing-mode=UTILIZATION \
      --instance-group=BACKEND_MIG \
      --instance-group-zone=us-west1-a \
      --region=us-west1 \
      --project=SERVICE_PROJECT_B_ID
    

Crie o front-end do balanceador de carga e o mapa de URL no projeto de serviço A

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

Console

Iniciar a configuração

  1. No console do Google Cloud, acesse a página Balanceamento de carga.

    Acessar o "Balanceamento de carga"

  2. Clique em Criar balanceador de carga.
  3. Em Tipo de balanceador de carga, selecione Balanceador de carga de aplicativo (HTTP/HTTPS) e clique em Próxima.
  4. Em Voltado ao público ou interno, selecione Voltado ao público (externo) e clique em Próxima.
  5. Em Implantação global ou de região única, selecione Melhor para cargas de trabalho regionais e clique em Próxima.
  6. Clique em Configurar.

Preparar o balanceador de carga

  1. Insira o Nome do balanceador de carga: cross-ref-l7-xlb-shared-vpc.
  2. Em Região, selecione us-west1.
  3. Em Rede, selecione lb-network (do Projeto: HOST_PROJECT_ID).

    Se você vir um aviso Sub-rede exclusiva de proxy necessária na rede VPC compartilhada, confirme se o administrador do projeto de host criou o proxy-only-subnet na região us-west1 na rede VPC compartilhada lb-network. A criação do balanceador de carga será bem-sucedida mesmo que você não tenha permissão para visualizar a sub-rede somente proxy nesta página.

  4. Mantenha a página aberta para continuar.

Configure o front-end

Para que o serviço de projetos cruzados faça referência, o front-end precisa usar a mesma rede (lb-network) do projeto host da VPC compartilhada que foi usada para criar o serviço de back-end.

Para HTTP:

  1. Clique em Configuração de front-end.
  2. Insira um nome para a regra de encaminhamento: cross-ref-http-forwarding-rule.
  3. Defina Protocolo como HTTP.
  4. Defina o Sub-rede para lb-frontend-and-backend-subnet.

    Não selecione a sub-rede exclusiva de proxy para o front-end, mesmo que seja uma opção na lista.

  5. Selecione aEndereço IP criado em Como reservar o endereço IP do balanceador de carga, chamado cross-ref-ip-address.

  6. Defina a Porta como 80.

  7. Clique em Concluído.

Para HTTPS:

Se você usa o HTTPS entre o cliente e o balanceador de carga, um ou mais recursos de certificado SSL serão necessários para configurar o proxy. Saiba mais sobre como criar recursos de certificado SSL em Certificados SSL. No momento, os certificados gerenciados pelo Google não são compatíveis com balanceadores de carga regionais de aplicativos.

  1. Clique em Configuração de front-end.
  2. Insira um nome para a regra de encaminhamento: cross-ref-https-forwarding-rule.
  3. No campo Protocolo, selecione HTTPS (includes HTTP/2).
  4. Defina o Sub-rede para lb-frontend-and-backend-subnet.

    Não selecione a sub-rede exclusiva de proxy para o front-end, mesmo que seja uma opção na lista.

  5. Selecione o Endereço IP criado em Como reservar o endereço IP do balanceador de carga, chamado cross-ref-ip-address.

  6. Certifique-se de que Porta esteja definida como 443, para permitir tráfego HTTPS.

  7. Clique na lista Certificate.

    1. Se você já tiver um recurso de certificado SSL autogerenciado que você quer usar como o certificado SSL principal, selecione-o no menu.
    2. Caso contrário, selecione Criar um novo certificado.
      1. Digite um Nome para o certificado SSL.
      2. Nos campos apropriados, faça o upload dos arquivos formatados em PEM:
        • Certificado de chave pública
        • Cadeia de certificados
        • Chave privada
      3. Clique em Criar.
  8. Para adicionar recursos de certificado além do certificado SSL principal:

    1. Clique em Adicionar certificado.
    2. Selecione um certificado na lista Certificados ou clique em Criar um novo certificado e siga as instruções anteriores.
  9. Clique em Concluído.

Configure o back-end

  1. Clique em Configuração de back-end.
  2. Clique em Serviços de back-end entre projetos.
  3. Em ID do projeto, insira o ID do projeto para o projeto de serviço B.
  4. Em Nome do serviço de back-end, insira o nome do serviço de back-end do projeto de serviço B que você quer usar. Para este exemplo, digite cross-ref-backend-service.
  5. Clique em Adicionar serviço de back-end.

Configurar as regras de roteamento

  • Clique em Regras de roteamento. Certifique-se de que cross-ref-backend-service seja o único serviço de back-end para qualquer host e qualquer caminho sem correspondência.

Saiba mais sobre gerenciamento de tráfego em Como configurar o gerenciamento de tráfego.

Revise e finalize a configuração

  • Clique em Criar.

Testar o balanceador de carga

Após a criação do balanceador de carga, teste o balanceador usando as etapas descritas em Testar o balanceador de carga.

gcloud

  1. Crie o mapa de URL e defina o serviço padrão como o serviço de back-end criado no projeto de serviço B.

    gcloud compute url-maps create URL_MAP_NAME \
        --default-service=projects/SERVICE_PROJECT_B_ID/regions/us-west1/backendServices/BACKEND_SERVICE_NAME \
        --region=us-west1 \
        --project=SERVICE_PROJECT_A_ID
    

    Substitua:

    • URL_MAP_NAME: o nome do mapa de URL.
    • BACKEND_SERVICE_NAME: o nome do serviço de back-end criado no projeto de serviço B.
    • SERVICE_PROJECT_B_ID: o ID do projeto de serviço B, em que os back-ends do balanceador de carga e o serviço de back-end são criados.
    • SERVICE_PROJECT_A_ID: o ID do projeto de serviço A em que o front-end do balanceador de carga está sendo criado.

    A criação de mapas de URL falhará se você não tiver a permissão compute.backendServices.use para o serviço de back-end no projeto de serviço B.

  2. Crie o proxy de destino.

    Para HTTP:

    gcloud compute target-http-proxies create HTTP_TARGET_PROXY_NAME \
      --url-map=URL_MAP_NAME \
      --url-map-region=us-west1 \
      --region=us-west1 \
      --project=SERVICE_PROJECT_A_ID
    

    Substitua:

    • HTTP_TARGET_PROXY_NAME: o nome do proxy HTTP de destino.

    Para HTTPS:

    Crie um certificado SSL regional usando o comando gcloud compute ssl-certificates create.

    gcloud compute ssl-certificates create SSL_CERTIFICATE_NAME \
      --certificate=PATH_TO_CERTIFICATE \
      --private-key=PATH_TO_PRIVATE_KEY \
      --region=us-west1 \
      --project=SERVICE_PROJECT_A_ID
    

    Substitua:

    • SSL_CERTIFICATE_NAME: o nome do recurso de certificado SSL.
    • PATH_TO_CERTIFICATE: o caminho para o arquivo de certificado SSL local no formato PEM.
    • PATH_TO_PRIVATE_KEY: o caminho para a chave privada do certificado SSL local no formato PEM.

    Use o certificado SSL regional para criar um proxy de destino com o comando gcloud compute target-https-proxies create.

    gcloud compute target-https-proxies create HTTPS_TARGET_PROXY_NAME \
      --url-map=URL_MAP_NAME \
      --region=us-west1 \
      --ssl-certificates=SSL_CERTIFICATE_NAME \
      --project=SERVICE_PROJECT_A_ID
    

    Substitua:

    • HTTPS_TARGET_PROXY_NAME: um nome para o proxy HTTPS de destino.
  3. Crie a regra de encaminhamento. Para que o serviço de projetos cruzados faça referência, a regra de encaminhamento precisa usar a mesma rede (lb-network) do projeto host da VPC compartilhada que foi usada para criar o serviço de back-end.

    Para HTTP:

    gcloud compute forwarding-rules create HTTP_FORWARDING_RULE_NAME \
      --load-balancing-scheme=EXTERNAL_MANAGED \
      --network=projects/HOST_PROJECT_ID/global/networks/lb-network \
      --address=IP_ADDRESS_CROSS_REF \
      --ports=80 \
      --region=us-west1 \
      --target-http-proxy=HTTP_TARGET_PROXY_NAME \
      --target-http-proxy-region=us-west1 \
      --network-tier=STANDARD \
      --project=SERVICE_PROJECT_A_ID
    

    Substitua:

    • HTTP_FORWARDING_RULE_NAME: o nome da regra de encaminhamento usada para processar o tráfego HTTP.

    Para HTTPS:

    gcloud compute forwarding-rules create HTTPS_FORWARDING_RULE_NAME \
      --load-balancing-scheme=EXTERNAL_MANAGED \
      --network=projects/HOST_PROJECT_ID/global/networks/lb-network \
      --address=IP_ADDRESS_CROSS_REF \
      --ports=443 \
      --region=us-west1 \
      --target-https-proxy=HTTPS_TARGET_PROXY_NAME \
      --target-https-proxy-region=us-west1 \
      --network-tier=STANDARD \
      --project=SERVICE_PROJECT_A_ID
    

    Substitua:

    • HTTPS_FORWARDING_RULE_NAME: o nome da regra de encaminhamento usada para processar o tráfego HTTPS.
  4. Para testar o balanceador de carga, use as etapas descritas em Testar o balanceador de carga.

Conceder permissões ao administrador do balanceador de carga para usar o serviço de back-end

Se você quiser que os balanceadores de carga façam referência a serviços de back-end em outros projetos de serviço, o administrador do balanceador de carga precisará ter a permissão compute.backendServices.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 ou no nível do serviço de back-end individual.

Esta etapa não será necessária se você já tiver concedido as permissões necessárias no nível do serviço de back-end ao criá-lo. Você pode pular esta seção ou continuar a ler para saber como conceder acesso a todos os serviços de back-end neste projeto para que não precise conceder acesso sempre que criar um novo back-end serviço.

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.backendServices.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 serviços de back-end no projeto) ou por serviço de back-end.

Console

Permissões de nível de projeto

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

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

  1. No console do Google Cloud, acesse a página Serviços de balanceamento de carga compartilhados.

    Acessar "Serviços de balanceamento de carga compartilhados"

  2. Na seção Todas as permissões de serviço de back-end (permissões no nível do projeto), selecione seu projeto.

  3. Se o painel de permissões não estiver visível, clique em Mostrar painel de permissões. O painel Permissões no nível do projeto é aberto à direita.

  4. Clique em adicionar conta principal.

  5. Em Novos principais, insira o endereço de e-mail do principal ou outro identificador.

  6. Em Papel, selecione o papel Usuário de serviços do balanceador de carga do Compute na lista suspensa.

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

  8. Clique em Save.

Permissões no nível do recurso para serviços de back-end individuais

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

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

gcloud

Permissões de nível de projeto

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

Você precisa das permissões compute.regionBackendServices.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"

Permissões no nível do recurso para serviços de back-end individuais

No nível de serviço 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).

A permissão compute.regionBackendServices.setIamPolicy é necessária 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/us-west1/backend-services/BACKEND_SERVICE_NAME",title=Shared VPC condition'

ou

gcloud compute backend-services add-iam-policy-binding BACKEND_SERVICE_NAME \
    --member="user:LOAD_BALANCER_ADMIN" \
    --role="roles/compute.loadBalancerServiceUser" \
    --project=SERVICE_PROJECT_B_ID \
    --region=us-west1

Para usar esses comandos, substitua LOAD_BALANCER_ADMIN pelo principal do usuário, por exemplo, test-user@gmail.com.

Também é possível configurar permissões do IAM para que elas se apliquem apenas a um subconjunto de serviços de back-end regionais usando condições e especificando atributos de condição.

A seguir