Como criar um balanceador de carga HTTPS

Este guia demonstra como criar um balanceador de carga HTTPS do Google Cloud Platform (GCP) que seleciona serviços de back-end com base em caminhos de URL e direciona solicitações para back-ends próximos aos clientes (balanceamento de carga entre regiões).

Antes de começar, familiarize-se com os conceitos gerais de balanceamento de carga HTTP(S).

Visão geral

Este guia fornece instruções para criar um balanceador de carga que direciona o tráfego com base no caminho no URL da solicitação e equilibra o tráfego em várias regiões. Você cria duas instâncias do Compute Engine nas regiões dos EUA (zona us-central1-b) e UE (zona eu-west1-b). Em seguida, você cria um balanceador de carga que direciona o tráfego para essas instâncias.

Depois de concluir as instruções, o balanceador de carga será configurado da maneira a seguir:

  • Se o tráfego tiver um caminho de URL que comece com /video, ele será encaminhado ao serviço de back-end.
  • Se o tráfego tiver um caminho de URL que não corresponda a esse padrão, ele será encaminhado para outro serviço de back-end.

Neste documento, você criará a configuração representada no diagrama a seguir:

Balanceamento de carga HTTPS com base em conteúdo e entre regiões (clique para ampliar)
Balanceamento de carga HTTPS com base em conteúdo e entre regiões (clique para ampliar)

A sequência de eventos no diagrama é:

  1. Um cliente acessa o URL https://www.example.com/video/concert, enviando uma solicitação de conteúdo para o endereço de IP externo definido na regra de encaminhamento. A solicitação pode usar IPv4 ou IPv6. Há regras de encaminhamento para os dois protocolos.
  2. Uma regra de encaminhamento direciona a solicitação para o proxy HTTPS de destino.
  3. O proxy de destino usa o conjunto de regras no mapa do URL para determinar qual serviço de back-end receberá a solicitação. Uma solicitação com /video, como https://www.example.com/video/concert, é enviada para video-backend-service. Qualquer outro caminho de URL será enviado para o serviço padrão, web-backend-service.
  4. Com base no carregamento e na proximidade do cliente, o balanceador de carga determina quais grupos de instâncias do serviço de back-end precisam veicular a solicitação e direciona a solicitação para uma instância nesse grupo.
  5. A instância veicula o conteúdo solicitado por cada usuário. As instâncias video exibem conteúdo em vídeo, enquanto as instâncias www veiculam todos os outros conteúdos.

Antes de começar

Estas instruções exigem um projeto. Se você ainda não tiver um projeto, crie um agora. As instruções mostram como criar uma rede VPC no modo personalizado. Você também precisa configurar regras de firewall personalizadas para permitir que o tráfego alcance as instâncias.

Se você preferir trabalhar na linha de comando, instale a ferramenta de linha de comando gcloud. Consulte Visão geral do gcloud para ver informações conceituais e de instalação sobre a ferramenta.

Caso ainda não tenha usado a ferramenta de linha de comando gcloud, primeiro execute gcloud init para iniciar o diretório do gcloud.

Neste exemplo, o balanceador de carga aceita as solicitações HTTPS dos clientes e as envia por proxy para os back-ends, na forma de HTTP. Também é possível configurar um balanceador de carga para aceitar solicitações HTTP e usar HTTPS quando estiver enviando solicitações aos back-ends por proxy.

Permissões

Para concluir as etapas deste guia, é necessário ter permissão para criar instâncias do Compute Engine em um projeto. Você precisa ter um papel de proprietário ou editor do projeto, ou os seguintes papéis do IAM do Compute Engine:

Tarefa Papel necessário
Criar instâncias Administrador de instâncias
Adicionar e remover regras de firewall Administrador de segurança
Criar componentes do balanceador de carga Administrador de rede
Criar um projeto (opcional) Criador do projeto

Configuração

Opcional: como criar um projeto novo

Recomendamos que os usuários com a permissão resourcemanager.projects.create criem um projeto novo antes de continuar o tutorial. Isso simplifica a limpeza no final do guia.

Como configurar uma rede e sub-redes

Neste exemplo, use redes, regiões e sub-redes VPC a seguir:

  • Rede: uma rede VPC de modo personalizado denominada lb-network.

  • Sub-redes em duas regiões diferentes:

    • us-subnet usa 10.1.10.0/24 como intervalo IP principal e está na região us-central1.
    • eu-subnet usa 10.1.11.0/24 como intervalo IP principal e está na região europe-west1.

Para criar a rede e sub-rede do exemplo, siga estas etapas:

Console


  1. Acesse a página "Redes VPC" no Console do Google Cloud Platform.
    Acessar a página "Redes VPC"
  2. Clique em Criar rede VPC.
  3. Informe um Nome de lb-network.
  4. Na seção Sub-redes, crie a primeira sub-rede:
    • Defina o Modo de criação de sub-rede como Personalizado.
    • Na seção Nova sub-rede, insira as informações a seguir:
      • Nome: us-subnet
      • Região: us-central1
      • Intervalo de endereços IP: 10.1.10.0/24
      • Clique em Concluído.
  5. Ainda na seção Sub-redes, crie Adicionar sub-rede e a segunda sub-rede:
    • Defina o Modo de criação de sub-rede como Personalizado.
    • Na seção Nova sub-rede, insira as informações a seguir:
      • Nome: eu-subnet
      • Região: europe-west1
      • Intervalo de endereços IP: 10.1.11.0/24
      • Clique em Concluído.
  6. Clique em Criar.

