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, entre eles:
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
- 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.
-
Make sure 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.
-
Make sure that billing is enabled for your Google Cloud project.
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.
Como criar instâncias de VM
Para iniciar o tutorial, crie um total de quatro instâncias de máquina virtual (VM, na sigla em inglês): 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.
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 Google Cloud e do gcloud
. A maneira mais fácil de usar os comandos do gcloud
é por meio do Cloud Shell.
Console
No console do Google Cloud, acesse a página "Instâncias de VMs":
Clique em Criar instância.
Defina o Nome como
www-1
.Defina Zona como us-central1-b.
Clique em Gerenciamento, segurança, discos, rede, locatário único.
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 edit.
- Em IP externo, selecione Nenhum.
- Para o tráfego HTTP, na caixa Tags de rede, digite
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
Clique em Criar.
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
Crie
www-3
com as mesmas configurações, mas defina a Zona comoeurope-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
Crie
www-4
com as mesmas configurações, mas defina a Zona comoeurope-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
Abra o Cloud Shell:
Crie uma instância chamada
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 chamada
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 chamada
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 chamada
www-4
, esta 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 arquivoscripts/set_env_vars.sh
pelo nome da organização do Google Cloud.Defina as variáveis de ambiente:
source scripts/set_env_vars.sh
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:
- Conecte-se a uma instância do Compute Engine usando o túnel do IAP.
- 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.
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
No Console do Google Cloud, acesse a página Políticas do Firewall.
Clique em Criar regra de firewall.
Defina o Nome como
allow-ssh-from-iap
.Deixe a rede VPC como
default
.Em Destinos, selecione Tags de destino especificadas.
Defina Tags de destino para
http-tag
.Mantenha Source filter definido como IP ranges.
Defina Intervalos de IPs de origem como
35.235.240.0/20
.Defina Portas e protocolos permitidos como
tcp:22
.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
Copie o arquivo do Terraform das regras de firewall para o diretório atual:
cp iap/vpc_firewall_rules.tf .
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.
No console do Google Cloud, acesse Segurança > Identity-Aware Proxy:
Se você vir uma mensagem informando que precisa configurar a tela de consentimento do OAuth, desconsidere-a. Não é relevante ao IAP para TCP.
Selecione a guia Recursos SSH e TCP.
Selecione as VMs que você criou:
No lado direito, clique em Adicionar principal.
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:
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. NAT não é usado para tráfego no Google Cloud.
O 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.
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
Vá para a página do Cloud NAT:
Clique em Primeiros passos ou Criar gateway NAT.
Defina o nome do gateway como
nat-config
.Defina a rede VPC como
default
.Defina a região como
us-central1
.Em Cloud Router, selecione Criar novo roteador e siga as etapas abaixo:
- Defina o Nome como
nat-router-us-central1
. - Clique em Criar.
- Defina o 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 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
Copie o arquivo de configuração NAT do Terraform para o diretório atual:
cp nat/vpc_nat_gateways.tf .
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.
- Aguarde até três minutos para que a configuração do NAT seja propagada para a VM.
No Cloud Shell, conecte-se à sua instância usando o túnel que você criou:
gcloud compute ssh www-1 --tunnel-through-iap
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:
- Redefina as instâncias de VM para instalar o servidor da Web Apache.
- Crie uma regra de firewall para permitir o acesso de balanceadores de carga.
- Aloque endereços IPv4 e IPv6 estáticos globais para o balanceador de carga.
- Crie um grupo para suas instâncias.
- 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.
Redefinir instâncias de VM
Quando você criou as instâncias de VM anteriormente neste tutorial, elas não tinham acesso à Internet, porque nenhum endereço IP externo foi atribuído e o Cloud NAT não foi configurado. Portanto, o script de inicialização que instala o Apache não foi concluído com sucesso.
A maneira mais fácil de executar novamente os scripts de inicialização é redefinir essas instâncias para que o servidor da Web Apache possa ser instalado e usado na próxima seção.
Console
No console do Google Cloud, acesse a página Instâncias de VMs:
Selecione
www-1
,www-2
,www-3
ewww-4
.Clique no botão Excluir na parte superior da página.
Se o botão Redefinir não estiver disponível, clique em Mais ações
e escolha Redefinir.Confirme a redefinição das quatro instâncias clicando em Redefinir na caixa de diálogo.
gcloud
Redefina 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
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
No Console do Google Cloud, acesse a página Políticas do Firewall.
Clique em Criar regra de firewall.
Defina o Nome como
allow-lb-and-healthcheck
.Deixe a rede VPC como
default
.Em Destinos, selecione Tags de destino especificadas.
Defina Tags de destino para
http-tag
.Mantenha Source filter definido como IP ranges.
Defina Intervalos IP de origem como
130.211.0.0/22
e35.191.0.0/16
.Defina Portas e protocolos permitidos como
tcp:80
.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
Copie os arquivos de configuração de balanceamento de carga do Terraform para o diretório atual:
cp lb/* .
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
No console do Google Cloud, acesse a página Endereços IP externos:
Clique em Reservar endereço estático para reservar um endereço IPv4.
Defina o Nome como
lb-ip-cr
.Deixe Tipo definido como Global.
Clique em Reservar.
Clique em Reservar endereço estático novamente para reservar um endereço IPv6.
Defina o Nome como
lb-ipv6-cr
.Defina Versão IP como IPv6.
Deixe 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
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
No console do Google Cloud, acesse a 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 gerenciadas.
Defina o Nome como
us-resources-w
.Defina Região como
us-central1
Defina Zona como
us-central1-b
.Selecione Rede (padrão) e Sub-rede (padrão).
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.
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
ewww-4
- Nome:
Na página Grupos de instâncias, confirme se você tem dois grupos, 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
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, que o balanceador de carga usa para direcionar o tráfego para seus 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 da solicitação. 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
Iniciar a configuração
No console do Google Cloud, acesse a página Balanceamento de carga.
- Clique em Criar balanceador de carga.
- Em Tipo de balanceador de carga, selecione Balanceador de carga de aplicativo (HTTP/HTTPS) e clique em Próxima.
- Em Voltado ao público ou interno, selecione Voltado ao público (externo) e clique em Próxima.
- Em Implantação global ou de região única, selecione Melhor para cargas de trabalho globais e clique em Próxima.
- Em Geração do balanceador de carga, selecione Balanceador de carga de aplicativo externo global e clique em Próxima.
- Clique em Configurar.
Configuração básica
- Defina o Nome do balanceador de carga como
web-map
.
Configurar o balanceador de carga
- No painel esquerdo da página Criar balanceador de carga de aplicativo externo global, clique em Configuração de back-end.
- 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.
- Defina o Nome como
web-map-backend-service
. - Defina o Protocolo. Para protocolo HTTP, deixe os valores definidos como padrão.
- Para Tipo de back-end, selecione Grupos de instâncias.
- Abaixo de 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 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.
- Para tráfego HTTP entre o balanceador de carga e as instâncias, verifique se os Números de porta estão definidos como
- Clique em Concluído.
- Em Verificação de integridade, selecione Criar uma verificação de integridade ou Criar outra verificação de integridade.
- Defina os parâmetros de verificação de integridade a seguir:
- Name:
http-basic-check
- Protocolo:
HTTP
- Porta:
80
- Name:
- 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 integridade:
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
Defina a sinalização
--protocol
comoHTTP
porque está usando HTTP para acessar as instâncias. Para a verificação de integridade, use ahttp-basic-check
criada anteriormente.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 esquerdo da página Criar balanceador de carga de aplicativo externo global, clique em Regras de host e caminho.
Para este tutorial, não é necessário configurar regras de host ou caminho, porque todo o tráfego será direcionado para a regra padrão. Portanto, é possível aceitar os valores padrão pré-preenchidos.
gcloud
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
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
Configure o front-end e finalize a configuração
Console
- No painel esquerdo da página Criar balanceador de carga de aplicativo externo global, clique em Configuração de front-end.
- Defina o Nome como
http-cr-rule
. - Defina o Protocolo como
HTTP
. - Defina Versão do IP como
IPv4
. - Na lista Endereço IP, selecione
lb-ip-cr
, o endereço que você criou anteriormente. - Confirme se a Porta está definida como
80
. - Clique em Concluído.
- Clique em Adicionar IP e porta de front-end.
- Defina o Nome como
http-cr-ipv6-rule
. - Em Protocolo, selecione HTTP.
- Defina Versão do IP como
IPv6
. - Na lista Endereço IP, selecione
lb-ipv6-cr
, o outro endereço que você criou anteriormente. - Confirme se a Porta está definida como
80
. - Clique em Criar.
- Clique em Concluído.
- No painel esquerdo da página Criar balanceador de carga de aplicativo externo global, clique em Analisar e finalizar.
- Compare as configurações com o que você pretendia criar.
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.
gcloud
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
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
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
No console do Google Cloud, acesse a página Balanceamento de carga:
Selecione o balanceador de carga denominado
web-map
para ver detalhes sobre o balanceador de carga que você acabou de criar.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.
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
Consiga os endereços IP das suas regras de encaminhamento global e anote-os para a próxima etapa:
gcloud compute forwarding-rules list
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, comohttp://[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 cobranças na sua conta do Google Cloud pelos recursos usados no tutorial, exclua o projeto que os contém ou mantenha o projeto e exclua os recursos individuais.
Exclua 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.
A seguir
- Como criar o Cloud Load Balancing mostra como criar balanceadores de carga HTTPS e HTTP2.
- Como configurar um cluster privado mostra como configurar um cluster privado do Google Kubernetes Engine.
- Como usar o IAP para encaminhamento de TCP descreve outros usos do IAP para TCP, como RDP ou execução de comando remoto.
- Como usar o Cloud NAT apresenta exemplos do Google Kubernetes Engine e descreve como modificar os detalhes dos parâmetros.
- Confira arquiteturas de referência, diagramas, tutoriais e práticas recomendadas do Google Cloud. Confira o Centro de arquitetura do Cloud.