Arquitetura do aplicativo
O aplicativo inclui os seguintes componentes do Compute Engine:
- Modelo de instância: um modelo usado para criar cada instância nos grupos de instâncias.
- Grupos de instâncias: vários grupos de instâncias que fazem escalonamento automático com base no tráfego de entrada.
- Balanceador de carga: um balanceador de carga HTTP que distribui o tráfego entre os grupos de instâncias.
- Instâncias: várias instâncias para gerar tráfego de teste de diferentes partes do mundo.

Configurar o serviço da Web
Criar os grupos de instâncias
Console
- Crie uma rede para os grupos de instâncias. - No console do Google Cloud , acesse a página Redes VPC. 
- Clique em Criar rede VPC. 
- Defina o Nome como - fortressnet.
- Defina o Modo de criação da sub-rede como Automático. 
- Clique em Criar na parte inferior da página. 
 
- Crie uma regra de firewall para a rede. Ela permitirá todas as solicitações HTTP enviadas para as instâncias. - No console do Google Cloud , acesse a página Regras de firewall. 
- Clique em Criar regra de firewall. 
- Defina o Nome como - fortressnet-allow-http.
- Em Rede, selecione - fortressnet.
- Em Destinos, selecione - All instances in the network.
- Defina Intervalos IPv4 de origem como - 0.0.0.0/0.
- Em Protocolos e portas, escolha Protocolos e portas especificados e marque a caixa de seleção tcp e insira - 80.
- Clique em Criar. 
 
- Crie um modelo de instância. Inclua um script de inicialização que inicie um servidor da Web Apache simples em cada instância. - No console do Google Cloud , acesse a página Modelos de instância. 
- Clique em Criar modelo de instância. 
- Defina o Nome como - fort-template.
- Em Configuração da máquina, selecione - e2-micro(2 vCPUs, 1 GB de memória).
- Na seção Opções avançadas, expanda Rede e faça o seguinte: - Na seção Interfaces de rede, expanda a interface de rede para editá-la.
- Em Rede, selecione fortressnet.
 
- Na seção Gerenciamento, para Automação, insira o seguinte script de inicialização: - apt update && apt -y install apache2 
- Clique em Criar. 
 
- Crie vários grupos de instâncias regionais gerenciadas usando o modelo de instância. Configure o escalonamento automático para cada grupo de instâncias. - No console, do Google Cloud , acesse a página Grupos de instâncias. 
- Clique em Criar grupo de instâncias para criar um novo grupo gerenciado de instâncias. 
- Selecione Novo grupo gerenciado de instâncias (sem estado). 
- Defina o Nome como - us-central1-pool.
- Em Modelo de instância, selecione - fort-template.
- Para Local, selecione Várias zonas. 
- Em Região, selecione - us-central1. Em Zonas, deixe os valores predefinidos selecionados.
- Em Modo de escalonamento automático, selecione Ativado: adicionar e remover instâncias para o grupo. 
- Defina o Número mínimo de instâncias como - 1.
- Defina o Número máximo de instâncias como - 5.
- Em Indicadores de escalonamento automático, edite a seleção padrão (uso da CPU) e defina o Tipo de indicador como Uso de balanceamento de carga HTTP. 
- Defina a Meta de uso do balanceamento de carga HTTP como - 80.
- Clique em Concluído. 
- Clique em Criar. Uma caixa de diálogo exibe a mensagem de que você também precisa atribuir o grupo de instâncias a um serviço de back-end de um balanceador de carga HTTP. 
- Na caixa de diálogo, clique em Confirmar. É possível configurar o balanceador de carga depois de criar todos os grupos de instâncias. 
- Repita essas etapas para criar mais dois grupos de instâncias com as seguintes alterações: - Crie um grupo com o Nome como europe-west1-poole a Região comoeurope-west1.
- Crie um grupo com o Nome como asia-east1-poole a Região comoasia-east1.
 
- Crie um grupo com o Nome como 
 