gcloud


  1. Crie a rede VPC personalizada:

    gcloud compute networks create lb-network --subnet-mode=custom
    
  2. Crie a us-subnet:

    gcloud compute networks subnets create us-subnet \
      --network=lb-network \
      --range=10.1.10.0/24 \
      --region=us-central1
    
  3. Crie a eu-subnet:

    gcloud compute networks subnets create eu-subnet \
      --network=lb-network \
      --range=10.1.11.0/24 \
      --region=europe-west1
    

Como configurar regras de firewall

A regra de negação de padrão de entrada bloqueia o tráfego de entrada para as instâncias de back-end, incluindo tráfego dos sistemas de balanceamento de carga e verificação de integridade do GCP. Crie novas regras de firewall para substituir a regra padrão e permitir que o tráfego alcance suas instâncias.

Neste exemplo, você cria as regras de firewall a seguir:

  • fw-allow-ssh: uma regra de entrada, aplicável às instâncias submetidas a balanceamento de carga, que permite a conectividade SSH de entrada na porta TCP 22 proveniente de qualquer endereço. É possível escolher um intervalo de IP de origem mais restritivo para essa regra, por exemplo, especificando apenas os intervalos de IP do sistema que iniciará as sessões SSH. Neste exemplo, usamos a tag allow-ssh de destino para identificar as VMs a que isso se aplicará.

  • fw-allow-health-check-and-proxy: uma regra de entrada, aplicável às instâncias submetidas a balanceamento de carga, que permite tráfego dos sistemas de verificação de integridade do GCP (130.211.0.0/22 e 35.191.0.0/16) e do balanceador de carga. Neste exemplo, usamos a tag de destino allow-hc-and-proxy para identificar as instâncias a que isso se aplicará.

Console


  1. Acesse a página "Firewalls" no Console do Google Cloud Platform.
    Acessar a página "Firewalls"
  2. Clique em Criar regra de firewall para criar a primeira regra de firewall:
    1. Informe um Nome de fw-allow-ssh.
    2. Em Rede, selecione lb-network.
    3. Em Destinos, selecione Tags de destino especificadas.
    4. Preencha o campo Tags de destino com allow-ssh.
    5. Defina Filtro de origem como IP ranges.
    6. Defina Intervalos de IPs de origem como 0.0.0.0/0.
    7. Em Protocolos e portas, selecione Portas e protocolos especificados.
    8. Marque a caixa de seleção ao lado de tcp e digite o número da porta, 22.
    9. Clique em Criar.
  3. Clique em Criar regra de firewall para criar a segunda regra de firewall:
    1. Informe um Nome de fw-allow-health-check-and-proxy.
    2. Em Rede, selecione lb-network.
    3. Em Destinos, selecione Tags de destino especificadas.
    4. Preencha o campo Tags de destino com allow-hc-and-proxy.
    5. Defina Filtro de origem como IP ranges.
    6. Defina Intervalos IP de origem como 130.211.0.0/22 e 35.191.0.0/16.
    7. Em Protocolos e portas, selecione Portas e protocolos especificados.
    8. Marque a caixa de seleção ao lado de tcp e digite os números de porta, 80,443.
    9. 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. Quando você omite source-ranges, o GCP 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
    
  2. Crie a regra fw-allow-health-check-and-proxy para permitir que o balanceador de carga e as verificações de integridade do GCP se comuniquem com instâncias de back-end nas portas TCP 80 e 443:

    gcloud compute firewall-rules create fw-allow-health-check-and-proxy \
        --network=lb-network \
        --action=allow \
        --direction=ingress \
        --target-tags=allow-hc-and-proxy \
        --source-ranges=130.211.0.0/22,35.191.0.0/16 \
        --rules=tcp:80,tcp:443
    

Configuração da instância

Neste exemplo, você cria oito instâncias de máquina virtual: quatro para veicular conteúdo de vídeo e quatro para veicular todos os outros conteúdos. Você usa um script de inicialização para instalar o software do servidor da Web Apache com uma página inicial exclusiva para cada instância.

Console


