Criar conetividade à Internet para VMs privadas

Last reviewed 2024-05-10 UTC

Este documento descreve as opções de ligação à Internet e a partir desta através de recursos do Compute Engine que têm endereços IP privados. Isto é útil para os programadores que criam serviços e para os administradores de rede de ambientes. Google Cloud Google Cloud

Este tutorial pressupõe que está familiarizado com a implementação de VPCs, o Compute Engine e as redes TCP/IP básicas.

Objetivos

  • Saiba mais sobre as opções disponíveis para estabelecer ligação entre VMs privadas fora da respetiva VPC.
  • Crie uma instância do Identity-Aware Proxy (IAP) para túneis TCP adequada para serviços interativos, como o SSH.
  • Crie uma instância do Cloud NAT para permitir que as VMs façam ligações de saída à Internet.
  • Configure um balanceador de carga HTTP para suportar ligações recebidas da Internet para as suas VMs.

Custos

Este tutorial usa componentes faturáveis do Google Cloud, incluindo:

Use a calculadora de preços para gerar uma estimativa de custos com base na sua utilização prevista. Calculamos que o custo total para executar este tutorial é inferior a 5 USD por dia.

Antes de começar

  1. Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  3. Verify that billing is enabled for your Google Cloud project.

  4. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  5. Verify that billing is enabled for your Google Cloud project.

Introdução

Os endereços IP privados oferecem várias vantagens em relação aos endereços IP públicos (externos), incluindo:

  • Superfície de ataque reduzida. A remoção de endereços IP externos das VMs torna mais difícil para os atacantes alcançar as VMs e explorar potenciais vulnerabilidades.
  • Maior flexibilidade. A introdução de uma camada de abstração, como um balanceador de carga ou um serviço NAT, permite uma entrega de serviços mais fiável e flexível em comparação com endereços IP externos estáticos.

Esta solução aborda três cenários, conforme descrito na tabela seguinte:

Interativo A obter Serviço
É iniciada uma ligação SSH a partir de um anfitrião remoto diretamente para uma VM através do IAP para TCP.

Exemplo: administração remota através de SSH ou RDP

Uma ligação é iniciada por uma VM a um anfitrião externo na Internet através do Cloud NAT.

Exemplo: atualizações do SO, APIs externas

Uma ligação é iniciada por um anfitrião remoto a uma VM através de um equilibrador de carga Google Cloud global.

Exemplo: front-ends de aplicações, WordPress

Alguns ambientes podem envolver apenas um destes cenários. No entanto, muitos ambientes requerem todos estes cenários, e isto é totalmente suportado noGoogle Cloud.

As secções seguintes descrevem um ambiente de várias regiões com um serviço de equilíbrio de carga HTTP suportado por duas VMs em duas regiões. Estas VMs usam o Cloud NAT para comunicações de saída. Para administração, as VMs estão acessíveis através de um túnel SSH sobre o IAP.

O diagrama seguinte oferece uma vista geral de todos os três exemplos de utilização e dos componentes relevantes.

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

Criar instâncias de VM

Para iniciar o tutorial, cria um total de quatro instâncias de máquinas virtuais (VM), duas instâncias por região em duas regiões diferentes. Atribui a todas as instâncias a mesma etiqueta, que é usada posteriormente por uma regra de firewall para permitir que o tráfego de entrada alcance as suas instâncias.

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

Arquitetura da solução que realça as quatro instâncias de VM em 2 zonas.

O script de arranque que 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 da Google Cloud consola e da gcloud. A forma mais fácil de usar os comandos gcloud é usar a Cloud Shell.

Consola

  1. Na Google Cloud consola, aceda à página de instâncias de VM:

    ACEDA À PÁGINA DE INSTÂNCIAS DE VM

  2. Clique em Criar instância.

  3. Defina Nome como www-1.

  4. Defina a Zona como us-central1-b.

  5. Clique em Gestão, segurança, discos, trabalhar em rede, arrendamento único.

  6. Clique em Rede e defina as seguintes definições:

    • Para o tráfego HTTP, na caixa Etiquetas de rede, introduza http-tag.
    • Em Interfaces de rede, clique em .
    • Em IP externo, selecione Nenhum.
  7. Clique em Gestão e defina o Script de arranque para o seguinte:

    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 definições, exceto que deve definir Startup script para o seguinte:

    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 definições, exceto que deve definir Zone como europe-west1-b e definir Startup script como o seguinte:

    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 definições, exceto que deve definir Zone como europe-west1-b e definir Startup script como o seguinte:

    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 denominada www-1 em us-central1-bcom 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 com o nome 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 com o nome 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 com o nome www-4, 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 ficheiro scripts/set_env_vars.sh pelo nome da sua organização. Google Cloud

  6. Defina variáveis de ambiente:

    source scripts/set_env_vars.sh

  7. Aplique a configuração do Terraform:

    terraform apply

