Como configurar o balanceamento de carga HTTP(S) interno com uma VPC compartilhada

Neste documento, fornecemos instruções para configurar o balanceamento de carga HTTP(S) interno em uma rede VPC compartilhada.

Se você não quiser usar uma rede VPC compartilhada, veja Como configurar o balanceamento de carga HTTP(S) interno.

Antes de começar

  1. Leia Visão geral da VPC compartilhada.
  2. Leia a Visão geral do balanceamento de carga HTTP(S) interno, incluindo as seções Arquiteturas de VPC compartilhadas e Limitações.

Permissões

A configuração do balanceador de carga HTTP(S) interno para uma VPC compartilhada exige algumas configurações e provisionamentos antecipados de um administrador. Depois disso, o proprietário do projeto de serviço pode implantar o balanceador de carga e os back-ends usando os recursos provisionados pelo administrador.

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

Configurar VPC compartilhada

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

  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 na 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 host a qualquer pessoa (normalmente desenvolvedores ou administradores do projeto de serviço) que precisa usar esses recursos.

Tarefa Papel necessário
Usar VPCs e sub-redes 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 e atualizar back-ends e balanceadores de carga HTTP(S) internos

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. As permissões concedidas por esses papéis serão concedidas automaticamente se você for proprietário ou editor de um 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

Para mais informações, consulte estes guias:

Visão geral da configuração

Conforme mostrado no diagrama, este exemplo cria um balanceador de carga HTTP(S) interno em uma implantação de rede VPC compartilhada.

Balanceamento de carga HTTP(S) interno na VPC compartilhada
Balanceamento de carga HTTP(S) interno na VPC compartilhada

Os recursos de rede do balanceador de carga HTTP(S) 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.

A regra de encaminhamento do balanceador de carga, o proxy de destino, o mapa de URL, o serviço de back-end e as instâncias de back-end são criados no projeto de serviço.

Pré-requisitos

As etapas desta seção não precisam ser executadas sempre que você quiser criar um balanceador de carga HTTP(S) interno. No entanto, é preciso garantir que você tenha acesso aos recursos descritos aqui antes de continuar criando o balanceador de carga.

Como configurar a VPC compartilhada com um projeto host e de serviço

  1. Configurar VPC compartilhada.
  2. Ativar um projeto host.
  3. Anexar um projeto de serviço.

O restante das instruções pressupõe que você já configurou a VPC compartilhada. Isso envolve a configuração de políticas do 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.

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 front-end e 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

Esta etapa não precisa ser executada sempre que você quiser criar um balanceador de carga HTTP(S) interno. 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).

Cloud Console

  1. No Console do Google Cloud, acesse a página Redes VPC.
    Faça isso neste link
  2. Clique em Criar rede VPC.
  3. Em Nome, insira lb-network.
  4. Na seção Sub-redes:
    • Defina o Modo de criação de sub-rede como Personalizado.
    • Na seção Nova sub-rede, insira as informações a seguir:
      • Nome: lb-frontend-and-backend-subnet
      • Região: us-west1
      • Intervalo de endereços IP: 10.1.2.0/24
    • 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
    

Configurar a sub-rede somente proxy

A sub-rede exclusiva de proxy é usada por todos os balanceadores de carga HTTP(S) internos na região us-west1, na rede VPC lb-network. Só pode haver uma sub-rede exclusiva de proxy ativa por região em cada rede.

Não execute esta etapa se já houver uma sub-rede somente proxy reservada para balanceadores de carga HTTP(S) internos na região us-west1 nesta rede.

Console do Cloud

  1. No Console do Cloud, acesse a página Redes VPC.
    Faça isso neste link
  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 Reservar o balanceamento de carga HTTP(S) interno como Ativado.
  7. Em Intervalo de endereços IP, digite 10.129.0.0/23.
  8. Clique em Add.

gcloud

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

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

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

Os administradores do projeto de serviço precisam do acesso à sub-rede lb-frontend-and-backend-subnet para escolher um endereço IP de front-end para o balanceador de carga e 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.

Como configurar regras de firewall no projeto host

Esta etapa não precisa ser executada sempre que você quiser criar um balanceador de carga HTTP(S) interno. Essa é uma etapa única que precisa ser realizada pelo administrador do projeto host no projeto host.

Este exemplo usa as seguintes regras de firewall:

  • fw-allow-ssh: uma regra de entrada, aplicável às instâncias cuja carga está sendo balanceada, que permite a conectividade SSH de entrada na porta TCP 22 proveniente de qualquer endereço. Escolha um intervalo de IP de origem mais restritivo para esta 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.

  • 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 cuja carga está sendo balanceada, que permite o tráfego TCP nas portas 80, 443 e 8080 proveniente do proxies gerenciados pelo balanceador de carga HTTP(S) interno. 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.