Criar VMs de back-end

  1. Acesse a página "Instâncias de VMs" no Console do Google Cloud Platform.
    Acessar a página "Instâncias de VMs"
  2. Repita as etapas a seguir para criar oito VMs usando as combinações de nome, região e sub-rede a seguir.
    • Nome: www-us-01, região: us-central1, sub-rede: us-subnet
    • Nome: www-us-02, região: us-central1, sub-rede: us-subnet
    • Nome: video-us-01, região: us-central1, sub-rede: us-subnet
    • Nome: video-us-02, região: us-central1, sub-rede: us-subnet
    • Nome: www-eu-01, região: europe-west1, sub-rede: eu-subnet
    • Nome: www-eu-02, região: europe-west1, sub-rede: eu-subnet
    • Nome: video-eu-01, região: europe-west1, sub-rede: eu-subnet
    • Nome: video-eu-02, região: europe-west1, sub-rede: eu-subnet
  3. Clique em Criar instância.
  4. Defina Nome e Região, conforme indicado na etapa 2. É possível escolher qualquer Zona na região. Este exemplo usa us-central1-b em us-central1 e europe-west1-b em europe-west1.
  5. Na seção Disco de inicialização, verifique se a imagem selecionada é Debian GNU/Linux 9 Stretch. Clique em Escolher para alterar a imagem, se necessário.
  6. Clique em Gerenciamento, segurança, discos, rede, locatário individual e faça as alterações a seguir:

    • Clique em Rede e adicione as seguintes tags de rede: allow-ssh e allow-hc-and-proxy.
    • Clique no botão de editar em Interfaces de rede e faça as alterações a seguir. Depois, clique em Concluído:
      • Rede: lb-network
      • Sub-rede: escolha a sub-rede conforme indicado na etapa 2.
      • IP interno primário: temporário (automático)
      • IP externo: temporário
    • Clique em Gerenciamento. No campo Script de inicialização, copie e cole o conteúdo do script a seguir. O conteúdo do script é idêntico para todas as oito VMs:

      #! /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)"
      filter="{print \$NF}"
      vm_zone="$(curl -H "Metadata-Flavor:Google" \
      http://169.254.169.254/computeMetadata/v1/instance/zone \
      | awk -F/ "${filter}")"
      echo "Page on $vm_hostname in $vm_zone" | \
      tee /var/www/html/index.html
      echo "AliasMatch /video(.*)$ /var/www/html/index.html" | \
      tee /etc/apache2/conf-enabled/video.conf
      systemctl restart apache2
      
  7. Clique em Criar.

Criar grupos de instâncias

  1. Acesse a página "Grupos de instâncias" no Console do Google Cloud Platform.
    Acessar a página "Grupos de instâncias"
  2. Repita as etapas a seguir para criar quatro grupos de instâncias não gerenciadas com duas VMs cada, usando estas combinações.
    • Grupo de instâncias: ig-www-us, região: us-central1, zona: us-central1-b, sub-rede: us-subnet, VMs: www-us-01 e www-us-02
    • Grupo de instâncias: ig-video-us, região: us-central1, zona: us-central1-b, sub-rede: us-subnet, VMs: video-us-01 e video-us-02
    • Grupo de instâncias: ig-www-eu, região: europe-west1, zona: europe-west1-b, sub-rede: eu-subnet, VMs: www-eu-01 e www-eu-02
    • Grupo de instâncias: ig-video-eu, região: europe-west1, zona: europe-west1-b, sub-rede: eu-subnet, VMs: video-eu-01 e video-eu-02
  3. Clique em Criar grupo de instâncias e selecione Novo grupo de instâncias não gerenciadas.
  4. Defina o Nome como indicado na etapa 2.
  5. Na seção Local, selecione Zona única e escolha a região e a zona conforme indicado na etapa 2.
  6. Em Rede, insira lb-network.
  7. Em Sub-rede, digite a sub-rede indicada na etapa 2.
  8. Em Instâncias de VMs, adicione as VMs indicadas na etapa 2.
  9. Clique em Criar.

gcloud


  1. Repita o comando a seguir para criar oito VMs usando as combinações de nome, zona e sub-rede a seguir. Substitua VM_NAME, ZONE e SUBNET conforme indicado:

    • Nome: www-us-01, zona: us-central1-b, sub-rede: us-subnet
    • Nome: www-us-02, zona: us-central1-b, sub-rede: us-subnet
    • Nome: video-us-01, zona: us-central1-b, sub-rede: us-subnet
    • Nome: video-us-02, zona: us-central1-b, sub-rede: us-subnet
    • Nome: www-eu-01, zona: europe-west1-b, sub-rede: eu-subnet
    • Nome: www-eu-02, zona: europe-west1-b, sub-rede: eu-subnet
    • Nome: video-eu-01, zona: europe-west1-b, sub-rede: eu-subnet
    • Nome: video-eu-02, zona: europe-west1-b, sub-rede: eu-subnet
    gcloud compute instances create VM_NAME \
        --zone=ZONE \
        --image-family=debian-9 \
        --image-project=debian-cloud \
        --tags=allow-ssh,allow-hc-and-proxy \
        --subnet=SUBNET \
        --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)"
    filter="{print \$NF}"
    vm_zone="$(curl -H "Metadata-Flavor:Google" \
    http://169.254.169.254/computeMetadata/v1/instance/zone \
    | awk -F/ "${filter}")"
    echo "Page on $vm_hostname in $vm_zone" | \
    tee /var/www/html/index.html
    echo "AliasMatch /video(.*)$ /var/www/html/index.html" | \
    tee /etc/apache2/conf-enabled/video.conf
    systemctl restart apache2'
    
  2. Repita o comando a seguir para criar quatro grupos de instâncias não gerenciadas. Use as combinações de nome e zona a seguir. Substitua INSTANCE_GROUP_NAME e ZONE conforme indicado:

    • Grupo de instâncias: ig-www-us, zona: us-central1-b
    • Grupo de instâncias: ig-video-us, zona: us-central1-b
    • Grupo de instâncias: ig-www-eu, zona: europe-west1-b
    • Grupo de instâncias: ig-video-eu, zona: europe-west1-b
    gcloud compute instance-groups unmanaged create INSTANCE_GROUP_NAME \
        --zone=ZONE
    
  3. Repita o comando a seguir quatro vezes, adicionando duas VMs a cada grupo de instâncias, conforme as combinações a seguir. Substitua INSTANCE_GROUP_NAME, ZONE e INSTANCES conforme indicado:

    • Grupo de instâncias: ig-www-us, zona: us-central1-b, INSTANCES: www-us-01, www-us-02
    • Grupo de instâncias: ig-video-us, zona: us-central1-b, INSTANCES: video-us-01, video-us-02
    • Grupo de instâncias: ig-www-eu, zona: europe-west1-b, INSTANCES: www-eu-01, www-eu-02
    • Grupo de instâncias: ig-video-eu, zona: europe-west1-b, INSTANCES: video-eu-01, video-eu-02
    gcloud compute instance-groups unmanaged add-instances INSTANCE_GROUP_NAME \
        --zone=ZONE \
        --instances=INSTANCES
    

    Para esclarecer, o comando para adicionar duas instâncias ao primeiro grupo de instâncias é o seguinte:

    gcloud compute instance-groups unmanaged add-instances ig-www-us \
        --zone=us-central1-b \
        --instances=www-us-01,www-us-02
    