Configurar túneis de IAP para interagir com instâncias

Para iniciar sessão em instâncias de VM, estabeleça ligação às instâncias através de ferramentas como SSH ou RDP. Na configuração que está a criar neste tutorial, não pode estabelecer ligação diretamente a instâncias. No entanto, pode usar o encaminhamento TCP no IAP, que permite o acesso remoto para estes padrões interativos.

Para este tutorial, vai usar o SSH.

Nesta secção, faz o seguinte:

  1. Estabeleça ligação a uma instância do Compute Engine através do túnel do IAP.
  2. Adicione um segundo utilizador com autorização de tunneling de IAP no IAM.

O diagrama seguinte ilustra a arquitetura que cria nesta secção. As áreas cinzentas são abordadas noutras partes deste tutorial.

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

Limitações das CNA

  • Largura de banda: a funcionalidade de encaminhamento TCP do IAP não se destina à transferência em massa de dados. A IAP reserva-se o direito de limitar a taxa de utilizadores que se considere estarem a abusar deste serviço.
  • Duração da ligação: o IAP não desliga as sessões ativas, a menos que seja necessário para manutenção.
  • Protocolo: o IAP para TCP não suporta UDP.

Crie regras de firewall para permitir a criação de túneis

Para estabelecer ligação às suas instâncias através de SSH, tem de abrir uma porta adequada na firewall. As ligações de CNA provêm de um conjunto específico de endereços IP (35.235.240.0/20). Por conseguinte, pode limitar a regra a este intervalo CIDR.

Consola

  1. Na Google Cloud consola, aceda à página Políticas de firewall:

    ACEDER À PÁGINA DE POLÍTICAS DE FIREWALL

  2. Clique em Criar regra de firewall.

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

  4. Deixe a rede VPC como default.

  5. Em Segmentações, selecione Etiquetas de segmentação especificadas.

  6. Defina as etiquetas de destino como http-tag.

  7. Deixe o Filtro de origem definido como Intervalos de IP.

  8. Defina os Intervalos de IP de origem como 35.235.240.0/20.

  9. Defina Protocolos e portas permitidos como tcp:22.

  10. Clique em Criar.

    A nova regra de firewall pode demorar alguns instantes a ser apresentada na consola.

gcloud

  • Crie uma regra de firewall com o nome 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 ficheiro 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

Testes de túneis

  • No Cloud Shell, estabeleça ligação à instância www-1 através do IAP:

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

Se a ligação for bem-sucedida, tem uma sessão SSH com túnel através do IAP diretamente para a sua VM privada.

Conceda acesso a utilizadores adicionais

O IAP usa as funções e as autorizações do projeto existentes quando se liga a instâncias de VM. Por predefinição, os proprietários da instância são os únicos utilizadores que têm a função Utilizador do túnel protegido do IAP. Se quiser permitir que outros utilizadores acedam às suas VMs através do túnel do IAP, tem de conceder esta função a esses utilizadores.

  1. Na Google Cloud consola, aceda a Segurança > Identity-Aware Proxy.

    Se vir uma mensagem a indicar que tem de configurar o ecrã de consentimento do OAuth, ignore-a. Não é relevante para o IAP para TCP.

  2. Selecione o separador Recursos de SSH e TCP.

  3. Para as VMs que criou, selecione as caixas de verificação.

  4. No lado direito, clique em Adicionar diretor.

  5. Adicione os utilizadores aos quais quer conceder autorizações, selecione a função Utilizador do túnel protegido por IAP e, de seguida, clique em Guardar.

Resumo

Agora, pode estabelecer ligação às suas instâncias através de SSH para as administrar ou resolver problemas.

Muitas aplicações precisam de estabelecer ligações de saída para transferir patches, estabelecer ligação com parceiros ou transferir recursos. Na secção seguinte, vai configurar o Cloud NAT para permitir que as suas VMs alcancem estes recursos.

A implementar o Cloud NAT para obtenção

