Como criar conectividade com a Internet para VMs privadas

Neste documento, descrevemos opções de conexão com a Internet usando os recursos do Compute Engine que têm endereços IP privados. Isso é útil para desenvolvedores que criam serviços do Google Cloud e para administradores de rede de ambientes do Google Cloud.

Neste tutorial, presumimos que você esteja familiarizado com a implantação de VPCs, com o Compute Engine e com a rede básica de TCP/IP.

Objetivos

  • Aprender sobre as opções disponíveis para se conectar entre VMs privadas fora da VPC.
  • Crie uma instância do Identity-Aware Proxy (IAP) para túneis TCP que sejam apropriados para serviços interativos, como SSH.
  • Criar uma instância do Cloud NAT para permitir que as VMs façam conexões de saída com a Internet.
  • Configurar um balanceador de carga HTTP que aceite conexões de entrada da Internet com suas VMs.

Custos

Neste tutorial, há componentes faturáveis do Google Cloud, a saber:

Use a calculadora de preços para gerar uma estimativa de custo com base no uso previsto. Calculamos que o total para executar este tutorial é inferior a US$ 5 por dia.

Antes de começar

  1. Faça login na sua conta do Google.

    Se você ainda não tiver uma, inscreva-se.

  2. No Console do Google Cloud, na página do seletor de projetos, selecione ou crie um projeto do Google Cloud.

    Acessar a página do seletor de projetos

  3. Verifique se o faturamento está ativado para seu projeto na nuvem. Saiba como confirmar se o faturamento está ativado para o projeto.

Introdução

Os endereços IP privados oferecem várias vantagens sobre os endereços IP públicos (externos), incluindo:

  • Superfície de ataque reduzida. A remoção de endereços IP externos das VMs dificulta o acesso dos invasores às VMs e a exploração de possíveis vulnerabilidades.
  • Maior flexibilidade. A introdução de uma camada de abstração, como um balanceador de carga ou um serviço NAT, permite a entrega de serviços mais confiável e flexível quando comparada com endereços IP externos estáticos.

Nesta solução, discutiremos três cenários, conforme descrito na tabela a seguir:

Interativo Busca Veiculação
Uma conexão SSH é iniciada de um host remoto diretamente com uma VM usando IAP para TCP.

Exemplo: administração remota usando SSH ou RDP

Uma conexão é iniciada por uma VM com um host externo na Internet usando o Cloud NAT.

Exemplo: atualizações do SO, APIs externas

Uma conexão é iniciada por um host remoto com uma VM por meio de um balanceador de carga Google Cloud global.

Exemplo: front-end de aplicativos, WordPress

Alguns ambientes podem envolver apenas um desses cenários. No entanto, muitos ambientes exigem todos esses cenários, e isso é totalmente compatível com o Google Cloud.

Nas seções a seguir, descrevemos um ambiente de várias regiões com um serviço de balanceamento de carga HTTP que conta com duas VMs em duas regiões. Essas VMs usam o Cloud NAT para comunicações de saída. Para administração, as VMs são acessíveis por meio do SSH em túnel em IAP.

O diagrama a seguir fornece uma visão geral dos três casos de uso e dos componentes relevantes.

Arquitetura da solução que mostra o fluxo do cliente por meio do balanceador de carga para instâncias de VM, Cloud NAT para acesso das instâncias à Internet e IAP para permitir o acesso SSH direto de um cliente às instâncias.

Como criar instâncias de VM

Para iniciar o tutorial, crie um total de quatro instâncias de máquina virtual (VM): duas instâncias por região em duas regiões diferentes. Atribua a todas as instâncias a mesma tag, que será usada posteriormente por uma regra de firewall para permitir que o tráfego recebido alcance suas instâncias.

O diagrama a seguir mostra as instâncias de VM e os grupos de instâncias que você cria, distribuídos em duas zonas.

Arquitetura da solução que destaca as quatro instâncias da VM em duas zonas.

O script de inicialização que você adiciona a cada instância instala o Apache e cria uma página inicial exclusiva para cada instância.

O procedimento inclui instruções para usar os comandos do Console do Cloud e do gcloud. A maneira mais fácil de usar os comandos do gcloud é por meio do Cloud Shell.