Como reservar endereços IP externos

Agora que as instâncias já estão em execução, configure os serviços necessários para o balanceamento de carga. Nesta seção, você cria dois endereços IP externos estáticos globais que os clientes usam para alcançar seu balanceador de carga.

Console


  1. Acesse a página "Endereços IP externos" no Console do Google Cloud Platform.
    Acessar a página "Endereços IP externos"
  2. Clique em Reservar endereço estático para reservar um endereço IPv4.
  3. Atribua um Nome de lb-ipv4-1.
  4. Defina o Nível da rede como Premium.
  5. Defina Versão IP como IPv4.
  6. Defina Tipo como Global.
  7. Clique em Reservar.
  8. Clique em Reservar endereço estático novamente para reservar um endereço IPv6.
  9. Atribua um Nome de lb-ipv6-1.
  10. Defina o nível da rede como Premium.
  11. Defina Versão IP como IPv6.
  12. Certifique-se de que o Tipo esteja definido como Global.

    Neste exemplo, o balanceador de carga usa Rede nível Premium. Um balanceador de carga com rede de nível padrão usaria endereços IP regionais. Endereços IPv6 não estão disponíveis no nível padrão.

  13. Clique em Reservar.

gcloud


gcloud compute addresses create lb-ipv4-1 \
    --ip-version=IPV4 \
    --global

Anote o endereço IPv4 que foi reservado:

gcloud compute addresses describe lb-ipv4-1 \
    --format="get(address)" \
    --global
gcloud compute addresses create lb-ipv6-1 \
    --ip-version=IPV6 \
    --global

Anote o endereço IPv6 que foi reservado:

gcloud compute addresses describe lb-ipv6-1 \
    --format="get(address)" \
    --global

Como configurar os recursos de balanceamento de carga

A funcionalidade do balanceador de carga envolve vários recursos conectados. Nesta seção, você configura e conecta os recursos. Os efeitos são os seguintes:

  • Portas nomeadas, usadas pelo balanceador de carga para direcionar tráfego aos grupos de instâncias.
  • Uma verificação de integridade, que consulta as instâncias para conferir se estão íntegras. O balanceador de carga só envia tráfego a instâncias íntegras.
  • Serviços de back-end, que acompanham a capacidade, a afinidade de sessões e o status da verificação de integridade. Solicitações diretas de serviços de back-end para VMs ou endpoints de back-ends com base na integridade da capacidade e da instância.
  • Um Mapa de URL, que o balanceador de carga usa para direcionar solicitações a serviços de back-end específicos com base no host e no caminho do URL de solicitação.
  • Um recurso de certificado SSL. Os recursos do certificado SSL têm informações sobre o certificado SSL que o balanceador de carga usa para interromper o TLS quando os clientes HTTPS se conectam a ele. É possível usar vários certificados SSL, que podem ser qualquer combinação de certificados SSL gerenciados ou autogerenciados. É necessário criar um recurso de certificado SSL para cada certificado usado.
  • Um proxy HTTPS de destino, que o balanceador de carga usa para associar o mapa de URL e certificados SSL às regras de encaminhamento global.
  • Duas regras de encaminhamento global, uma para IPv4 e outra para IPv6, que contêm os recursos de endereço IP externo global. As regras de encaminhamento global encaminham a solicitação recebida para o proxy de destino.

Console


Definir o nome do balanceador de carga

  1. Acesse a página "Balanceamento de carga" no Console do Google Cloud Platform.
    Acessar a página "Balanceamento de carga"
  2. Em Balanceamento de carga HTTP(S), clique em Iniciar configuração.
  3. Em Nome do balanceador de carga, digite web-map.
  4. Mantenha a janela aberta para continuar.

Configurar o serviço de back-end e a verificação de integridade das instâncias www

O balanceador de carga requer dois serviços de back-end e uma verificação de integridade para atender a ambos. Neste exemplo, o balanceador de carga encerra solicitações HTTPS do cliente e usa HTTP para se comunicar com os back-ends. Para fazer isso, você especifica o HTTP dos protocolos de back-end e as verificações de integridade.