O serviço Cloud NAT permite que as instâncias de VM que não têm endereços IP externos se liguem à Internet. Google Cloud O Cloud NAT implementa o NAT de saída em conjunto com uma rota predefinida para permitir que as suas instâncias alcancem a Internet. Não implementa NAT de entrada. Os anfitriões fora da sua rede VPC só podem responder a ligações estabelecidas iniciadas pelas suas instâncias. Não podem iniciar as suas próprias ligações às suas instâncias através do Cloud NAT. O NAT não é usado para tráfego dentro de Google Cloud.

O Cloud NAT é um recurso regional. Pode configurá-lo para permitir tráfego de todos os intervalos de endereços IP primários e secundários de sub-redes numa região ou configurá-lo para se aplicar apenas a alguns desses intervalos.

Nesta secção, configura uma gateway do Cloud NAT em cada região que usou anteriormente. O diagrama seguinte ilustra a arquitetura que cria nesta secção. As áreas cinzentas são abordadas noutras partes deste tutorial.

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

Crie uma configuração de NAT com o Cloud Router

Tem de criar a instância do Cloud Router na mesma região que as instâncias que precisam de usar o Cloud NAT. O Cloud NAT só é usado para colocar informações de NAT nas VMs. Não é usado como parte do gateway do Cloud NAT real.

Esta configuração permite que todas as instâncias na região usem o Cloud NAT para todos os intervalos de IPs de alias e primários. Também atribui automaticamente os endereços IP externos para o gateway NAT. Para mais opções, consulte a documentação de gcloud compute routers.

Consola

  1. Aceda à página Cloud NAT:

    ACEDA À PÁGINA DO CLOUD NAT

  2. Clique em Começar ou Criar gateway de NAT.

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

  4. Defina a rede de VPC como default.

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

  6. Em Cloud Router, selecione Criar novo router e, de seguida, faça o seguinte:

    • Defina 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 routers 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 ficheiro de configuração do NAT do Terraform para o diretório atual:

    cp nat/vpc_nat_gateways.tf .

  2. Aplique a configuração do Terraform:

    terraform apply

Teste a configuração do Cloud NAT

Agora, pode testar se consegue fazer pedidos de saída das suas instâncias de VM para a Internet.

  1. Aguarde até 3 minutos para que a configuração de NAT seja propagada para a VM.
  2. No Cloud Shell, estabeleça ligação à sua instância através do túnel que criou:

    gcloud compute ssh www-1 --tunnel-through-iap
    
  3. Quando tiver sessão iniciada na instância, use o comando curl para fazer um pedido de saída:

    curl example.com
    

    Vê o seguinte resultado:

    <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, validou que as suas VMs podem estabelecer ligação à Internet através do Cloud NAT.

Resumo

As suas instâncias podem agora estabelecer ligações de saída para transferir patches, interagir com parceiros ou transferir recursos.

Na secção seguinte, adiciona o equilíbrio de carga à sua implementação e configura-o para permitir que os clientes remotos iniciem pedidos aos seus servidores.

Criar um serviço com balanceamento de carga HTTP para publicação

A utilização do Cloud Load Balancing para a sua aplicação tem muitas vantagens. Pode fornecer um balanceamento de carga perfeito e escalável para mais de um milhão de consultas por segundo. Também pode transferir a sobrecarga de SSL das suas VMs, encaminhar consultas para a melhor região para os seus utilizadores com base na localização e na disponibilidade, e suportar protocolos modernos, como HTTP/2 e QUIC.

Para este tutorial, vai tirar partido de outra funcionalidade importante: o encaminhamento de proxy de ligação de IP anycast global. Esta funcionalidade fornece um único endereço IP público que é terminado na extremidade distribuída globalmente da Google. Em seguida, os clientes podem estabelecer ligação a recursos alojados em endereços IP privados em qualquer lugar na Google Cloud. Esta configuração ajuda a proteger as instâncias contra ataques DDoS e ataques diretos. Também ativa funcionalidades como o Google Cloud Armor para ainda mais segurança.

Nesta secção do tutorial, faz o seguinte:

  1. Reponha as instâncias de VM para instalar o servidor Web Apache.
  2. Crie uma regra de firewall para permitir o acesso a partir de balanceadores de carga.
  3. Atribua endereços IPv4 e IPv6 globais e estáticos ao equilibrador de carga.
  4. Crie um grupo de instâncias para as suas instâncias.
  5. Comece a enviar tráfego para as suas instâncias.