Console

  1. No Console do Cloud, acesse a página Instâncias de VM:

    ACESSAR A PÁGINA "INSTÂNCIAS DE VM"

  2. Clique em Criar instância.

  3. Defina o Nome como www-1.

  4. Defina Zona como us-central1-b.

  5. Clique em Gerenciamento, segurança, discos, rede, locatário único.

  6. Clique em Rede e faça as configurações a seguir:

    • Para o tráfego HTTP, na caixa Tags de rede, digite http-tag.
    • Em "Interfaces de rede", clique em .
    • Em IP externo, selecione Nenhum.
  7. Clique em Gerenciamento e defina o Script de inicialização como:

    sudo apt-get update
    sudo apt-get install apache2 -y
    sudo a2ensite default-ssl
    sudo a2enmod ssl
    sudo service apache2 restart
    echo '<!doctype html><html><body><h1>server 1</h1></body></html>' | sudo tee /var/www/html/index.html
    
  8. Clique em Criar.

  9. Crie www-2 com as mesmas configurações, mas defina o Script de inicialização como:

    sudo apt-get update
    sudo apt-get install apache2 -y
    sudo a2ensite default-ssl
    sudo a2enmod ssl
    sudo service apache2 restart
    echo '<!doctype html><html><body><h1>server 2<h1></body></html>' | sudo tee /var/www/html/index.html
    
  10. Crie www-3 com as mesmas configurações, mas defina a Zona como europe-west1-b e defina o Script de inicialização como:

    sudo apt-get update
    sudo apt-get install apache2 -y
    sudo a2ensite default-ssl
    sudo a2enmod ssl
    sudo service apache2 restart
    echo '<!doctype html><html><body><h1>server 3</h1></body></html>' | sudo tee /var/www/html/index.html
    
  11. Crie www-4 com as mesmas configurações, mas defina a Zona como europe-west1-b e defina o Script de inicialização como:

    sudo apt-get update
    sudo apt-get install apache2 -y
    sudo a2ensite default-ssl
    sudo a2enmod ssl
    sudo service apache2 restart
    echo '<!doctype html><html><body><h1>server 4</h1></body></html>' | sudo tee /var/www/html/index.html
    

gcloud

  1. Abra o Cloud Shell:

    ABRIR Cloud Shell

  2. Crie uma instância chamada www-1 em us-central1-b com um script de inicialização básico:

    gcloud compute instances create www-1 \
        --image-family debian-9 \
        --image-project debian-cloud \
        --zone us-central1-b \
        --tags http-tag \
        --network-interface=no-address \
        --metadata startup-script="#! /bin/bash
    sudo apt-get update
    sudo apt-get install apache2 -y
    sudo service apache2 restart
    echo '<!doctype html><html><body><h1>www-1</h1></body></html>' | tee /var/www/html/index.html
    EOF"
    
  3. Crie uma instância chamada www-2 em us-central1-b:

    gcloud compute instances create www-2 \
        --image-family debian-9 \
        --image-project debian-cloud \
        --zone us-central1-b \
        --tags http-tag \
        --network-interface=no-address \
        --metadata startup-script="#! /bin/bash
    sudo apt-get update
    sudo apt-get install apache2 -y
    sudo service apache2 restart
    echo '<!doctype html><html><body><h1>www-2</h1></body></html>' | tee /var/www/html/index.html
    EOF"
    
  4. Crie uma instância chamada www-3, desta vez em europe-west1-b:

    gcloud compute instances create www-3 \
        --image-family debian-9 \
        --image-project debian-cloud \
        --zone europe-west1-b \
        --tags http-tag \
        --network-interface=no-address \
        --metadata startup-script="#! /bin/bash
    sudo apt-get update
    sudo apt-get install apache2 -y
    sudo service apache2 restart
    echo '<!doctype html><html><body><h1>www-3</h1></body></html>' | tee /var/www/html/index.html
    EOF"
    
  5. Crie uma instância chamada www-4, esta também em europe-west1-b:

    gcloud compute instances create www-4 \
        --image-family debian-9 \
        --image-project debian-cloud \
        --zone europe-west1-b \
        --tags http-tag \
        --network-interface=no-address \
        --metadata startup-script="#! /bin/bash
    sudo apt-get update
    sudo apt-get install apache2 -y
    sudo service apache2 restart
    echo '<!doctype html><html><body><h1>www-4</h1></body></html>' | tee /var/www/html/index.html
    EOF"
    