Configurar o serviço de back-end para instâncias www

  1. Clique em Configuração de back-end.
  2. No menu suspenso Criar ou selecionar um serviço de back-end, selecione Criar um serviço de back-end.
  3. Defina o Nome do serviço de back-end como web-backend-service.
  4. Clique no ícone Editar ao lado do campo Tempo limite para editar o protocolo. Selecione o protocolo que pretende usar do balanceador de carga para os back-ends.
  5. No campo Porta nomeada, insira http.
  6. Verifique se o Tipo de back-end está definido como Grupos de instâncias.
  7. Abaixo de Back-ends, defina Grupo de instâncias como ig-www-us.
  8. Para o tráfego entre o balanceador de carga e as instâncias, defina Número de portas como 80.
  9. Nos campos restantes, mantenha os valores padrão.
  10. Clique em Concluído na parte inferior da janela Novo back-end.
  11. Clique em Adicionar back-end e repita as etapas, mas selecione o grupo de instâncias ig-www-eu.
  12. Mantenha a janela aberta para continuar.

Configurar a verificação de integridade das instâncias www

  1. Na janela Configuração do back-end, em Verificação de integridade, selecione Criar verificação de integridade ou Criar outra verificação de integridade.
  2. Para criar a verificação de integridade HTTP, defina os parâmetros de verificação de integridade a seguir:
    • Nome como http-basic-check
    • Protocolo como HTTP
    • Porta como 80
  3. Clique em Salvar e continuar.
  4. Clique em Criar.

Configurar o back-end e a verificação de integridade das instâncias www-video

  1. Repita as etapas acima, mas nomeie o segundo serviço de back-end video-backend-service e atribua a ele os grupos de instâncias video-resources-us e video-resources-eu.
  2. Siga as mesmas etapas para criar uma verificação de integridade.

Configurar regras de host e de caminho