O diagrama seguinte ilustra a arquitetura que cria nesta secção. As áreas cinzentas são abordadas noutras partes deste tutorial.

Arquitetura que realça 4 instâncias em 2 grupos de instâncias.

Reponha instâncias de VM

Quando criou as instâncias de VM anteriormente neste tutorial, estas não tinham acesso à Internet, porque não foi atribuído nenhum endereço IP externo e o Cloud NAT não foi configurado. Por conseguinte, o script de arranque que instala o Apache não pôde ser concluído com êxito.

A forma mais fácil de executar novamente os scripts de arranque é repor essas instâncias para que o servidor Web Apache possa ser instalado e usado na secção seguinte.

Consola

  1. Na Google Cloud consola, aceda à página Instâncias de VM:

    Aceder às instâncias de VM

  2. Selecione www-1,www-2,www-3 e www-4.

  3. Clique no botão Repor na parte superior da página.

    Se não vir um botão Repor, clique em Mais ações e escolha Repor.

  4. Confirme a reposição das quatro instâncias clicando em Repor na caixa de diálogo.

gcloud

  1. Reponha as quatro instâncias:

    gcloud compute instances reset www-1 \
        --zone us-central1-b
    
    gcloud compute instances reset www-2 \
        --zone us-central1-b
    
    gcloud compute instances reset www-3 \
        --zone europe-west1-b
    
    gcloud compute instances reset www-4 \
        --zone europe-west1-b
    

Abra a firewall

A tarefa seguinte é criar uma regra de firewall para permitir o tráfego dos balanceadores de carga para as suas instâncias de VM. Esta regra permite o tráfego do intervalo de endereçosGoogle Cloud usado pelos balanceadores de carga e pelas verificações de estado. A regra de firewall usa a etiqueta http-tag que criou anteriormente. A regra de firewall permite que o tráfego para a porta designada alcance instâncias que têm a etiqueta.

Consola

  1. Na Google Cloud consola, aceda à página Políticas de firewall:

    ACEDER À PÁGINA DE POLÍTICAS DE FIREWALL

  2. Clique em Criar regra de firewall.

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

  4. Deixe a rede de VPC como default.

  5. Em Segmentações, selecione Etiquetas de segmentação especificadas.

  6. Defina as etiquetas de destino como http-tag.

  7. Deixe o Filtro de origem definido como Intervalos de IP.

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

  9. Defina Protocolos e portas permitidos como tcp:80.

  10. Clique em Criar.

    A nova regra de firewall pode demorar alguns instantes a ser apresentada na consola.