- (Opcional) Verifique se as instâncias estão íntegras e veiculando tráfego HTTP. Teste o endereço IP externo de uma ou mais instâncias. Talvez seja necessário aguardar alguns minutos até que as instâncias concluam o processo de inicialização. - No console do Google Cloud , acesse a página Instâncias de VM. 
- Verifique se cada instância em execução tem uma marca de seleção verde na coluna Status ao lado do nome do grupo de instâncias. 
- Copie o IP externo de uma instância e cole-o em um navegador da Web. 
 - Você verá a página da Web "Apache2 Debian Default Page". - Se isso não funcionar, espere alguns minutos. 
gcloud
- Crie uma rede para os grupos de instâncias. - gcloud compute networks create fortressnet --subnet-mode auto 
- Crie uma regra de firewall para a rede. Ela permitirá todas as solicitações HTTP enviadas para as instâncias. - gcloud compute firewall-rules create fortressnet-allow-http \ --network fortressnet \ --allow tcp:80
- Crie um modelo de instância. Inclua um script de inicialização que inicie um servidor da Web Apache simples em cada instância. - gcloud compute instance-templates create fort-template \ --machine-type e2-micro \ --network fortressnet \ --metadata startup-script='apt update && apt -y install apache2'
- Crie vários grupos de instâncias regionais gerenciadas usando o modelo de instância. Configure o escalonamento automático para cada grupo de instâncias. - gcloud compute instance-groups managed create us-central1-pool \ --region us-central1 \ --template fort-template \ --size 1 gcloud compute instance-groups managed set-autoscaling us-central1-pool \ --region us-central1 \ --min-num-replicas 1 \ --max-num-replicas 5 \ --scale-based-on-load-balancing \ --target-load-balancing-utilization .8- gcloud compute instance-groups managed create europe-west1-pool \ --region europe-west1 \ --template fort-template \ --size 1 gcloud compute instance-groups managed set-autoscaling europe-west1-pool \ --region europe-west1 \ --min-num-replicas 1 \ --max-num-replicas 5 \ --scale-based-on-load-balancing \ --target-load-balancing-utilization .8- gcloud compute instance-groups managed create asia-east1-pool \ --region asia-east1 \ --template fort-template \ --size 1 gcloud compute instance-groups managed set-autoscaling asia-east1-pool \ --region asia-east1 \ --min-num-replicas 1 \ --max-num-replicas 5 \ --scale-based-on-load-balancing \ --target-load-balancing-utilization .8
- (Opcional) Verifique se as instâncias estão íntegras e veiculando tráfego HTTP. Teste o endereço IP externo de uma ou mais instâncias. Talvez seja necessário aguardar alguns minutos até que as instâncias concluam o processo de inicialização. - Liste suas instâncias. - gcloud compute instances list 
- Verifique na coluna - STATUSse as instâncias estão no status- RUNNING.
- Consulte o endereço IP da instância na coluna - EXTERNAL_IPpara verificá-la.- curl http://EXTERNAL_IP | head 
 - Você verá um texto HTML, incluindo a linha - <title>Apache2 Debian Default Page: It works</title>.- Se isso não funcionar, espere alguns minutos. 