Cloud Console

  1. No Console do Cloud, acesse a página Regras de firewall.
    Faça isso neste link
  2. Clique em Criar regra de firewall novamente para criar uma regra que autorize conexões SSH de entrada:
    • Nome: fw-allow-ssh
    • Rede: lb-network
    • Direção do tráfego: entrada
    • Ação se houver correspondência: permitir
    • Destinos: tags de destino especificadas
    • Tags de destino: allow-ssh
    • Filtro de origem: IP ranges
    • Intervalos de IP de origem: 0.0.0.0/0
    • Protocolos e portas:
      • Escolha Protocolos e portas especificados.
      • Verifique tcp e digite 22 como o número da porta.
  3. Clique em Criar.
  4. Clique em Criar regra de firewall pela segunda vez para criar uma regra que autorize as verificações de integridade do Google Cloud:
    • Nome: fw-allow-health-check
    • Rede: lb-network
    • Direção do tráfego: entrada
    • Ação se houver correspondência: permitir
    • Destinos: tags de destino especificadas
    • Tags de destino: load-balanced-backend
    • Filtro de origem: IP ranges
    • Intervalos de IP 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 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.
  5. Clique em Criar
  6. Clique em Criar regra de firewall uma terceira vez para criar a regra que permite que os servidores proxy do balanceador de carga se conectem aos back-ends:
    • Nome: fw-allow-proxies
    • Rede: lb-network
    • Direção do tráfego: entrada
    • Ação se houver correspondência: permitir
    • Destinos: tags de destino especificadas
    • Tags de destino: load-balanced-backend
    • Filtro de origem: IP ranges
    • Intervalos de IP de origem: 10.129.0.0/23
    • Protocolos e portas:
      • Escolha Protocolos e portas especificados.
      • Verifique tcp e digite 80, 443, 8080 como o número da porta.
  7. Clique em Criar.

gcloud

  1. Crie a regra de firewall fw-allow-ssh que permita a conectividade SSH para VMs com a tag de rede allow-ssh. Se você omitir source-ranges, o Google Cloud interpretará que a regra autoriza a conexão proveniente de qualquer origem.

    gcloud compute firewall-rules create fw-allow-ssh \
        --network=lb-network \
        --action=allow \
        --direction=ingress \
        --target-tags=allow-ssh \
        --rules=tcp:22
    
  2. Crie a regra fw-allow-health-check para permitir verificações de integridade do Google Cloud. Neste exemplo, é permitido todo o tráfego TCP de sondagens de verificação de integridade. 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
    
  3. Crie a regra fw-allow-proxies para permitir que os proxies do balanceador de carga HTTP(S) interno se conectem aos 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
    

Como configurar o balanceador de carga HTTP(S) interno no projeto de serviço

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 desta seção são muito semelhantes às etapas padrão para configurar o balanceamento de carga HTTP(S) interno.

Nesta seção, mostramos a configuração necessária para definir o balanceamento de carga para serviços em execução em VMs do Compute Engine ou em pods em um cluster do Google Kubernetes Engine. Os clientes se conectam ao endereço IP e à porta configurados na regra de encaminhamento do balanceador de carga. Quando os clientes enviam tráfego para esse endereço IP e essa porta, as solicitações são encaminhadas para as instâncias de back-end (VMs do Compute Engine ou pods do GKE) de acordo com o mapa de URL do balanceador de carga HTTP(S) interno.

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

Como criar um grupo de instâncias gerenciadas

Nesta seção, você verá como criar um modelo e um grupo de instâncias gerenciadas. O grupo de instâncias gerenciadas fornece instâncias de VM que executam os servidores de back-end de um exemplo de balanceador de carga HTTP(S) interno. Para esses servidores de back-end, é feito o balanceamento de carga do tráfego dos clientes. Para fins de demonstração, os back-ends veiculam nomes de host próprios.

