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
- 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.
-
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 theresourcemanager.projects.create
permission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
-
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 theresourcemanager.projects.create
permission. Learn how to grant roles.
-
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.
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.
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
Na Google Cloud consola, aceda à página de instâncias de VM:
Clique em Criar instância.
Defina Nome como
www-1
.Defina a Zona como us-central1-b.
Clique em Gestão, segurança, discos, trabalhar em rede, arrendamento único.
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 edit.
- Em IP externo, selecione Nenhum.
- Para o tráfego HTTP, na caixa Etiquetas de rede, introduza
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
Clique em Criar.
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
Crie
www-3
com as mesmas definições, exceto que deve definir Zone comoeurope-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
Crie
www-4
com as mesmas definições, exceto que deve definir Zone comoeurope-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
Abra o Cloud Shell:
Crie uma instância denominada
www-1
emus-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"
Crie uma instância com o nome
www-2
emus-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"
Crie uma instância com o nome
www-3
, desta vez emeurope-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"
Crie uma instância com o nome
www-4
, também emeurope-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
Abra o Cloud Shell:
Clone o repositório do GitHub:
git clone https://github.com/GoogleCloudPlatform/gce-public-connectivity-terraform
Altere o diretório de trabalho para o diretório do repositório:
cd iap
Instale o Terraform.
Substitua
[YOUR-ORGANIZATION-NAME]
no ficheiroscripts/set_env_vars.sh
pelo nome da sua organização. Google CloudDefina variáveis de ambiente:
source scripts/set_env_vars.sh
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:
- Estabeleça ligação a uma instância do Compute Engine através do túnel do IAP.
- 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.
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
Na Google Cloud consola, aceda à página Políticas de firewall:
Clique em Criar regra de firewall.
Defina Nome como
allow-ssh-from-iap
.Deixe a rede VPC como
default
.Em Segmentações, selecione Etiquetas de segmentação especificadas.
Defina as etiquetas de destino como
http-tag
.Deixe o Filtro de origem definido como Intervalos de IP.
Defina os Intervalos de IP de origem como
35.235.240.0/20
.Defina Protocolos e portas permitidos como
tcp:22
.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
Copie o ficheiro Terraform das regras de firewall para o diretório atual:
cp iap/vpc_firewall_rules.tf .
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.
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.
Selecione o separador Recursos de SSH e TCP.
Para as VMs que criou, selecione as caixas de verificação.
No lado direito, clique em Adicionar diretor.
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.
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
Aceda à página Cloud NAT:
Clique em Começar ou Criar gateway de NAT.
Defina o nome do gateway como
nat-config
.Defina a rede de VPC como
default
.Defina a Região como
us-central1
.Em Cloud Router, selecione Criar novo router e, de seguida, faça o seguinte:
- Defina Nome como
nat-router-us-central1
. - Clique em Criar.
- Defina Nome como
Clique em Criar.
Repita o procedimento, mas substitua estes valores:
- Nome:
nat-router-europe-west1
- Região:
europe-west1
- Nome:
gcloud
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
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
Copie o ficheiro de configuração do NAT do Terraform para o diretório atual:
cp nat/vpc_nat_gateways.tf .
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.
- Aguarde até 3 minutos para que a configuração de NAT seja propagada para a VM.
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
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:
- Reponha as instâncias de VM para instalar o servidor Web Apache.
- Crie uma regra de firewall para permitir o acesso a partir de balanceadores de carga.
- Atribua endereços IPv4 e IPv6 globais e estáticos ao equilibrador de carga.
- Crie um grupo de instâncias para as suas instâncias.
- 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.
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
Na Google Cloud consola, aceda à página Instâncias de VM:
Selecione
www-1
,www-2
,www-3
ewww-4
.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.Confirme a reposição das quatro instâncias clicando em Repor na caixa de diálogo.
gcloud
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
Na Google Cloud consola, aceda à página Políticas de firewall:
Clique em Criar regra de firewall.
Defina Nome como
allow-lb-and-healthcheck
.Deixe a rede de VPC como
default
.Em Segmentações, selecione Etiquetas de segmentação especificadas.
Defina as etiquetas de destino como
http-tag
.Deixe o Filtro de origem definido como Intervalos de IP.
Defina os Intervalos IP de origem como
130.211.0.0/22
e35.191.0.0/16
.Defina Protocolos e portas permitidos como
tcp:80
.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
Copie os ficheiros de configuração de equilíbrio de carga do Terraform para o diretório atual:
cp lb/* .
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
Na Google Cloud consola, aceda à página Endereços IP externos:
Clique em Reservar endereço estático para reservar um endereço IPv4.
Defina Nome como
lb-ip-cr
.Deixe o Tipo definido como Global.
Clique em Reservar.
Clique novamente em Reservar endereço estático para reservar um endereço IPv6.
Defina Nome como
lb-ipv6-cr
.Defina a versão do IP como IPv6.
Deixe o Tipo definido como Global.
Clique em Reservar.
gcloud
Crie um endereço IP estático denominado
lb-ip-cr
para IPv4:gcloud compute addresses create lb-ip-cr \ --ip-version=IPV4 \ --global
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
Na Google Cloud consola, aceda à página Grupos de instâncias:
Clique em Criar grupo de instâncias.
No lado esquerdo, clique em Novo grupo de instâncias não gerido.
Defina Nome como
us-resources-w
.Defina a Região como
us-central1
Defina a zona como
us-central1-b
.Selecione Rede (predefinição) e Sub-rede (predefinição).
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.
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
ewww-4
- Nome:
Na página Grupos de instâncias, confirme que tem dois grupos de instâncias, cada um com duas instâncias.
gcloud
Crie o grupo de instâncias
us-resources-w
:gcloud compute instance-groups unmanaged create us-resources-w \ --zone us-central1-b
Adicione as instâncias
www-1
ewww-2
:gcloud compute instance-groups unmanaged add-instances us-resources-w \ --instances www-1,www-2 \ --zone us-central1-b
Crie o grupo de instâncias
europe-resources-w
:gcloud compute instance-groups unmanaged create europe-resources-w \ --zone europe-west1-b
Adicione as instâncias
www-3
ewww-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
Na Google Cloud consola, aceda à página Equilíbrio de carga.
- Clique em Criar equilibrador de carga.
- Em Tipo de balanceador de carga, selecione Balanceador de carga de aplicações (HTTP/HTTPS) e clique em Seguinte.
- Para Público ou interno, selecione Público (externo) e clique em Seguinte.
- Para a Implementação global ou de região única, selecione Melhor para cargas de trabalho globais e clique em Seguinte.
- Para Geração do balanceador de carga, selecione Balanceador de carga de aplicações externo global e clique em Seguinte.
- Clique em Configurar.
Configuração básica
- Defina o Nome do balanceador de carga como
web-map
.
Configure o balanceador de carga
- No painel do lado esquerdo da página Criar Application Load Balancer externo global, clique em Configuração do back-end.
- 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.
- Defina Nome como
web-map-backend-service
. - Defina o protocolo. Para o protocolo HTTP, deixe os valores definidos como os predefinidos.
- Para Tipo de back-end, selecione Grupos de instâncias.
- Em Back-ends, defina Grupo de instâncias como
us-resources-w
. - Clique em Adicionar back-end.
- 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.
- 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
- Clique em Concluído.
- Em Verificação de funcionamento, selecione Criar uma verificação de funcionamento ou Criar outra verificação de funcionamento.
- Defina os seguintes parâmetros de verificação de funcionamento:
- Nome:
http-basic-check
- Protocolo:
HTTP
- Porta:
80
- Nome:
- Clique em Criar.
gcloud
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
Crie uma verificação de funcionamento:
gcloud compute health-checks create http http-basic-check \ --port 80
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
comoHTTP
porque está a usar HTTP para aceder às instâncias. Para a verificação de funcionamento, usa a verificação de funcionamentohttp-basic-check
que criou anteriormente.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
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
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
- No painel do lado esquerdo da página Criar Application Load Balancer externo global, clique em Configuração do front-end.
- Defina Nome como
http-cr-rule
. - Defina Protocol como
HTTP
. - Defina a versão do IP como
IPv4
. - Na lista Endereço IP, selecione
lb-ip-cr
, o endereço que criou anteriormente. - Confirme se a Porta está definida como
80
. - Clique em Concluído.
- Clique em Adicionar IP e porta do front-end.
- Defina Nome como
http-cr-ipv6-rule
. - Para Protocolo, selecione HTTP.
- Defina a versão do IP como
IPv6
. - Na lista Endereço IP, selecione
lb-ipv6-cr
, o outro endereço que criou anteriormente. - Confirme se a Porta está definida como
80
. - Clique em Criar.
- Clique em Concluído.
- No painel do lado esquerdo da página Criar Application Load Balancer externo global, clique em Rever e finalizar.
- Compare as suas definições com o que pretendia criar.
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
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
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
Na Google Cloud consola, aceda à página Equilíbrio de carga:
Selecione o balanceador de carga denominado
web-map
para ver detalhes sobre o balanceador de carga que acabou de criar.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.
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
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
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, comohttp://[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
- In the Google Cloud console, go to the Manage resources page.
- In the project list, select the project that you want to delete, and then click Delete.
- In the dialog, type the project ID, and then click Shut down to delete the project.
O que se segue?
- A criação do Cloud Load Balancing mostra-lhe como criar balanceadores de carga HTTPS e HTTP/2.
- Configurar um cluster privado mostra-lhe como configurar um cluster privado do Google Kubernetes Engine.
- Usar o IAP para encaminhamento TCP descreve outras utilizações do IAP para TCP, como RDP ou execução de comandos remotos.
- Usar o Cloud NAT fornece exemplos para o Google Kubernetes Engine e descreve como modificar os detalhes dos parâmetros.
- Explore arquiteturas de referência, diagramas e práticas recomendadas sobre o Google Cloud. Consulte o nosso Centro de arquitetura na nuvem.