Configurar o balanceador de carga
O balanceador de carga distribui solicitações de clientes entre vários back-ends.
Console
Selecionar o tipo de balanceador de carga
- 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 Avançar.
- Em Voltado ao público ou interno, selecione Voltado ao público (externo) e clique em Avançar.
- 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 fortressnet-balancer.
Configuração de back-end
- Na página Editar balanceador de carga externo do aplicativo global, clique em Configuração de back-end.
- No menu suspenso Criar ou selecionar serviços e buckets de back-end, selecione Serviços de back-end. Em seguida, clique em Criar um serviço de back-end. Você verá a caixa de diálogo Criar serviço de back-end.
- Defina o Nome do serviço de back-end como fortressnet-backend-service.
- Na caixa de diálogo Novo back-end, defina o Grupo de instâncias como
asia-east1-pool.
- Em Modo de balanceamento, selecione Taxa.
- Defina o RPS máximo como 100RPS por instância.
- Clique em Concluir.
- Selecione Adicionar back-end.
- Na caixa de diálogo Novo back-end, defina o Grupo de instâncias como
europe-west1-pool.
- Em Modo de balanceamento, selecione Taxa.
- Defina o RPS máximo como 100RPS por instância.
- Clique em Concluir.
- Selecione Adicionar back-end.
- Na caixa de diálogo Novo back-end, defina o Grupo de instâncias como
us-central1-pool.
- Em Modo de balanceamento, selecione Taxa.
- Defina o RPS máximo como 100RPS por instância.
- Clique em Concluir.
- Em Verificação de integridade, selecione Criar verificação de integridade.
- Defina o Nome como http-basic-check.
- Em Protocolo, selecione HTTP.
- Defina a Porta como 80.
- Clique em Salvar e continuar.
- Clique em Criar.
Regras de host e caminho
- No painel esquerdo da página Criar balanceador de carga de aplicativo externo global, clique em Regras de host e caminho.
 Neste exemplo, não é necessário configurar regras de host ou de caminho porque todo o tráfego seguirá a regra padrão. Basta aceitar os valores padrão preenchidos previamente.