Console do Cloud

  1. No Console do Cloud, acesse a página Grupos de instâncias.
    Faça isso neste link
  2. Clique em Criar grupo de instâncias.
  3. Escolha Novo grupo de instâncias gerenciadas à esquerda.
  4. Em Nome, insira l7-ilb-backend-example.
  5. Em Local, selecione Única zona.
  6. Em Região, selecione us-west1.
  7. Em Zona, selecione us-west1-a.
  8. Em Modelo de instância, selecione Criar um novo modelo de instância.

    1. Em Nome, insira l7-ilb-backend-template.
    2. Certifique-se de que o Disco de inicialização esteja configurado como uma imagem Debian. Por exemplo, Debian GNU/Linux 9 (stretch). 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 disponíveis do Debian, como Debian GNU/Linux 9 (stretch).
      3. Clique em Selecionar.
    3. Na guia Gerenciamento, insira o seguinte script no campo Script de inicialização em Gerenciamento, segurança, discos, rede, locatário único.

      #! /bin/bash
      apt-get update
      apt-get install apache2 -y
      a2ensite default-ssl
      a2enmod ssl
      vm_hostname="$(curl -H "Metadata-Flavor:Google" \
      http://169.254.169.254/computeMetadata/v1/instance/name)"
      echo "Page served from: $vm_hostname" | \
      tee /var/www/html/index.html
      systemctl restart apache2'
      
    4. Em Rede, selecione Redes compartilhadas comigo (do projeto host: HOST_PROJECT_ID).

    5. Selecione lb-network como Rede e, para a Sub-rede, selecione lb-frontend-and-backend-subnet.

    6. Adicione as seguintes tags de rede: allow-ssh e load-balanced-backend.

    7. Clique em Salvar e continuar.

  9. Especifique o número de instâncias que você quer criar no grupo.

    Para este exemplo, em Modo de escalonamento automático, selecione:

    • Não fazer escalonamento automático
    • Em Número de instâncias, insira 2

    Se preferir, na seção Escalonamento automático da IU, configure o grupo de instâncias para adicionar ou remover instâncias automaticamente com base no uso de CPU da instância.

  10. Clique em Criar para criar o novo grupo.

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-ilb-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=allow-ssh,load-balanced-backend \
    --image-family=debian-9 \
    --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://169.254.169.254/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-ilb-backend-example \
        --zone=us-west1-a \
        --size=2 \
        --template=l7-ilb-backend-template \
        --project SERVICE_PROJECT_ID
    

Como configurar o balanceador de carga

Neste exemplo, você verá como criar os seguintes recursos do balanceador de carga HTTP(S) interno:

  • 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, é possível alcançar 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 HTTP(S) interno. Se isso acontecer, o Console do 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 do Cloud

Selecionar um tipo de balanceador de carga

  1. No Console do Cloud, acesse a página Balanceamento de carga.
    Acessar a página "Balanceamento de carga"
  2. Em Balanceamento de carga HTTP(S), clique em Iniciar configuração.
  3. Selecione Apenas entre minhas VMs. Essa configuração implica que o balanceador de carga é interno.
  4. Clique em Continuar.

Preparar o balanceador de carga

  1. Em Nome do balanceador de carga, digite l7-ilb-shared-vpc.
  2. Em Região, selecione us-west1.
  3. Em Rede, selecione Redes compartilhadas comigo (do projeto host: HOST_PROJECT_ID).
    1. Na lista suspensa, selecione lb-network.
      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 janela aberta para continuar.

Configurar o serviço de 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-ilb-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-ilb-backend-example.
    2. Defina os Números de portas como 80.
    3. Defina o Modo de balanceamento como Utilização.
    4. Clique em Done.
  6. Na seção Verificação de integridade, escolha Criar verificação de integridade com os seguintes parâmetros:
    1. Name: l7-ilb-basic-check
    2. Protocolo: HTTP
    3. Porta: 80
  7. Clique em Salvar e continuar.
  8. Clique em Criar.

Configurar o mapa de URL

Clique em Regras de roteamento. Certifique-se de que l7-ilb-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.