Terraform

  1. Abra o Cloud Shell:

    ABRIR Cloud Shell

  2. Clone o repositório do GitHub:

    git clone https://github.com/GoogleCloudPlatform/gce-public-connectivity-terraform

  3. Altere o diretório de trabalho para o diretório do repositório:

    cd iap

  4. Instale o Terraform.

  5. Substitua [YOUR-ORGANIZATION-NAME] no arquivo scripts/set_env_vars.sh pelo nome da organização do Google Cloud.

  6. Defina as variáveis de ambiente:

    source scripts/set_env_vars.sh

  7. Aplique a configuração do Terraform:

    terraform apply

Como configurar túneis IAP para interagir com instâncias

Para fazer login em instâncias de VM, conecte-se a elas usando ferramentas como SSH ou RDP. Na configuração que você está criando neste tutorial, não é possível se conectar diretamente às instâncias. No entanto, é possível usar o encaminhamento de TCP no IAP, que permite acesso remoto a esses padrões interativos.

Para este tutorial, use SSH.

Nesta seção, você realizará as ações a seguir:

  1. Conecte-se a uma instância do Compute Engine usando o túnel do IAP.
  2. Adicione um segundo usuário com permissão de tunelamento IAP no IAM.

No diagrama a seguir, ilustramos a arquitetura que você criará nesta seção. As áreas cinzentas são discutidas em outras partes deste tutorial.

Arquitetura da solução que mostra o Cloud IAP fornecendo acesso SSH entre um cliente e as instâncias.

Limitações do IAP

  • Largura de banda: o recurso de encaminhamento de TCP do IAP não se destina à transferência em massa de dados. O IAP reserva-se o direito de limitar a taxa de usuários que considere estar abusando deste serviço.
  • Duração da conexão: o IAP não desconecta as sessões ativas, a menos que seja necessário para manutenção.
  • Protocolo: o IAP para TCP não é compatível com UDP.

Criar regras de firewall para permitir o tunelamento

Para conectar-se às suas instâncias usando SSH, é preciso abrir uma porta apropriada no firewall. As conexões IAP são provenientes de um conjunto específico de endereços IP (35.235.240.0/20). Portanto, é possível limitar a regra a esse intervalo de CIDR.

Console

  1. No Console do Cloud, acesse a página Firewalls:

    ACESSAR A PÁGINA "FIREWALLS"

  2. Clique em Criar regra de firewall.

  3. Defina o Nome como allow-ssh-from-iap.

  4. Deixe a rede VPC como default.

  5. Em Destinos, selecione Tags de destino especificadas.

  6. Defina Tags de destino para http-tag.

  7. Mantenha Source filter definido como IP ranges.

  8. Defina Intervalos de IPs de origem como 35.235.240.0/20.

  9. Defina Portas e protocolos permitidos como tcp:22.

  10. Clique em Criar.

    Pode levar um momento para que a nova regra de firewall seja exibida no console.

gcloud

  • Crie uma regra de firewall chamada allow-ssh-from-iap:

    gcloud compute firewall-rules create allow-ssh-from-iap \
        --source-ranges 35.235.240.0/20 \
        --target-tags http-tag \
        --allow tcp:22
    

Terraform

  1. Copie o arquivo do Terraform das regras de firewall para o diretório atual:

    cp iap/vpc_firewall_rules.tf .

  2. Aplique a configuração do Terraform:

    terraform apply

Testar tunelamento

  • No Cloud Shell, conecte-se à instância www-1 usando o IAP:

    gcloud compute ssh www-1 \
        --zone us-central1-b \
        --tunnel-through-iap
    

Se a conexão for bem-sucedida, você terá uma sessão SSH em túnel por meio do IAP diretamente na sua VM particular.

Conceder acesso a mais usuários

O IAP usa os papéis e permissões atuais do projeto quando você se conecta às instâncias de VM. Por padrão, os proprietários da instância são os únicos usuários que têm o papel Usuário de túnel protegido por IAP. Se você quer permitir que outros usuários acessem suas VMs usando o tunelamento IAP, é necessário conceder esse papel a esses usuários.

  1. No Console do Cloud, acesse Segurança e Identity-Aware Proxy:

    Opção IAP na página

    Se você vir uma mensagem informando que precisa configurar a tela de consentimento do OAuth, desconsidere-a. Não é relevante ao IAP para TCP.

  2. Selecione a guia Recursos SSH e TCP.

  3. Selecione as VMs que você criou:

    Console mostrando todas as quatro instâncias selecionadas.

  4. No lado direito, clique em Adicionar membro.

  5. Adicione os usuários para quem você quer conceder permissões, selecione o papel Usuário de túnel protegido por IAP e clique em Salvar:

    Caixa de diálogo