Configuração de front-end
- 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 fortressnet-http-rule.
- Em Versão IP, selecione IPv4.
- Em Endereço IP, selecione Criar endereço IP.
- Na caixa de diálogo Reservar um novo IP estático, defina o Nome como
fortressnet-ip.
- Clique em Reservar e aguarde alguns instantes.
- Clique em Concluído na parte inferior da caixa de diálogo Novo IP e nova porta de front-end.
- Clique em Adicionar IP e porta de front-end.
- Defina o Nome como fortressnet-http-ipv6-rule.
- Em Versão IP, selecione IPv6.
- Em Endereço IP, selecione Criar endereço IP.
- Na caixa de diálogo, defina o Nome como fortressnet-ipv6.
- Clique em Reservar e aguarde alguns instantes.
- Clique em Concluído na parte inferior da caixa de diálogo Novo IP e nova porta de front-end.
Revisar e finalizar
- 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 na parte inferior do painel esquerdo. Você voltará para a tela "Balanceamento de carga". Depois que o balanceador de carga for criado, uma marca de seleção verde ao lado dele indicará que ele está em execução.
gcloud
Configuração de back-end
- Crie uma verificação de integridade básica. Ela verificará se um back-end do balanceador de carga está respondendo a solicitações HTTP. - gcloud compute health-checks create http http-basic-check 
- Crie um serviço de back-end global. Esse serviço receberá o tráfego HTTP do balanceador de carga. - gcloud compute backend-services create fortressnet-backend-service \ --protocol HTTP \ --health-checks http-basic-check \ --global
- Adicione os grupos de instâncias como back-ends regionais do serviço de back-end. Essa configuração distribuirá o tráfego entre os back-ends com base em um número máximo de solicitações por segundo (RPS, na sigla em inglês) por instância. - gcloud compute backend-services add-backend fortressnet-backend-service \ --balancing-mode RATE \ --max-rate-per-instance 100 \ --instance-group us-central1-pool \ --instance-group-region us-central1 \ --global gcloud compute backend-services add-backend fortressnet-backend-service \ --balancing-mode RATE \ --max-rate-per-instance 100 \ --instance-group europe-west1-pool \ --instance-group-region europe-west1 \ --global gcloud compute backend-services add-backend fortressnet-backend-service \ --balancing-mode RATE \ --max-rate-per-instance 100 \ --instance-group asia-east1-pool \ --instance-group-region asia-east1 \ --global
Regras de host e caminho
- Defina um mapa de URL. Os mapas de URL encaminham URLs diferentes para serviços de back-end distintos. Como há apenas um serviço de back-end, simplesmente o definiremos como o serviço padrão para todos os URLs. - gcloud compute url-maps create fortressnet-balancer \ --default-service fortressnet-backend-service
- Crie uma rota de proxy HTTP. Esse tipo de rota aceita solicitações HTTP e as encaminha de acordo com o mapa de URLs. Nesse caso, enviará todas as solicitações para seu único serviço de back-end. - gcloud compute target-http-proxies create fortressnet-http-proxy \ --url-map fortressnet-balancer
Configuração de front-end
- Crie dois endereços IP externos estáticos globais: um para IPV4 e outro para IPV6. Esses serão os endereços IP externos globais do balanceador de carga. - gcloud compute addresses create fortressnet-ip \ --ip-version IPV4 \ --network-tier=PREMIUM \ --global gcloud compute addresses create fortressnet-ipv6 \ --ip-version IPV6 \ --network-tier=PREMIUM \ --global
- Pesquise os endereços IP externos do balanceador de carga. - gcloud compute addresses list 
- Crie regras de encaminhamento globais para os endereços IP externos. Assim, as solicitações HTTP IPV4 e IVP6 serão encaminhadas para seu proxy HTTP. - gcloud compute forwarding-rules create fortressnet-http-rule \ --load-balancing-scheme=EXTERNAL \ --network-tier=PREMIUM \ --global \ --target-http-proxy fortressnet-http-proxy \ --ports 80 \ --address LOAD_BALANCER_IP_ADDRESS- gcloud compute forwarding-rules create fortressnet-http-ipv6-rule \ --load-balancing-scheme=EXTERNAL \ --network-tier=PREMIUM \ --global \ --target-http-proxy fortressnet-http-proxy \ --ports 80 \ --address LOAD_BALANCER_IPV6_ADDRESS
(Opcional) Verifique se o balanceador de carga está funcionando. Talvez seja necessário esperar alguns minutos.
Console
- No console do Google Cloud , acesse a página Balanceamento de carga. 
- Aguarde até que - fortressnet-balancertenha uma marca de seleção verde sob a coluna Back-ends.
- Clique em - fortressnet-balancer.
- Em Front-end, copie o endereço IPV4 na coluna IP:Porta. Os endereços IPV4 têm o formato - www.xxx.yyy.zzz. Você não precisa do número de porta- :nnà direita.) Se a seção Front-end estiver ausente, aguarde alguns instantes e recarregue a página.
- Digite o endereço IP em um navegador da Web. 
Você verá a página da Web "Apache2 Debian Default Page".
Se você receber uma página "Erro 404 (não encontrado)", aguarde mais alguns minutos.
gcloud
- Pesquise os endereços IP externos do balanceador de carga. - gcloud compute addresses list 
- Consulte o endereço IPV4. Os endereços IPV4 têm o formato - www.xxx.yyy.zzz.- curl http://LOAD_BALANCER_IP_ADDRESS | head 
Você verá um texto HTML, incluindo a linha
<title>Apache2 Debian Default Page: It works</title>.
Se você vir <title>Error 404 (Not Found)!!1</title> em vez disso, aguarde
mais alguns minutos.
Prática recomendada: crie um firewall seguro para permitir somente tráfego interno do balanceador de carga e da verificação de integridade. Em seguida, exclua o firewall original que permitiu qualquer solicitação HTTP. Isso impede que instâncias individuais sejam acessadas por clientes externos.
Console
- Crie um novo firewall que permita apenas tráfego do balanceador de carga e da verificação de integridade. - No console do Google Cloud , acesse a página Regras de firewall. 
- Clique em Criar regra de firewall. 
- Defina o Nome como - fortressnet-allow-load-balancer.
- Em Rede, selecione - fortressnet.
- Em Destinos, selecione - All instances in the network.
- Em Intervalos de IP de origem, digite - 130.211.0.0/22e pressione a tecla Enter. Em seguida, insira- 35.191.0.0/16e pressione Enter novamente.
- Em Protocolos e portas, selecione tcp e digite - 80.
- Clique em Criar. 
 