Configurar 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-ilb-forwarding-rule.
  4. Defina Protocolo como HTTP.
  5. 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 suspensa.
  6. Em IP interno, selecione Reservar um endereço IP interno estático.
  7. No painel exibido, forneça os seguintes detalhes:
    1. Name: l7-ilb-ip
    2. Na seção Endereço IP estático, selecione Quero escolher.
    3. Na seção Endereço IP personalizado, insira 10.1.2.99.
    4. Clique em Reservar.
  8. Defina Porta como 80.
  9. 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. Atualmente, os certificados gerenciados pelo Google não são compatíveis com balanceadores de carga HTTP(S) internos.

  1. Clique em Configuração de front-end.
  2. Clique em Adicionar IP e porta de front-end.
  3. No campo Nome, use l7-ilb-forwarding-rule.
  4. No campo Protocolo, selecione HTTPS (includes HTTP/2).
  5. 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 suspensa.
  6. Em IP interno, selecione Reservar um endereço IP interno estático.
  7. No painel exibido, forneça os seguintes detalhes:
    1. Name: l7-ilb-ip
    2. Na seção Endereço IP estático, selecione Quero escolher.
    3. Na seção Endereço IP personalizado, insira 10.1.2.99.
    4. Clique em Reservar.
  8. Certifique-se de que a Porta esteja definida como 443, para permitir tráfego HTTPS.
  9. Clique na lista suspensa Certificado.
    1. Se você já tiver um recurso de certificado SSL autogerenciado que você quer usar como o certificado SSL principal, selecione-o no menu suspenso.
    2. Caso contrário, selecione Criar um novo certificado.
      1. Preencha um Nome para l7-ilb-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.
  10. 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.
  11. Clique em Concluído.

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-ilb-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-ilb-backend-service \
      --load-balancing-scheme=INTERNAL_MANAGED \
      --protocol=HTTP \
      --health-checks=l7-ilb-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-ilb-backend-service \
      --balancing-mode=UTILIZATION \
      --instance-group=l7-ilb-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-ilb-map \
      --default-service=l7-ilb-backend-service \
      --region=us-west1 \
      --project SERVICE_PROJECT_ID
    
  5. Crie o proxy de destino.

    Para HTTP:

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

    gcloud compute target-http-proxies create l7-ilb-proxy \
      --url-map=l7-ilb-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. Atualmente, os certificados gerenciados pelo Google não são compatíveis com balanceadores de carga HTTP(S) internos.

    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-ilb-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-ilb-proxy \
      --url-map=l7-ilb-map \
      --region=us-west1 \
      --ssl-certificates=l7-ilb-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-ilb-forwarding-rule \
      --load-balancing-scheme=INTERNAL_MANAGED \
      --network=projects/HOST_PROJECT_ID/global/networks/lb-network \
      --subnet=projects/HOST_PROJECT_ID/regions/us-west1/subnetworks/lb-frontend-and-backend-subnet \
      --address=10.1.2.99 \
      --ports=80 \
      --region=us-west1 \
      --target-http-proxy=l7-ilb-proxy \
      --target-http-proxy-region=us-west1 \
      --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-ilb-forwarding-rule \
      --load-balancing-scheme=INTERNAL_MANAGED \
      --network=projects/HOST_PROJECT_ID/global/networks/lb-network \
      --subnet=projects/HOST_PROJECT_ID/regions/us-west1/subnetworks/lb-frontend-and-backend-subnet \
      --address=10.1.2.99 \
      --ports=443 \
      --region=us-west1 \
      --target-https-proxy=l7-ilb-proxy \
      --target-https-proxy-region=us-west1 \
      --project SERVICE_PROJECT_ID
    

Teste

Como criar uma instância de VM para testar a conectividade

Os clientes podem estar localizados no projeto host ou em qualquer projeto de serviço conectado. Neste exemplo, você testará se o balanceador de carga está funcionando ao implantar uma VM cliente em um projeto de serviço. O cliente precisa usar a mesma rede VPC compartilhada e estar na mesma região do balanceador de carga.

gcloud compute instances create l7-ilb-client-us-west1-a \
    --image-family=debian-9 \
    --image-project=debian-cloud \
    --subnet=projects/HOST_PROJECT_ID/regions/us-west1/subnetworks/lb-frontend-and-backend-subnet \
    --zone=us-west1-a \
    --tags=allow-ssh \
    --project SERVICE_PROJECT_ID

Como testar o balanceador de carga

Faça login na instância recém-criada e teste se os serviços HTTP(S) nos back-ends são acessíveis por meio do endereço IP de regra de encaminhamento do balanceador de carga HTTP(S) interno. Verifique também se há o balanceamento de carga do tráfego nas instâncias de back-end.

Como conectar por SSH a cada instância de cliente

gcloud compute ssh l7-ilb-client-us-west1-a \
    --zone=us-west1-a

Como verificar se o IP está exibindo o nome de host dele

curl 10.1.2.99

Para fazer teste em HTTPS, substitua curl por:

curl -k -s 'https//:10.1.2.99:443'

A sinalização -k faz com que o curl ignore a validação do certificado.

Como executar 100 solicitações e confirmar que elas estão com balanceamento de carga

Para HTTP:

{
  RESULTS=
  for i in {1..100}
  do
      RESULTS="$RESULTS:$(curl --silent 10.1.2.99)"
  done
  echo "***"
  echo "*** Results of load-balancing to 10.1.2.99: "
  echo "***"
  echo "$RESULTS" | tr ':' '\n' | grep -Ev "^$" | sort | uniq -c
  echo
}

Para HTTPS:

{
  RESULTS=
  for i in {1..100}
  do
      RESULTS="$RESULTS:$(curl -k -s 'https://:10.1.2.99:443')"
  done
  echo "***"
  echo "*** Results of load-balancing to 10.1.2.99: "
  echo "***"
  echo "$RESULTS" | tr ':' '\n' | grep -Ev "^$" | sort | uniq -c
  echo
}

A seguir