As regras de host e de caminho configuram o recurso de mapa do URL do balanceador de carga.

  1. Na coluna à esquerda da tela, clique em Regras de host e de caminho.
  2. A primeira linha tem web-backend-service na coluna da direita e já está preenchida com a regra padrão Any unmatched (default) para Hosts e Caminhos.
  3. Verifique se há uma segunda linha com video-backend-service na coluna do lado direito. Se não houver, clique em Adicionar regra de host e de caminho e selecione video-backend-service no menu suspenso da coluna à direita. Preencha as outras colunas da seguinte forma: [...]
    1. Defina Hosts como *.
    2. No campo Caminhos, insira /video, pressione a tecla Tab, insira /video/* e pressione a tecla Tab novamente.

Configurar o front-end

A seção de configuração do front-end configura vários recursos para o balanceador de carga, incluindo as regras de encaminhamento e os certificados SSL. Além disso, ela permite selecionar o protocolo usado entre o cliente e o balanceador de carga.

Neste exemplo, você está usando HTTPS entre o cliente e o balanceador de carga. Portanto, é necessário um ou mais recursos de certificado SSL para configurar o proxy. Consulte as informações sobre como criar recursos de certificado SSL em Certificados SSL. Recomendamos usar um certificado gerenciado pelo Google.

  1. No painel esquerdo da página Novo balanceador de carga HTTP(S), clique em Configuração de front-end.
  2. No campo Nome, digite https-content-rule.
  3. No campo Protocolo, selecione HTTPS.
  4. Mantenha a janela aberta para continuar.

Configurar a regra de encaminhamento de IPv4

  1. Defina Versão do IP como IPv4.
  2. Em Endereço IP, selecione lb-ipv4-1, criado anteriormente.
  3. Certifique-se de que Porta esteja definida como 443, para permitir tráfego HTTPS.
  4. 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.
    3. Selecione Fazer upload do meu certificado ou Criar um certificado gerenciado pelo Google.
    4. Se você selecionou Fazer upload do meu certificado, siga estas etapas.
      1. Preencha um Nome para www-ssl-cert.
      2. Nos campos adequados, carregue o Certificado de chave pública (arquivo .crt), a Cadeia de certificados (arquivo .csr) e a Chave particular (arquivo .key).
      3. Clique em Criar.
    5. Se você escolher Criar um certificado gerenciado pelo Google, informe um Domínio.
  5. 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.
  6. Clique em Concluído.
  7. Mantenha a janela aberta para continuar.

Configurar a regra de encaminhamento de IPv6

  1. Clique em Adicionar IP e porta de front-end.
  2. Informe um Nome de https-content-ipv6-rule.
  3. No campo Protocolo, selecione HTTPS se você quiser usar HTTPS entre o cliente e o balanceador de carga. Selecione HTTP se quiser usar HTTP entre o cliente e o balanceador de carga.
  4. Defina Versão do IP como IPv6.
  5. Em IP, selecione lb-ipv6-1, criado anteriormente.
  6. A Porta padrão 443 é obrigatória.
  7. Se você já tem um recurso de certificado SSL que quer usar, selecione-o no menu suspenso Certificado. Caso contrário, selecione Criar um novo certificado.
    1. Preencha um Nome para www-ssl-cert.
    2. Nos campos adequados, carregue o Certificado de chave pública (arquivo .crt), a Cadeia de certificados (arquivo .csr) e a Chave particular (arquivo .key).
    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.

Revisar e finalizar

  1. No painel esquerdo da página Novo balanceador de carga HTTP(S), clique em Revisar e finalizar.
  2. Compare as configurações com o que você pretendia criar.
  3. Se tudo parecer certo, clique em Criar para criar o balanceador de carga HTTP(S).

gcloud


  1. Para cada grupo de instâncias, defina um serviço HTTP e associe um nome à porta relevante. Após a configuração do serviço de balanceamento de carga, o tráfego é encaminhado à porta nomeada.

    gcloud compute instance-groups unmanaged set-named-ports ig-video-us \
        --named-ports http:80 \
        --zone us-central1-b
    
    gcloud compute instance-groups unmanaged set-named-ports ig-www-us \
        --named-ports http:80 \
        --zone us-central1-b
    
    gcloud compute instance-groups unmanaged set-named-ports ig-video-eu \
        --named-ports http:80 \
        --zone europe-west1-b
    
    gcloud compute instance-groups unmanaged set-named-ports ig-www-eu \
        --named-ports http:80 \
        --zone europe-west1-b
    
  2. Crie uma verificação de integridade. Use o comando gcloud para HTTP se você estiver usando HTTP entre o balanceador de carga e os back-ends.

    gcloud compute health-checks create http http-basic-check \
        --port 80
    
  3. Crie um serviço de back-end para cada provedor de conteúdo. Defina o campo --protocol como HTTP, porque estamos usando HTTP para chegar às instâncias. Use a verificação de integridade http-basic-check que criamos antes.

    gcloud compute backend-services create video-backend-service \
        --protocol HTTP \
        --health-checks http-basic-check \
        --global
    
    gcloud compute backend-services create web-backend-service \
        --protocol HTTP \
        --health-checks http-basic-check \
        --global
    
  4. Adicione os grupos de instâncias como back-ends aos serviços de back-end. Um back-end define a capacidade (utilização máxima de CPU ou máximo de consultas por segundo) dos grupos de instâncias nele contidos. Para este exemplo, defina balancing-mode como o valor UTILIZATION, max-utilization como 0.8 e capacity-scaler como 1. Defina capacity-scaler como 0 caso queira drenar um serviço de back-end.

    Adicione o grupo de instâncias ig-video-us:

    gcloud compute backend-services add-backend video-backend-service \
        --balancing-mode=UTILIZATION \
        --max-utilization=0.8 \
        --capacity-scaler=1 \
        --instance-group=ig-video-us \
        --instance-group-zone=us-central1-b \
        --global
    

    Adicione o grupo de instâncias ig-video-eu:

    gcloud compute backend-services add-backend video-backend-service \
        --balancing-mode=UTILIZATION \
        --max-utilization=0.8 \
        --capacity-scaler=1 \
        --instance-group=ig-video-eu \
        --instance-group-zone=europe-west1-b \
        --global
    

    Adicione o grupo de instâncias ig-www-us:

    gcloud compute backend-services add-backend web-backend-service \
        --balancing-mode=UTILIZATION \
        --max-utilization=0.8 \
        --capacity-scaler=1 \
        --instance-group=ig-www-us \
        --instance-group-zone=us-central1-b \
        --global
    

    Adicione o grupo de instâncias ig-www-eu:

    gcloud compute backend-services add-backend web-backend-service \
        --balancing-mode=UTILIZATION \
        --max-utilization=0.8 \
        --capacity-scaler=1 \
        --instance-group=ig-www-eu \
        --instance-group-zone=europe-west1-b \
        --global
    
  5. Crie uma mapa de URL para encaminhar as solicitações recebidas para os serviços de back-end adequados. Nesse caso, os mapeamentos de caminhos de solicitação definidos por meio da sinalização --path-rules dividem o tráfego de acordo com o caminho do URL de cada solicitação para seu local. Qualquer tráfego que não conste na lista --path-rules é enviado para --default-service flag.

    1. Crie um mapa de URL:

      gcloud compute url-maps create web-map \
          --default-service web-backend-service
      
    2. Adicione uma correspondência de caminho ao mapa de URL e defina os mapeamentos de caminhos das solicitações:

      gcloud compute url-maps add-path-matcher web-map \
          --default-service web-backend-service \
          --path-matcher-name pathmap \
          --path-rules="/video=video-backend-service,/video/*=video-backend-service"
      
  6. Crie um recurso de certificado SSL autoassinado para usar no proxy HTTPS.

    Estamos usando um certificado autoassinado para fins de demonstração. Mas, em uma implantação real, você configuraria o balanceador de carga para usar um certificado assinado pela CA. Nesse caso, é possível usar um certificado autogerenciado, em que você fornece o próprio certificado SSL, ou um gerenciado pelo Google, em que o Google emite um certificado para seu domínio. Para mais informações, consulte Tipos de certificados SSL. Se você usa vários certificados SSL, é necessário criar um recurso de certificado SSL para cada certificado.

    Para criar um recurso de certificado SSL autogerenciado:

    gcloud compute ssl-certificates create www-ssl-cert \
        --certificate [CRT_FILE_PATH] \
        --private-key [KEY_FILE_PATH]
    

    Para criar um recurso de certificado SSL gerenciado pelo Google:

    gcloud beta compute ssl-certificates create www-ssl-cert \
      --domains [DOMAIN]
    
  7. Crie um proxy de destino HTTPS para encaminhar solicitações ao mapa de URL. O proxy é a parte do balanceador de carga onde é armazenado o certificado SSL para balanceamento de carga HTTPS. Por isso, nesta etapa, carregue também o certificado.

    gcloud compute target-https-proxies create https-lb-proxy \
        --url-map web-map --ssl-certificates www-ssl-cert
    
  8. Crie duas regras de encaminhamento global para encaminhar as solicitações recebidas para o proxy, uma para cada um dos endereços IP que você criou.

    gcloud compute forwarding-rules create https-content-rule \
        --address=lb-ipv4-1\
        --global \
        --target-https-proxy=https-lb-proxy \
        --ports=443
    
    gcloud compute forwarding-rules create https-content-ipv6-rule \
        --address=lb-ipv6-1 \
        --global \
        --target-https-proxy=https-lb-proxy \
        --ports=443
    

Depois de criar a regra de encaminhamento global, pode levar vários minutos até a configuração ser propagada em todo o mundo.

Como enviar tráfego às instâncias

Agora que você já configurou o serviço de balanceamento de carga, comece a enviar tráfego à regra de encaminhamento para que ele seja distribuído para diferentes instâncias.

Console/navegador da Web


  1. Acesse a página "Balanceamento de carga" no Console do Google Cloud Platform.
    Acessar a página "Balanceamento de carga"
  2. Clique em web-map para expandir o balanceador de carga que você acabou de criar.
  3. Na seção Back-end, confirme se as instâncias estão íntegras. A coluna Íntegra precisa estar preenchida, indicando a integridade das duas instâncias de cada um dos quatro grupos de instâncias. Se não estiver assim, tente atualizar a página. Pode levar alguns momentos para o Console do GCP indicar que as instâncias estão íntegras. Caso os back-ends não apareçam como íntegros depois de alguns minutos, analise a configuração do firewall e defina as tags da rede atribuídas às instâncias do back-end.
  4. Se você usa um certificado gerenciado pelo Google, confirme se o status do recurso do certificado é "ATIVO". Para mais informações, consulte Status do recurso de certificado SSL gerenciado pelo Google.
  5. Depois que o Console do GCP mostrar que todas as instâncias do back-end estão íntegras, teste o balanceador de carga usando o navegador da Web. Para isso, acesse https://<var>IP_Address</var>, em que IP_Address é o endereço IP do balanceador de carga. 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. O navegador renderizará uma página exibindo o nome da instância que veiculou a página e a zona (por exemplo, Page on www-us-02 in us-central1-b).
  6. No seu navegador, acesse https://<var>IP_Address</var>/video, em que IP_Address é o endereço IP do balanceador de carga. O navegador renderizará uma página exibindo o nome da instância de vídeo que veiculou a página e a zona (por exemplo, Page on video-us-02 in us-central1-b).

gcloud/como usar o curl


  1. Se você usa um certificado gerenciado pelo Google, confirme se o status do recurso do certificado é "ATIVO" antes de prosseguir. Para mais informações, consulte Status do recurso de certificado SSL gerenciado pelo Google.

     gcloud beta compute ssl-certificates list
    
  2. Use o comando curl para testar a resposta desses URLs. Substitua IP_Address pelo endereço IPv4 do balanceador de carga:

    curl -k https://IP_Address
    curl -k https://IP_Address/video/
    
  3. Use o comando curl para testar a resposta desses URLs. Substitua IP_Address pelo endereço IPv6 do balanceador de carga. Para IPv6, coloque o endereço entre colchetes ([]) e desative globs com a sinalização -g (por exemplo, curl -g -6 "https://[2001:DB8::]/").

    curl -k -g -6 https://[IP_Address]
    curl -k -g -6 https://[IP_Address]/video/
    

Como testar a funcionalidade entre regiões

Para simular um usuário em outro local geográfico, conecte-se a uma das instâncias de sua máquina virtual em outra região e execute o comando curl dessa instância para ver a solicitação ir para uma instância na região mais próxima.

Você verá o HTML exibir a saída <!doctype html><html><body><h1>www-us</h1></body></html>.

Repita as etapas, mas desta vez conecte-se a www-eu-1. A saída agora é <!doctype html><html><body><h1>www-eu</h1></body></html>.

É possível testar um sistema cliente em qualquer lugar do mundo. Se os back-ends de uma região não forem íntegros ou atingirem a capacidade, o balanceador de carga HTTPS automaticamente enviará o tráfego para a região mais próxima.

Opcional: como remover endereços IP externos de VMs de back-end

O balanceamento de carga HTTP(S) do GCP se comunica com back-ends usando os endereços IP internos e os caminhos especiais do balanceador de carga. As instâncias de back-end não precisam de endereços IP externos para se comunicar com o balanceador de carga. Para aumentar a segurança, remova os endereços IP externos das instâncias de back-end.

Para remover endereços IP externos de instâncias de back-end, siga estas instruções.

Para se conectar a uma instância de back-end que não tenha um endereço IP externo usando SSH, consulte Como se conectar a uma instância que não tem um endereço IP externo.

Como fazer a limpeza

Após concluir este tutorial de balanceamento de carga HTTP(S), é possível excluir os recursos do Cloud Load Balancing criados para que você não seja cobrado por eles no futuro. Se esses recursos foram criados no próprio projeto, exclua todo o projeto. Caso contrário, exclua os recursos individualmente.

Como excluir o projeto

Console


  1. Acesse a página "Projetos" no Console do Google Cloud Platform.
    Acessar a página "Projetos"
  2. Na lista de projetos, selecione um e clique em Excluir.
  3. Na caixa de diálogo, digite o ID do projeto e clique em Encerrar para excluí-lo.

gcloud


Execute o comando a seguir, substituindo project_id pelo ID do projeto:

gcloud projects delete project_id

Como excluir recursos individuais

Console


Excluir o balanceador de carga

  1. Acesse a página "Balanceamento de carga" no Console do Google Cloud Platform.
    Acessar a página "Balanceamento de carga"
  2. Marque a caixa de seleção ao lado de web-map.
  3. Clique no botão Excluir na parte superior da página.
  4. Marque as caixas de seleção ao lado de todos os recursos extras, incluindo serviços de back-end, verificações de integridade e certificados SSL.
  5. Clique em Excluir balanceador de carga e recursos selecionados.

Excluir os grupos de instâncias

  1. Acesse a página "Grupos de instâncias" no Console do Google Cloud Platform.
    Acessar a página "Grupos de instâncias"
  2. Marque a caixa de seleção na parte superior ao lado de Nome para selecionar todos os grupos de instâncias.
  3. Clique em Excluir.
  4. Na janela de confirmação, clique em Excluir.

Liberar os endereços IP externos

  1. Acesse a página "Endereços IP externos" no Console do Google Cloud Platform.
    Acessar a página "Endereços IP externos"
  2. Marque as caixas de seleção ao lado de lb-ipv4-1 e lb-ipv6-1.
  3. Clique em Excluir.
  4. Na janela de confirmação, clique em Excluir.

Excluir as regras de firewall

  1. Acesse a página "Firewalls" no Console do Google Cloud Platform.
    Acessar a página "Firewalls"
  2. Marque as caixas de seleção ao lado de fw-allow-health-check-and-proxy e fw-allow-ssh.
  3. Clique em Excluir.
  4. Na janela de confirmação, clique em Excluir.

Excluir as instâncias de VMs

  1. Acesse a página "Instâncias de VMs" no Console do Google Cloud Platform.
    Acessar a página "Instâncias de VMs"
  2. Marque a caixa de seleção na parte superior ao lado de Nome para selecionar todas as instâncias.
  3. Clique em Excluir.
  4. Na janela de confirmação, clique em Excluir.

Excluir a rede VPC

  1. Acesse a página "Redes VPC" no Console do Google Cloud Platform.
    Acessar a página "Redes VPC"
  2. Clique em lb-network.
  3. Na página "Detalhes da rede", clique em Excluir rede VPC.
  4. Na janela de confirmação, clique em Excluir.

gcloud


Excluir o balanceador de carga

Para excluir o balanceador de carga, é necessário excluir cada um dos componentes dele.

  1. Exclua as regras de encaminhamento:

    gcloud compute forwarding-rules delete https-content-rule \
        --global
    gcloud compute forwarding-rules delete https-content-ipv6-rule \
        --global
    
  2. Exclua os endereços IP externos globais:

    gcloud compute addresses delete lb-ipv4-1 \
        --global
    gcloud compute addresses delete lb-ipv6-1 \
        --global
    
  3. Exclua o proxy de destino:

    gcloud compute target-https-proxies delete https-lb-proxy
    
  4. Exclua o certificado SSL:

    gcloud compute ssl-certificates delete www-ssl-cert
    
  5. Exclua o mapa de URL:

    gcloud compute url-maps delete web-map
    
  6. Exclua os serviços de back-end:

    gcloud compute backend-services delete web-backend-service \
        --global
    gcloud compute backend-services delete video-backend-service \
        --global
    
  7. Exclua as verificações de integridade:

    gcloud compute health-checks delete http-basic-check
    

Você excluiu todos os recursos do balanceador de carga.

Excluir os grupos de instâncias

Repita o comando a seguir para criar quatro grupos de instâncias não gerenciadas. Use as combinações de nome e zona a seguir. Substitua INSTANCE_GROUP_NAME e ZONE conforme indicado:

  • Nome: ig-www-us, zona: us-central1-b
  • Nome: ig-video-us, zona: us-central1-b
  • Nome: ig-www-eu, zona: europe-west1-b
  • Nome: ig-video-eu, zona: europe-west1-b
gcloud compute instance-groups unmanaged delete INSTANCE_GROUP_NAME \
   --zone=ZONE

Excluir as instâncias de VMs

Repita o comando a seguir para excluir as oito VMs, usando as combinações de nome e zona a seguir. Substitua VM_NAME e ZONE conforme indicado:

  • Nome: www-us-01, zona: us-central1-b
  • Nome: www-us-02, zona: us-central1-b
  • Nome: video-us-01, zona: us-central1-b
  • Nome: video-us-02, zona: us-central1-b
  • Nome: www-eu-01, zona: europe-west1-b
  • Nome: www-eu-02, zona: europe-west1-b
  • Nome: video-eu-01, zona: europe-west1-b
  • Nome: video-eu-02, zona: europe-west1-b
gcloud compute instance delete VM_NAME \
   --zone=ZONE

Excluir as regras de firewall

Exclua as duas regras de firewall:

gcloud compute firewall-rules delete fw-allow-health-check-and-proxy
gcloud compute firewall-rules delete fw-allow-ssh

Excluir a rede VPC

Primeiro, exclua a us-subnet:

gcloud compute networks subnets delete us-subnet \
    --region=us-central1

Em seguida, exclua a eu-subnet:

gcloud compute networks subnets delete eu-subnet \
    --region=europe-west1

Por fim, exclua a rede VPC:

gcloud compute networks delete lb-network

Você excluiu todos os recursos configurados neste projeto.

A seguir

Esta página foi útil? Conte sua opinião sobre:

Enviar comentários sobre…