gcloud

  • Crie uma regra de firewall com o nome 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 ficheiros de configuração de equilíbrio de carga do Terraform para o diretório atual:

    cp lb/* .

  2. Aplique a configuração do Terraform:

    terraform apply

Atribua um endereço IP externo para balanceadores de carga

Se estiver a publicar tráfego na Internet, tem de atribuir um endereço externo ao balanceador de carga. Pode atribuir um endereço IPv4, um endereço IPv6 ou ambos. Nesta secção, reserva endereços IPv4 e IPv6 estáticos adequados para adicionar ao DNS.

Não existe qualquer custo adicional para os endereços IP públicos, porque são usados com um equilibrador de carga.

Consola

  1. Na Google Cloud consola, aceda à página Endereços IP externos:

    ACEDA À PÁGINA DE ENDEREÇOS IP EXTERNOS

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

  3. Defina Nome como lb-ip-cr.

  4. Deixe o Tipo definido como Global.

  5. Clique em Reservar.

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

  7. Defina Nome como lb-ipv6-cr.

  8. Defina a versão do IP como IPv6.

  9. Deixe o 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
    

Crie grupos de instâncias e adicione instâncias

OsGoogle Cloud balanceadores de carga requerem grupos de instâncias para atuarem como back-ends para o tráfego. Neste tutorial, usa grupos de instâncias não geridos para simplificar. No entanto, também pode usar grupos de instâncias geridas para tirar partido de funcionalidades como a escala automática, a autorreparação, a implementação regional (em várias zonas) e a atualização automática.

Nesta secção, cria um grupo de instâncias para cada uma das zonas que está a usar.

Consola

  1. Na Google Cloud consola, aceda à página Grupos de instâncias:

    ACEDA À 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 gerido.

  4. Defina Nome como us-resources-w.

  5. Defina a Região como us-central1

  6. Defina a zona como us-central1-b.

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

  8. Em Instâncias de VM, faça o seguinte:

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

    • Nome: europe-resources-w
    • Zona: europe-west1-b
    • Instâncias: www-3 e www-4
  10. Na página Grupos de instâncias, confirme que tem dois grupos de instâncias, 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
    

Configure o serviço de balanceamento de carga

A funcionalidade do balanceador de carga envolve vários serviços ligados. Nesta secção, configura e associa os serviços. Os serviços que vai criar são os seguintes:

  • Portas com nome, que o equilibrador de carga usa para direcionar o tráfego para os seus grupos de instâncias.
  • Uma verificação de funcionamento que consulta as suas instâncias para ver se estão em bom estado. O balanceador de carga envia tráfego apenas para instâncias em bom estado.
  • Serviços de back-end, que monitorizam a utilização e o estado de funcionamento das instâncias. Os serviços de back-end sabem se as instâncias no grupo de instâncias podem receber tráfego. Se as instâncias não conseguirem receber tráfego, o balanceador de carga redireciona o tráfego, desde que as instâncias noutro local tenham capacidade suficiente. Um back-end define a capacidade dos grupos de instâncias que contém (utilização máxima da CPU ou consultas máximas por segundo).
  • Um mapa de URLs, que analisa o URL do pedido e pode encaminhar pedidos para serviços de back-end específicos com base no anfitrião e no caminho do URL do pedido. Neste tutorial, como não está a usar o encaminhamento baseado no conteúdo, o mapa de URLs contém apenas o mapeamento predefinido.
  • Um proxy de destino, que recebe o pedido do utilizador e o encaminha para o mapa de URLs.
  • Duas regras de encaminhamento globais, uma para IPv4 e outra para IPv6, que contêm os recursos de endereço IP externo global. As regras de encaminhamento global encaminham o pedido recebido para o proxy de destino.

Crie o balanceador de carga

Nesta secção, cria o equilibrador de carga e configura um serviço de back-end predefinido para processar o seu tráfego. Também cria uma verificação de funcionamento.

Consola

Selecione o tipo de balanceador de carga

  1. Na Google Cloud consola, aceda à página Equilíbrio de carga.

    Aceda a Balanceamento de carga

  2. Clique em Criar equilibrador de carga.
  3. Em Tipo de balanceador de carga, selecione Balanceador de carga de aplicações (HTTP/HTTPS) e clique em Seguinte.
  4. Para Público ou interno, selecione Público (externo) e clique em Seguinte.
  5. Para a Implementação global ou de região única, selecione Melhor para cargas de trabalho globais e clique em Seguinte.
  6. Para Geração do balanceador de carga, selecione Balanceador de carga de aplicações externo global e clique em Seguinte.
  7. Clique em Configurar.

Configuração básica

  1. Defina o Nome do balanceador de carga como web-map.

Configure o balanceador de carga

  1. No painel do lado esquerdo da página Criar Application Load Balancer externo global, clique em Configuração do back-end.
  2. Na lista Criar ou selecionar serviços de back-end e contentores de back-end, selecione Serviços de back-end e, de seguida, Criar um serviço de back-end. É apresentada a caixa de diálogo Criar serviço de back-end.
  3. Defina Nome como web-map-backend-service.
  4. Defina o protocolo. Para o protocolo HTTP, deixe os valores definidos como os predefinidos.
  5. Para Tipo de back-end, selecione Grupos de instâncias.
  6. Em Back-ends, defina Grupo de instâncias como us-resources-w.
  7. Clique em Adicionar back-end.
  8. Selecione o grupo de instâncias europe-resources-w e, de seguida, faça o seguinte:
    • Para o tráfego HTTP entre o balanceador de carga e as instâncias, certifique-se de que os números de porta estão definidos como 80.
    • Mantenha os valores predefinidos para os restantes campos.
  9. Clique em Concluído.
  10. Em Verificação de funcionamento, selecione Criar uma verificação de funcionamento ou Criar outra verificação de funcionamento.
  11. Defina os seguintes parâmetros de verificação de funcionamento:
    • Nome: http-basic-check
    • Protocolo: HTTP
    • Porta: 80
  12. 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 funcionamento:

    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
    

    Definiu o sinalizador --protocol como HTTP porque está a usar HTTP para aceder às instâncias. Para a verificação de funcionamento, usa a verificação de funcionamento http-basic-check que criou anteriormente.

  4. Adicione os seus 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
    

Defina regras de anfitrião e caminho

Consola

  • No painel esquerdo da página Criar Application Load Balancer externo global, clique em Regras de anfitrião e caminho.

    Para este tutorial, não precisa de configurar regras de anfitrião ou caminho, porque todo o tráfego vai para a regra predefinida. Por conseguinte, pode aceitar os valores predefinidos pré-preenchidos.

gcloud

  1. Crie um mapa de URLs predefinido que direcione todos os pedidos recebidos 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 pedidos para o mapa de URLs:

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

Configure o front-end e finalize a configuração

Consola

  1. No painel do lado esquerdo da página Criar Application Load Balancer externo global, clique em Configuração do front-end.
  2. Defina Nome como http-cr-rule.
  3. Defina Protocol como HTTP.
  4. Defina a versão do IP como IPv4.
  5. Na lista Endereço IP, selecione lb-ip-cr, o endereço que criou anteriormente.
  6. Confirme se a Porta está definida como 80.
  7. Clique em Concluído.
  8. Clique em Adicionar IP e porta do front-end.
  9. Defina Nome como http-cr-ipv6-rule.
  10. Para Protocolo, selecione HTTP.
  11. Defina a versão do IP como IPv6.
  12. Na lista Endereço IP, selecione lb-ipv6-cr, o outro endereço que criou anteriormente.
  13. Confirme se a Porta está definida como 80.
  14. Clique em Criar.
  15. Clique em Concluído.
  16. No painel do lado esquerdo da página Criar Application Load Balancer externo global, clique em Rever e finalizar.
  17. Compare as suas definições com o que pretendia criar.
  18. Se as definições estiverem corretas, clique em Criar.

    Regressa às páginas de balanceamento de carga. Depois de criar o balanceador de carga, é apresentada uma marca de verificação verde junto ao mesmo, o que indica que está em execução.

gcloud

  1. Obtenha os endereços IP estáticos que criou para o seu balanceador de carga. Tome nota dos mesmos, uma vez que os vai usar no passo seguinte.

    gcloud compute addresses list
    
  2. Crie duas regras de encaminhamento globais para encaminhar pedidos recebidos para o proxy, uma para IPv4 e outra para IPv6. Substitua lb_ip_address no comando pelo endereço IPv4 estático que criou e substitua lb_ipv6_address pelo endereço IPv6 que 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
    

    Depois de criar as regras de encaminhamento global, a propagação da configuração pode demorar vários minutos.

Teste a configuração

Nesta secção, envia um pedido HTTP para a sua instância para verificar se a configuração de equilíbrio de carga está a funcionar.

Consola

  1. Na Google Cloud consola, aceda à página Equilíbrio de carga:

    ACEDER À PÁGINA DE EQUILÍBRIO DE CARGA

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

  3. Na secção Backend da página, confirme que as instâncias estão em bom estado consultando a coluna Em bom estado.

    Pode demorar alguns momentos até que o ecrã indique que as instâncias estão em bom estado.

  4. Quando o ecrã mostrar que as instâncias estão em bom estado, copie o valor IP:Porta da secção Front-end e cole-o no navegador.

    No navegador, vê a página de conteúdo predefinida.

gcloud

  1. Obtenha os endereços IP das suas regras de encaminhamento global e tome nota dos mesmos para o passo seguinte:

    gcloud compute forwarding-rules list
    
  2. Use o comando curl para testar a resposta de vários URLs para os seus serviços. Experimente o IPv4 e o IPv6. Para IPv6, tem de colocar [] à volta do endereço, como http://[2001:DB8::]/.

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

Resumo

As suas VMs já podem publicar tráfego na Internet e obter dados da Internet. Também pode aceder a eles através de SSH para realizar tarefas de administração. Toda esta funcionalidade é alcançada através da utilização exclusiva de endereços IP privados, o que ajuda a protegê-los de ataques diretos ao não expor endereços IP acessíveis a partir da Internet.

Limpar

Para evitar incorrer em custos na sua conta do Google Cloud pelos recursos usados neste tutorial, elimine o projeto que contém os recursos ou mantenha o projeto e elimine os recursos individuais.

Elimine o projeto

  1. In the Google Cloud console, go to the Manage resources page.

    Go to Manage resources

  2. In the project list, select the project that you want to delete, and then click Delete.
  3. In the dialog, type the project ID, and then click Shut down to delete the project.

O que se segue?