Resumo

Agora é possível se conectar às suas instâncias usando o SSH para administrá-las ou solucioná-las.

Muitos aplicativos precisam fazer conexões de saída para fazer o download de patches, de recursos ou conectar-se a parceiros. Na próxima seção, você configurará o Cloud NAT para permitir que suas VMs alcancem esses recursos.

Como implantar o Cloud NAT para busca

O serviço Cloud NAT permite que instâncias de VM do Google Cloud sem endereços IP externos se conectem à Internet. O Cloud NAT implementa o NAT de saída em conjunto com uma rota padrão para permitir que suas instâncias cheguem à Internet. Ele não implementa NAT de entrada. Os hosts fora da sua rede VPC podem responder apenas a conexões estabelecidas iniciadas por suas instâncias. Eles não podem iniciar as próprias conexões com suas instâncias usando o Cloud NAT.

Cloud NAT é um recurso regional. É possível configurá-lo para permitir o tráfego de todos os intervalos de endereços IP primários e secundários de sub-redes em uma região ou é possível configurá-lo para aplicação apenas a alguns desses intervalos.

Nesta seção, você configurará um gateway do Cloud NAT em cada região usada anteriormente. No diagrama a seguir, ilustramos a arquitetura que você criará nesta seção. As áreas cinzentas são discutidas em outras partes deste tutorial.

Arquitetura da solução que mostra instâncias do Cloud NAT entre as instâncias e a Internet.

Criar uma configuração NAT usando o Cloud Router

Crie a instância do Cloud Router na mesma região das instâncias que precisam usar o Cloud NAT. O Cloud NAT é usado apenas para armazenar informações de NAT nas VMs. Ele não é usado como parte do gateway real do Cloud NAT.

Essa configuração permite que todas as instâncias da região usem o Cloud NAT para todos os intervalos de IP alias e primário. Ela também aloca automaticamente os endereços IP externos para o gateway NAT. Para mais opções, consulte a documentação do gcloud compute routers.

Console

  1. Vá para a página do Cloud NAT:

    ACESSAR A PÁGINA DO CLOUD NAT

  2. Clique em Primeiros passos ou Criar gateway NAT.

  3. Defina o nome do gateway como nat-config.

  4. Defina a rede VPC como default.

  5. Defina a região como us-central1.

  6. Em Cloud Router, selecione Criar novo roteador e siga as etapas abaixo:

    • Defina o Nome como nat-router-us-central1.
    • Clique em Criar.
  7. Clique em Criar.

  8. Repita o procedimento, mas substitua estes valores:

    • Nome: nat-router-europe-west1
    • Região: europe-west1

gcloud

  1. Crie instâncias do Cloud Router em cada região:

    gcloud compute routers create nat-router-us-central1 \
        --network default \
        --region us-central1
    
    gcloud compute routers create nat-router-europe-west1 \
        --network default \
        --region europe-west1
    
  2. Configure os roteadores para o Cloud NAT:

    gcloud compute routers nats create nat-config \
        --router-region us-central1 \
        --router nat-router-us-central1 \
        --nat-all-subnet-ip-ranges \
         --auto-allocate-nat-external-ips
    
    gcloud compute routers nats create nat-config \
        --router-region europe-west1 \
        --router nat-router-europe-west1 \
        --nat-all-subnet-ip-ranges \
        --auto-allocate-nat-external-ips
    

Terraform

  1. Copie o arquivo de configuração NAT do Terraform para o diretório atual:

    cp nat/vpc_nat_gateways.tf .

  2. Aplique a configuração do Terraform:

    terraform apply

Testar a configuração do Cloud NAT

Agora é possível testar se você é capaz de fazer solicitações de saída de suas instâncias de VM para a Internet.

  1. Aguarde até três minutos para que a configuração do NAT seja propagada para a VM.
  2. No Cloud Shell, conecte-se à sua instância usando o túnel que você criou:

    gcloud beta compute ssh www-1 --tunnel-through-iap
    
  3. Quando você estiver conectado à instância, use o comando curl para fazer uma solicitação de saída:

    curl example.com
    

    A saída a seguir será exibida:

    <html>
    <head>
    <title>Example Domain</title>
    ...
    ...
    ...
    </head>
    
    <body>
    <div>
        <h1>Example Domain</h1>
        <p>This domain is established to be used for illustrative examples in documents.
            You may use this domain in examples without prior coordination or asking for
            permission.
        </p>
        <p><a href="http://www.iana.org/domains/example">More information...</a></p>
    </div>
    </body>
    </html>
    
    