- Exclua o antigo firewall "permitir tudo". - Marque a opção fortressnet-allow-http.
- Clique em Excluir na parte superior da página.
- Na caixa de diálogo, clique em Excluir.
 
- Marque a opção 
gcloud
- Crie um novo firewall que permita apenas tráfego do balanceador de carga e da verificação de integridade. - gcloud compute firewall-rules create fortressnet-allow-load-balancer \ --network fortressnet \ --source-ranges 130.211.0.0/22,35.191.0.0/16 \ --allow tcp:80
- Exclua o antigo firewall "permitir tudo". - gcloud compute firewall-rules delete fortressnet-allow-http -q 
(Opcional) Verificar se o escalonamento automático e o balanceamento de carga funcionam
Gerar tráfego de teste
Imagine que é de manhã na Europa e seu serviço da Web de repente se tornou viral na Internet. Gere um grande número de solicitações de clientes de uma só vez da Europa.
Console
- Crie uma instância instalada com a ferramenta de teste de carga Siege. - No console do Google Cloud , acesse a página Criar uma instância. 
- Defina o Nome como - europe-loadtest.
- Em Região, selecione - europe-west1.
- Para configurações avançadas, abra a seção Opções avançadas e faça o seguinte: - Expanda a seção Gerenciamento.
- No campo Automação, insira o seguinte script
de inicialização:
apt -y install siege 
 
- Para criar a VM, clique em Criar. 
 
- Consiga o endereço IPV4 do balanceador de carga. - No console do Google Cloud , acesse a página Balanceamento de carga. 
- Clique em - fortressnet-balancer.
- Em Front-end, copie o endereço IPV4 na coluna IP:Porta. Os endereços IPV4 têm o formato - www.xxx.yyy.zzz.
 
- Conecte-se via SSH à instância de teste de carga. - No console do Google Cloud , acesse a página Instâncias de VM. 
- Aguarde até que a instância - europe-loadtesttenha uma marca de seleção verde na coluna Nome.
- Clique em SSH em - europe-loadtestna coluna Conectar.
 
- Inicie o Siege. Indique o endereço IPV4 do balanceador de carga. - siege -c150 http://LOAD_BALANCER_IP_ADDRESS 
gcloud
- Crie uma instância instalada com a ferramenta de teste de carga Siege. - gcloud compute instances create europe-loadtest \ --network default \ --zone europe-west1-c \ --metadata startup-script='apt -y install siege'
- Consiga o endereço IPV4 do balanceador de carga. - gcloud compute addresses list 
- Abra uma nova sessão de shell em que o comando - gcloudesteja disponível.- Na nova sessão de shell, conecte-se via SSH à instância de teste de carga. - gcloud compute ssh --zone europe-west1-c europe-loadtest 
- Inicie o Siege. Indique o endereço IPV4 do balanceador de carga. - siege -c150 http://LOAD_BALANCER_IP_ADDRESS 
 
Depois de executar o comando siege, a saída declarará
The server is now under siege...
[alert] Zip encoding disabled; siege requires zlib support to enable it ** SIEGE 4.0.2 ** Preparing 150 concurrent users for battle. The server is now under siege...
Monitorar o balanceamento de carga e o escalonamento automático
- No console do Google Cloud , acesse a página Balanceamento de carga. 
- Clique no balanceador de carga denominado - fortressnet-balancer.
- Clique na guia Monitoramento. 
- Na lista suspensa Back-end, selecione - fortressnet-backend-service.
Pode levar até dez minutos para que dados suficientes sejam exibidos. Em breve, você verá uma exibição semelhante à seguinte:

O que está acontecendo:
- O teste de carga começa a enviar uma grande quantidade de tráfego de uma só vez. Inicialmente, o balanceador de carga distribui solicitações igualmente entre os três back-ends. O número de solicitações excede rapidamente seus limites de escalonamento automático e pode até mesmo fazer com que seus servidores retornem - Backend 5xx errors, que será exibido na tela de monitoramento. O escalonador automático começa a ativar instâncias adicionais conforme necessário.
- O escalonamento automático alcança as necessidades de capacidade. Para minimizar a latência da solicitação, os balanceadores de carga do Compute Engine tentam encaminhar solicitações para o back-end mais próximo do cliente. Nesse caso, como o tráfego do teste de carga é originário da Europa, o balanceador de carga prefere encaminhar mais solicitações para o back-end da Europa. Como resultado, o escalonamento automático pode ativar mais instâncias no back-end da Europa para gerenciar uma fração maior das solicitações. 
Gerar tráfego de teste em outro lugar
Imagine que seu serviço da Web também viralizou na Ásia no horário de pico da tarde na Internet. Gere um grande número de solicitações da Ásia.
Console
- Para criar outra instância instalada com a ferramenta de teste de carga Siege, faça o seguinte: - No console do Google Cloud , acesse a página Instâncias de VM. 
- Clique em Criar instância. 
- Defina o Nome como - asia-loadtest.
- Em Região, selecione - asia-east1.
- Expanda a seção Opções avançadas. 
- Expanda a seção Gerenciamento. 
- Na seção Automação, insira o seguinte script de inicialização: - apt -y install siege 
- Clique em Criar. 
 
- Para conseguir o endereço IP do balanceador de carga, faça o seguinte: - No console do Google Cloud , acesse a página Balanceamento de carga. 
- Clique em - fortressnet-balancer.
- Em Front-end, copie o endereço IPV4 na coluna IP:Porta. Os endereços IPV4 têm o formato - www.xxx.yyy.zzz.
 
- Conecte-se via SSH à instância de teste de carga. - Aguarde até que a instância asia-loadtesttenha uma marca de seleção verde na coluna Nome.
- Clique em SSH em asia-loadtestna coluna Conectar.
 
- Aguarde até que a instância 
- Inicie o Siege. Indique o endereço IPV4 do balanceador de carga. - siege -c150 http://LOAD_BALANCER_IP_ADDRESS 
gcloud
- Na sessão de shell original, crie outra instância instalada com a ferramenta de teste de carga Siege. - gcloud compute instances create asia-loadtest \ --network default \ --zone asia-east1-c \ --metadata startup-script='apt -y install siege'
- Consiga o endereço IPV4 do balanceador de carga. - gcloud compute addresses list 
- Abra uma nova sessão de shell em que o comando - gcloudesteja disponível.- Na nova sessão de shell, conecte-se via SSH à instância de teste de carga. - gcloud compute ssh --zone asia-east1-c asia-loadtest 
- Inicie o Siege. Indique o endereço IPV4 do balanceador de carga. - siege -c150 http://LOAD_BALANCER_IP_ADDRESS 
 
Novamente, a resposta declarará The server is now under siege...
[alert] Zip encoding disabled; siege requires zlib support to enable it ** SIEGE 4.0.2 ** Preparing 150 concurrent users for battle. The server is now under siege...
Monitorar o balanceamento de carga e o escalonamento automático
Volte para a exibição de monitoramento do balanceamento de carga da última vez. Pode levar até dez minutos para que novos dados suficientes sejam exibidos. Em breve, você verá uma exibição semelhante à seguinte:

O que está acontecendo:
- Novamente, o teste de carga envia um grande número de solicitações de uma só vez. Inicialmente, o balanceador de carga distribui solicitações igualmente entre os três back-ends atuais. Como o número de solicitações excede seus limites de escalonamento automático, o autoescalador começa a ativar instâncias adicionais conforme necessário. 
- O escalonamento automático alcança as novas necessidades de capacidade. O balanceador de carga ainda prefere direcionar as solicitações para os back-ends mais próximos disponíveis. Como resultado, eventualmente o back-end da Ásia recebe solicitações principalmente da Ásia, o back-end da Europa recebe solicitações principalmente da Europa, e o back-end dos EUA recebe todo o resto.