Se o comando for bem-sucedido, você validou que suas VMs podem se conectar à Internet usando o Cloud NAT.

Resumo

Suas instâncias agora podem fazer conexões de saída para fazer o download de patches, de recursos ou conectar-se a parceiros.

Na próxima seção, adicione o balanceamento de carga à sua implantação e configure-o para permitir que clientes remotos iniciem solicitações aos seus servidores.

Como criar um serviço com balanceamento de carga HTTP para veiculação

O uso do Cloud Load Balancing para seu aplicativo tem muitas vantagens. Ele pode fornecer balanceamento de carga escalonável e contínuo para mais de um milhão de consultas por segundo. Ele também pode descarregar a sobrecarga de SSL de suas VMs, encaminhar consultas para a melhor região dos seus usuários com base no local e na disponibilidade e é compatível com protocolos modernos, como HTTP/2 e QUIC.

Para este tutorial, você tira proveito de outro recurso importante: proxy de conexão IP anycast global. Esse recurso fornece um único endereço IP público finalizado na borda distribuída globalmente do Google. Os clientes podem se conectar a recursos hospedados em endereços IP particulares em qualquer lugar do Google Cloud. Essa configuração ajuda a proteger as instâncias contra ataques DDoS e ataques diretos. E também ativa recursos como o Google Cloud Armour para reforçar a segurança.

Nesta seção do tutorial, siga as etapas abaixo:

  1. Crie uma regra de firewall para permitir o acesso de balanceadores de carga.
  2. Aloque endereços IPv4 e IPv6 estáticos globais para o balanceador de carga.
  3. Crie um grupo para suas instâncias.
  4. Comece a enviar tráfego para suas instâncias.

No diagrama a seguir, ilustramos a arquitetura que você criará nesta seção. As áreas cinzentas são discutidas em outras partes deste tutorial.

Arquitetura que destaca quatro instâncias em dois grupos de instâncias.

Abrir o firewall

A próxima tarefa é criar uma regra de firewall para permitir o tráfego dos balanceadores de carga para suas instâncias de VM. Essa regra permite o tráfego do intervalo de endereços do Google Cloud usado por balanceadores de carga e verificações de integridade. A regra do firewall usa a tag http-tag que você criou anteriormente. Essa regra permite que o tráfego para a porta designada alcance instâncias com a tag.

Console

  1. No Console do Cloud, acesse a página Firewalls:

    ACESSAR A PÁGINA "FIREWALLS"

  2. Clique em Criar regra de firewall.

  3. Defina o Nome como allow-lb-and-healthcheck.

  4. Deixe a rede VPC como default.

  5. Em Destinos, selecione Tags de destino especificadas.

  6. Defina Tags de destino para http-tag.

  7. Mantenha Source filter definido como IP ranges.

  8. Defina Intervalos IP de origem como 130.211.0.0/22 e 35.191.0.0/16.

  9. Defina Portas e protocolos permitidos como tcp:80.

  10. Clique em Criar.

    Pode levar um momento para que a nova regra de firewall seja exibida no console.

gcloud

  • Crie uma regra de firewall chamada allow-lb-and-healthcheck:

    gcloud compute firewall-rules create allow-lb-and-healthcheck \
        --source-ranges 130.211.0.0/22,35.191.0.0/16 \
        --target-tags http-tag \
         --allow tcp:80
    

Terraform

  1. Copie os arquivos de configuração de balanceamento de carga do Terraform para o diretório atual:

    cp lb/* .

  2. Aplique a configuração do Terraform:

    terraform apply

Alocar um endereço IP externo para balanceadores de carga

Se você estiver veiculando tráfego para a Internet, precisará alocar um endereço externo para o balanceador de carga. É possível alocar um endereço IPv4, um endereço IPv6 ou ambos. Nesta seção, reserve endereços IPv4 e IPv6 estáticos adequados para adicionar ao DNS.

Não há custo adicional para endereços IP públicos, porque eles são usados com um balanceador de carga.

Console

  1. No Console do Cloud, acesse a página Endereços IP externos:

    ACESSAR A PÁGINA DE ENDEREÇOS IP EXTERNOS

  2. Clique em Reservar endereço estático para reservar um endereço IPv4.

  3. Defina o Nome como lb-ip-cr.

  4. Deixe Tipo definido como Global.

  5. Clique em Reservar.

  6. Clique em Reservar endereço estático novamente para reservar um endereço IPv6.

  7. Defina o Nome como lb-ipv6-cr.

  8. Defina Versão IP como IPv6.

  9. Deixe Tipo definido como Global.

  10. Clique em Reservar.

gcloud

  1. Crie um endereço IP estático denominado lb-ip-cr para IPv4:

    gcloud compute addresses create lb-ip-cr \
        --ip-version=IPV4 \
        --global
    
  2. Crie um endereço IP estático denominado lb-ipv6-cr para IPv6:

    gcloud compute addresses create lb-ipv6-cr \
        --ip-version=IPV6 \
        --global
    

Criar grupos e adicionar instâncias

Os balanceadores de carga do Google Cloud exigem que os grupos de instâncias atuem como back-end do tráfego. Neste tutorial, use grupos de instâncias não gerenciadas para simplificar. No entanto, também é possível usar grupos de instâncias gerenciadas para tirar proveito de recursos como dimensionamento automático, recuperação automática, implantação regional (várias zonas) e atualização automática.

Nesta seção, crie um grupo de instâncias para cada uma das zonas que está usando.

Console

  1. No Console do Cloud, acesse a página Grupos de instâncias:

    ACESSAR A PÁGINA "GRUPOS DE INSTÂNCIAS"

  2. Clique em Criar grupo de instâncias.

  3. No lado esquerdo, clique em Novo grupo de instâncias não gerenciadas.

  4. Defina o Nome como us-resources-w.

  5. Defina Região como us-central1

  6. Defina Zona como us-central1-b.

  7. Selecione Rede (padrão) e Sub-rede (padrão).

  8. Em Instâncias de VMs, siga as etapas abaixo:

    • Clique em Adicionar uma instância e selecione www-1.
    • Clique em Adicionar uma instância novamente e selecione www-2.
    • Clique em Criar.
  9. Repita esse procedimento para criar um segundo grupo de instâncias, mas use os valores a seguir:

    • Nome: europe-resources-w
    • Zona: europe-west1-b
    • Instâncias: www-3 e www-4
  10. Na página Grupos de instâncias, confirme se você tem dois grupos, cada um com duas instâncias.

gcloud

  1. Crie o grupo de instâncias us-resources-w:

    gcloud compute instance-groups unmanaged create us-resources-w \
        --zone us-central1-b
    
  2. Adicione as instâncias www-1 e www-2:

    gcloud compute instance-groups unmanaged add-instances us-resources-w \
        --instances www-1,www-2 \
        --zone us-central1-b
    
  3. Crie o grupo de instâncias europe-resources-w:

    gcloud compute instance-groups unmanaged create europe-resources-w \
        --zone europe-west1-b
    
  4. Adicione as instâncias www-3 e www-4:

    gcloud compute instance-groups unmanaged add-instances europe-resources-w \
        --instances www-3,www-4 \
        --zone europe-west1-b
    

Configurar o serviço de balanceamento de carga

A funcionalidade do balanceador de carga envolve vários serviços relacionados. Nesta seção, você configurará e conectará os serviços. Você criará estes serviços:

  • Portas nomeadas, usadas pelo balanceador de carga para direcionar tráfego aos grupos de instâncias.
  • Uma verificação de integridade, que pesquisa suas instâncias para verificar se elas são íntegras. O balanceador de carga envia tráfego apenas para instâncias íntegras.
  • Serviços de back-end, que monitoram o uso e a integridade da instância. Os serviços de back-end sabem se as instâncias no grupo podem receber tráfego. Se as instâncias não puderem receber tráfego, o balanceador de carga o redirecionará, desde que outras instâncias tenham capacidade suficiente. Um back-end define a capacidade dos grupos de instâncias que ele contém (utilização máxima da CPU ou consultas máximas por segundo).
  • Um mapa de URL, que analisa o URL da solicitação e pode encaminhar solicitações para serviços de back-end específicos, com base no host e no caminho do URL. Neste tutorial, como você não está usando o encaminhamento baseado em conteúdo, o mapa de URL contém apenas o mapeamento padrão.
  • Um proxy de destino, que recebe a solicitação do usuário e a encaminha para o mapa de URL.
  • Duas regras de encaminhamento global, uma para IPv4 e IPv6, que mantêm os recursos globais de endereços IP externos. As regras de encaminhamento global direcionam a solicitação recebida para o proxy de destino.

Criar o balanceador de carga

Nesta seção, crie o balanceador de carga e configure um serviço de back-end padrão para lidar com seu tráfego. Crie também uma verificação de integridade.

Console

  1. No Console do Cloud, acesse a página Criar balanceador de carga:

    ACESSAR A PÁGINA "CRIAR BALANCEADOR DE CARGA"

  2. Em Balanceamento de carga HTTP(S), clique em Iniciar configuração.

  3. Defina o Nome como web-map.

  4. No painel esquerdo da página Novo balanceador de carga HTTP(S), clique em Configuração de back-end.

  5. Na lista Criar ou selecionar serviços de back-end e buckets de back-end, selecione Serviços de back-end e, em seguida, Criar um serviço de back-end. Você vê a caixa de diálogo Criar serviço de back-end.

  6. Defina o Nome como web-map-backend-service.

  7. Defina o Protocolo. Para protocolo HTTP, deixe os valores definidos como padrão.

  8. Para Tipo de back-end, selecione Grupos de instâncias.

  9. Abaixo de Back-ends, defina Grupo de instâncias como us-resources-w.

  10. Clique em Adicionar back-end.

  11. Selecione o grupo de instâncias europe-resources-w e siga as etapas abaixo:

    • Para tráfego HTTP entre o balanceador de carga e as instâncias, verifique se os Números de porta estão definidos como 80.
    • Mantenha os valores padrão no restante dos campos.
  12. Clique em Concluído.

  13. Em Verificação de integridade, selecione Criar uma verificação de integridade ou Criar outra verificação de integridade.

  14. Defina os parâmetros de verificação de integridade a seguir:

    • Nome: http-basic-check
    • Protocolo: HTTP
    • Porta: 80
  15. Clique em Criar.

gcloud

  1. Para cada grupo de instâncias, defina um serviço HTTP e mapeie um nome de porta para a porta relevante:

    gcloud compute instance-groups unmanaged set-named-ports us-resources-w \
        --named-ports http:80 \
        --zone us-central1-b
    
    gcloud compute instance-groups unmanaged set-named-ports europe-resources-w \
        --named-ports http:80 \
        --zone europe-west1-b
    
  2. Crie uma verificação de integridade:

    gcloud compute health-checks create http http-basic-check \
        --port 80
    
  3. Crie um serviço de back-end:

    gcloud compute backend-services create web-map-backend-service \
        --protocol HTTP \
        --health-checks http-basic-check \
        --global
    

    Defina a sinalização --protocol como HTTP porque está usando HTTP para acessar as instâncias. Para a verificação de integridade, use a http-basic-check criada anteriormente.

  4. Adicione os grupos de instâncias como back-ends aos serviços de back-end.

    gcloud compute backend-services add-backend web-map-backend-service \
        --balancing-mode UTILIZATION \
        --max-utilization 0.8 \
        --capacity-scaler 1 \
        --instance-group us-resources-w \
        --instance-group-zone us-central1-b \
        --global
    
    gcloud compute backend-services add-backend web-map-backend-service \
        --balancing-mode UTILIZATION \
        --max-utilization 0.8 \
        --capacity-scaler 1 \
        --instance-group europe-resources-w \
        --instance-group-zone europe-west1-b \
        --global
    

Definir regras de host e caminho

Console

  • No painel do lado esquerdo da página Novo balanceador de carga HTTP(S), clique em Regras de host e caminho.

    Para este tutorial, você não precisa configurar nenhuma regra de host ou caminho, porque todo o tráfego irá para a regra padrão. Portanto, é possível aceitar os valores padrão pré-preenchidos.

gcloud

  1. Crie um mapa padrão de URLs para direcionar todas as solicitações recebidas para todas as suas instâncias:

    gcloud compute url-maps create web-map \
        --default-service web-map-backend-service
    
  2. Crie um proxy HTTP de destino para encaminhar solicitações ao mapa de URLs.

    gcloud compute target-http-proxies create http-lb-proxy \
        --url-map web-map
    

Configurar o front-end

Console

  1. No painel esquerdo da página Novo balanceador de carga HTTP(S), clique em Configuração de front-end.
  2. Defina o Nome como http-cr-rule.
  3. Defina o Protocolo como HTTP.
  4. Defina Versão do IP como IPv4.
  5. Na lista Endereço IP, selecione lb-ip-cr, o endereço que você criou anteriormente.
  6. Confirme se a Porta está definida como 80.
  7. Clique em Concluído.
  8. Clique em Adicionar IP e porta de front-end.
  9. Defina o Nome como http-cr-ipv6-rule.
  10. Em Protocolo, selecione HTTP.
  11. Defina Versão do IP como IPv6.
  12. Na lista Endereço IP, selecione lb-ipv6-cr, o outro endereço que você criou anteriormente.
  13. Confirme se a Porta está definida como 80.
  14. Clique em Criar.
  15. Clique em Concluído.

gcloud

  1. Consiga os endereços IP estáticos que você criou para o balanceador de carga. Tome nota deles, porque você os usará na próxima etapa.

    gcloud compute addresses list
    
  2. Crie duas regras de encaminhamento global a fim de rotear solicitações de entrada ao proxy, uma para IPv4 e outra para IPv6. Substitua lb_ip_address no comando pelo endereço IPv4 estático que você criou e substitua lb_ipv6_address pelo endereço IPv6 que você criou.

    gcloud compute forwarding-rules create http-cr-rule \
        --address lb_ip_address \
        --global \
        --target-http-proxy http-lb-proxy \
        --ports 80
    
    gcloud compute forwarding-rules create http-cr-ipv6-rule \
        --address lb_ipv6_address \
        --global \
        --target-http-proxy http-lb-proxy \
       --ports 80
    

Revisar e finalizar

  1. No Console do Cloud, acesse a página Criar balanceador de carga:

    ACESSAR A PÁGINA "CRIAR BALANCEADOR DE CARGA"

  2. No painel esquerdo da página Novo balanceador de carga HTTP (S), clique em Revisar e finalizar.

  3. Compare as configurações com o que você pretendia criar.

  4. Se as configurações estiverem corretas, clique em Criar.

    Você retornará às páginas de balanceamento de carga. Após a criação do balanceador de carga, uma marca de seleção verde ao lado indica que está em execução.

Depois de criar as regras de encaminhamento global, pode demorar alguns minutos para sua configuração se propagar.

Testar a configuração

Nesta seção, você enviará uma solicitação HTTP à sua instância para verificar se a configuração de balanceamento de carga está funcionando.

Console

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

    ACESSAR A PÁGINA "BALANCEAMENTO DE CARGA"

  2. Selecione o balanceador de carga denominado web-map para ver detalhes sobre o balanceador de carga que você acabou de criar.

  3. Na seção Back-end da página, confirme se as instâncias estão íntegras, visualizando a coluna Integridade.

    Essa informação pode demorar um pouco para ser indicada na tela.

  4. Quando a exibição mostrar que as instâncias estão íntegras, copie o valor IP: Porta da seção Front-end e cole-o no navegador.

    No navegador, você vê sua página de conteúdo padrão.

gcloud

  1. Consiga os endereços IP das suas regras de encaminhamento global e anote-os para a próxima etapa:

    gcloud compute forwarding-rules list
    
  2. Use o comando curl para testar a resposta dos vários URLs de seus serviços. Tente com IPv4 e IPv6. Para IPv6, coloque [] ao redor do endereço, como http://[2001:DB8::]/.

    curl http://ipv4-address
    
    curl -g -6 "http://[ipv6-address]/"
    

Resumo

Suas VMs agora podem veicular tráfego para a Internet e buscar dados da Internet. Também é possível acessá-las usando o SSH para executar tarefas de administração. Toda essa funcionalidade é alcançada usando apenas endereços IP privados, o que ajuda a protegê-los contra ataques diretos, não expondo endereços IP acessíveis pela Internet.

Limpeza

Para evitar que os recursos usados neste tutorial sejam cobrados na conta do Google Cloud Platform, faça o seguinte:

Excluir o projeto

  1. No Console do Cloud, acesse a página Gerenciar recursos:

    Acessar a página "Gerenciar recursos"

  2. Na lista de projetos, selecione o projeto que você quer excluir e clique em Excluir .
  3. Na caixa de diálogo, digite o ID do projeto e clique em Encerrar para excluí-lo.

A seguir