Arquitetura de aplicações
A aplicação 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 são dimensionados automaticamente com base no tráfego recebido.
- 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 de testes para gerar tráfego de teste a partir de diferentes partes do mundo.

Configure o serviço Web
Crie os grupos de instâncias
Consola
- Crie uma rede para os grupos de instâncias. - Na Google Cloud consola, aceda à página Redes VPC. 
- Clique em Criar rede de VPC. 
- Defina o Nome como - fortressnet.
- Defina o Modo de criação de sub-redes como Automático. 
- Clique em Criar na parte inferior da página. 
 
- Crie uma regra de firewall para a rede. Esta regra permite todos os pedidos HTTP enviados para as suas instâncias. - Na Google Cloud consola, aceda à página Regras de firewall. 
- Clique em Criar regra de firewall. 
- Defina o Nome como - fortressnet-allow-http.
- Para Rede, selecione - fortressnet.
- Para Segmentações, selecione - All instances in the network.
- Defina Intervalos de IPv4 de origem como - 0.0.0.0/0.
- Para Protocolos e portas, escolha Protocolos e portas especificados e, em seguida, selecione a caixa de verificação tcp e introduza - 80.
- Clique em Criar. 
 
- Crie um modelo de instância. Inclua um script de arranque que inicie um servidor Web Apache simples em cada instância. - Na Google Cloud consola, aceda à página Modelos de instâncias. 
- Clique em Criar modelo de instância. 
- Defina o Nome como - fort-template.
- Para Configuração da máquina, selecione - e2-micro(2 vCPU, 1 GB de memória).
- Na secção Opções avançadas, expanda Rede e, em seguida, faça o seguinte: - Na secção Interfaces de rede, expanda a interface de rede para a editar.
- Para Rede, selecione fortressnet.
 
- Na secção Gestão, para Automatização, introduza o seguinte Script de arranque: - apt update && apt -y install apache2 
- Clique em Criar. 
 
- Crie vários grupos de instâncias geridos regionais com o modelo de instância. Configure o escalamento automático para cada grupo de instâncias. - Na Google Cloud consola, aceda à página Grupos de instâncias. 
- Clique em Criar grupo de instâncias para criar um novo grupo de instâncias gerido. 
- Selecione Novo grupo de instâncias gerido (sem estado). 
- Defina o Nome como - us-central1-pool.
- Para Modelo de instância, selecione - fort-template.
- Em Localização, selecione Várias zonas. 
- Para Região, selecione - us-central1. Para Zonas, mantenha os valores predefinidos selecionados.
- Para o Modo de dimensionamento automático, selecione Ativado: adicionar e remover instâncias do grupo. 
- Defina o Número mínimo de instâncias como - 1.
- Defina o número máximo de instâncias como - 5.
- Para Sinais de escalamento automático, edite a seleção predefinida (utilização da CPU) e defina o Tipo de sinal como Utilização do balanceamento de carga HTTP. 
- Defina a utilização do balanceamento de carga de HTTP alvo como - 80.
- Clique em Concluído. 
- Clique em Criar. É apresentada uma caixa de diálogo com a mensagem de que também tem de atribuir o grupo de instâncias a um serviço de back-end de um balanceador de carga HTTP. 
- Na caixa de diálogo de confirmação, clique em Confirmar. Pode configurar o balanceador de carga depois de criar todos os grupos de instâncias. 
- Repita estes passos para criar mais dois grupos de instâncias com as seguintes alterações: - Crie um grupo com Name como europe-west1-poole Region comoeurope-west1.
- Crie um grupo com Name como asia-east1-poole Region comoasia-east1.
 
- Crie um grupo com Name como 
 
- (Opcional) Verifique se as instâncias estão em bom estado e a publicar tráfego HTTP. Teste o endereço IP externo de uma ou mais instâncias. Pode ter de aguardar um minuto para que as instâncias concluam o processo de arranque. - Na Google Cloud consola, aceda à página Instâncias de VM. 
- Verifique se cada instância em execução tem uma marca de verificação verde na coluna Estado junto ao nome do grupo de instâncias. 
- Copie o IP externo de uma instância e cole-o num navegador de Internet. 
 - Deve ver a página Web "Apache2 Debian Default Page". - Se não parecer funcionar, experimente aguardar alguns momentos. 
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. Esta regra permite todos os pedidos HTTP enviados para as suas 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 arranque que inicie um servidor 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 geridos regionais com o modelo de instância. Configure o escalamento 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 em bom estado e a publicar tráfego HTTP. Teste o endereço IP externo de uma ou mais instâncias. Pode ter de aguardar um minuto para que as instâncias concluam o processo de arranque. - Liste as suas instâncias. - gcloud compute instances list 
- Verifique na coluna - STATUSse as instâncias estão- RUNNING.
- Verifique uma instância consultando o respetivo endereço IP na coluna - EXTERNAL_IP.- curl http://EXTERNAL_IP | head 
 - Deve ver algum texto HTML, incluindo a linha - <title>Apache2 Debian Default Page: It works</title>.- Se não parecer funcionar, experimente aguardar alguns momentos. 
Configure o balanceador de carga
O balanceador de carga distribui os pedidos dos clientes pelos vários back-ends.
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 fortressnet-balancer.
Configuração do back-end
- Na página Criar balanceador de carga de aplicações externo global, clique em Configuração do back-end.
- No menu pendente 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 o Nome do serviço de back-end como fortressnet-backend-service.
- Na caixa de diálogo Novo back-end, defina Grupo de instâncias como
asia-east1-pool.
- Para o Modo de equilíbrio, selecione Taxa.
- Defina o máximo de RPS como 100RPS por instância.
- Clique em Concluído.
- Clique em Adicionar back-end.
- Na caixa de diálogo Novo back-end, defina Grupo de instâncias como
europe-west1-pool.
- Para o Modo de equilíbrio, selecione Taxa.
- Defina o máximo de RPS como 100RPS por instância.
- Clique em Concluído.
- Clique em Adicionar back-end.
- Na caixa de diálogo Novo back-end, defina Grupo de instâncias como
us-central1-pool.
- Para o Modo de equilíbrio, selecione Taxa.
- Defina o máximo de RPS como 100RPS por instância.
- Clique em Concluído.
- Em Verificação de funcionamento, selecione Criar uma verificação de funcionamento.
- Defina o Nome como http-basic-check.
- Para Protocolo, selecione HTTP.
- Defina Porta como 80.
- Clique em Guardar e continuar.
- Clique em Criar.
Regras de anfitriões e caminhos
- No painel esquerdo da página Criar Application Load Balancer externo global, clique em Regras de anfitriões e caminhos.
 Para este exemplo, não precisamos de configurar regras de anfitrião nem de caminho, uma vez que todo o tráfego vai para a regra predefinida. Assim, podemos aceitar os valores predefinidos pré-preenchidos.
Configuração da interface
- No painel esquerdo da página Criar Application Load Balancer externo global, clique em Configuração do front-end.
- Defina Nome como fortressnet-http-rule.
- Para a versão do IP, selecione IPv4.
- Para Endereço IP, selecione Criar endereço IP.
- Na caixa de diálogo Reserve um novo IP estático, defina Nome como
fortressnet-ip.
- Clique em Reservar e aguarde alguns momentos.
- Clique em Concluído na parte inferior da caixa de diálogo Novo endereço IP e porta do front-end.
- Clique em Adicionar IP e porta do front-end.
- Defina Nome como fortressnet-http-ipv6-rule.
- Para a versão do IP, selecione IPv6.
- Para Endereço IP, selecione Criar endereço IP.
- Na caixa de diálogo, defina Nome como fortressnet-ipv6.
- Clique em Reservar e aguarde alguns momentos.
- Clique em Concluído na parte inferior da caixa de diálogo Novo endereço IP e porta do front-end.
Reveja e finalize
- No painel 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 na parte inferior do painel do lado esquerdo. Regressa ao ecrã de balanceamento de carga. Depois de criar o equilibrador de carga, é apresentada uma marca de verificação verde junto ao mesmo, o que indica que está em execução.
gcloud
Configuração do back-end
- Crie uma verificação de funcionamento básica. Esta ação verifica se um back-end do balanceador de carga está a responder a pedidos HTTP. - gcloud compute health-checks create http http-basic-check 
- Crie um serviço de back-end global. Este serviço de back-end vai receber 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. Esta configuração distribui o tráfego entre os back-ends com base num número máximo de pedidos por segundo (RPS) 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 anfitriões e caminhos
- Defina um mapa de URLs. Os mapas de URLs encaminham diferentes URLs para diferentes serviços de back-end. Uma vez que só temos um serviço de back-end, vamos definir esse serviço de back-end como o serviço predefinido para todos os URLs. - gcloud compute url-maps create fortressnet-balancer \ --default-service fortressnet-backend-service
- Crie uma rota de proxy HTTP. As rotas de proxy HTTP aceitam pedidos HTTP e encaminham-nos de acordo com o seu mapa de URLs. Neste caso, envia todos os pedidos para o seu serviço de back-end único. - gcloud compute target-http-proxies create fortressnet-http-proxy \ --url-map fortressnet-balancer
Configuração da interface
- Crie dois endereços IP externos estáticos globais: um para IPv4 e outro para IPv6. Estes sã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
- Procure os endereços IP externos do balanceador de carga. - gcloud compute addresses list 
- Crie regras de encaminhamento globais para os endereços IP externos. Isto encaminha pedidos HTTP IPv4 e IPv6 para o 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 equilibrador de carga está a funcionar. Pode ter de aguardar um minuto ou três.
Consola
- Na Google Cloud consola, aceda à página Equilíbrio de carga. 
- Aguarde até que - fortressnet-balancertenha uma marca de verificação verde na 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. Não precisa do número de porta final- :nn.) Se a secção Frontend estiver em falta, experimente aguardar alguns momentos e, em seguida, atualizar a página Web.
- Introduza o endereço IP num navegador de Internet. 
Deve ver a página Web "Apache2 Debian Default Page".
Se, em vez disso, receber uma página Web "Erro 404 (Não encontrado)", experimente aguardar mais alguns minutos.
gcloud
- Procure os endereços IP externos do balanceador de carga. - gcloud compute addresses list 
- Consultar o endereço IPv4. (Os endereços IPv4 têm o formato - www.xxx.yyy.zzz.)- curl http://LOAD_BALANCER_IP_ADDRESS | head 
Deve ver algum texto HTML, incluindo a linha
<title>Apache2 Debian Default Page: It works</title>.
Se vir <title>Error 404 (Not Found)!!1</title>, experimente aguardar mais alguns minutos.
Prática recomendada: crie uma firewall segura para permitir apenas tráfego interno do balanceador de carga e da verificação de funcionamento. Em seguida, elimine a firewall original que permitia qualquer pedido HTTP. Isto impede que as instâncias individuais sejam acessíveis por clientes externos.
Consola
- Crie uma nova firewall que permita apenas o tráfego do balanceador de carga e a verificação de funcionamento. - Na Google Cloud consola, aceda à página Regras de firewall. 
- Clique em Criar regra de firewall. 
- Defina o Nome como - fortressnet-allow-load-balancer.
- Para Rede, selecione - fortressnet.
- Para Segmentações, selecione - All instances in the network.
- Para Intervalos de IPs de origem, escreva - 130.211.0.0/22e prima a tecla Enter. Em seguida, escreva- 35.191.0.0/16e prima Enter novamente.
- Em Protocolos e portas, selecione tcp e introduza - 80.
- Clique em Criar. 
 
- Elimine a firewall antiga que permite tudo. - Selecione a marca de verificação junto a fortressnet-allow-http.
- Clique em Eliminar na parte superior da página.
- Na caixa de diálogo, clique em Eliminar.
 
- Selecione a marca de verificação junto a 
gcloud
- Crie uma nova firewall que permita apenas o tráfego do balanceador de carga e a verificação de funcionamento. - 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
- Elimine a firewall antiga que permite tudo. - gcloud compute firewall-rules delete fortressnet-allow-http -q 
(Opcional) Verifique se o ajuste de escala automático e o equilíbrio de carga funcionam
Gere algum tráfego de teste
Suponhamos que é de manhã na Europa e o seu serviço Web torna-se subitamente viral na Internet. Gerar um número elevado de pedidos de clientes de uma só vez a partir da Europa.
Consola
- Crie uma instância instalada com a ferramenta de teste de carga do Siege. - Na Google Cloud consola, aceda à página Criar uma instância. 
- Defina o Nome como - europe-loadtest.
- Para Região, selecione - europe-west1.
- Para definições avançadas, expanda a secção Opções avançadas e faça o seguinte: - Expanda a secção Gestão.
- No campo Automatização, introduza o seguinte script de
início:
apt -y install siege 
 
- Para criar a VM, clique em Criar. 
 
- Obtenha o endereço IPv4 do equilibrador de carga. - Na Google Cloud consola, aceda à página Equilíbrio 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.)
 
- SSH para a instância de teste de carga. - Na Google Cloud consola, aceda à página Instâncias de VM. 
- Aguarde até que a instância - europe-loadtesttenha uma marca de verificação verde na coluna Nome.
- Clique em SSH em - europe-loadtestna coluna Associar.
 
- Iniciar cerco. Segmentar 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 do Siege. - gcloud compute instances create europe-loadtest \ --network default \ --zone europe-west1-c \ --metadata startup-script='apt -y install siege'
- Obtenha o endereço IPv4 do equilibrador de carga. - gcloud compute addresses list 
- Abra uma nova sessão de shell onde o comando - gcloudestá disponível.- Na nova sessão de shell, use SSH para aceder à instância de teste de carga. - gcloud compute ssh --zone europe-west1-c europe-loadtest 
- Iniciar cerco. Segmentar o endereço IPv4 do balanceador de carga. - siege -c150 http://LOAD_BALANCER_IP_ADDRESS 
 
Depois de executar o comando siege, deve ver um resultado a 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...
Monitorize o balanceamento de carga e o dimensionamento automático
- Na Google Cloud consola, aceda à página Equilíbrio de carga. 
- Clique no balanceador de carga com o nome - fortressnet-balancer.
- Clique no separador Monitorização. 
- No menu pendente Backend, selecione - fortressnet-backend-service.
A apresentação de dados suficientes pode demorar até dez minutos. Em breve, deve ver uma apresentação semelhante à seguinte:

O que está a acontecer aqui:
- O teste de carga começa a enviar uma grande quantidade de tráfego de uma só vez. Inicialmente, o balanceador de carga distribui os pedidos igualmente entre os três back-ends. O número de pedidos excede rapidamente os limites da escala automática e pode até fazer com que os seus servidores devolvam - Backend 5xx errors, que é apresentado no ecrã de monitorização. O escalador automático começa a ativar instâncias adicionais conforme necessário.
- A escalabilidade automática acompanha as necessidades de capacidade. Para minimizar a latência dos pedidos, os balanceadores de carga do Compute Engine tentam encaminhar os pedidos para o back-end mais próximo do cliente. Neste caso, uma vez que o tráfego do teste de carga tem origem na Europa, o balanceador de carga prefere encaminhar mais pedidos para o back-end da Europa. Como resultado, o dimensionamento automático pode iniciar mais instâncias no back-end da Europa para processar uma fração maior de pedidos. 
Gere tráfego de teste noutro local
Suponha que o seu serviço Web também faz sucesso na Ásia com o público da Internet da tarde. Gerar um número elevado de pedidos a partir da Ásia.
Consola
- Para criar outra instância instalada com a ferramenta de teste de carga Siege, faça o seguinte: - Na Google Cloud consola, aceda à página Instâncias de VM. 
- Clique em Criar instância. 
- Defina o Nome como - asia-loadtest.
- Para Região, selecione - asia-east1.
- Expanda a secção Opções avançadas. 
- Expanda a secção Gestão. 
- Na secção Automatização, introduza o seguinte script de arranque: - apt -y install siege 
- Clique em Criar. 
 
- Para obter o endereço IP do equilibrador de carga, faça o seguinte: - Na Google Cloud consola, aceda à página Equilíbrio de carga. 
- Clique em - fortressnet-balancer.
- Em Frontend, copie o endereço IPv4 na coluna IP:Port. (Os endereços IPv4 têm o formato - www.xxx.yyy.zzz.)
 
- SSH para a instância de teste de carga. - Aguarde até que a instância asia-loadtesttenha uma marca de verificação verde na coluna Nome.
- Clique em SSH em asia-loadtestna coluna Associar.
 
- Aguarde até que a instância 
- Iniciar cerco. Segmentar 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 do Siege. - gcloud compute instances create asia-loadtest \ --network default \ --zone asia-east1-c \ --metadata startup-script='apt -y install siege'
- Obtenha o endereço IPv4 do equilibrador de carga. - gcloud compute addresses list 
- Abra uma nova sessão de shell onde o comando - gcloudestá disponível.- Na nova sessão de shell, use SSH para aceder à instância de teste de carga. - gcloud compute ssh --zone asia-east1-c asia-loadtest 
- Iniciar cerco. Segmentar o endereço IPv4 do balanceador de carga. - siege -c150 http://LOAD_BALANCER_IP_ADDRESS 
 
Mais uma vez, deve ver um resultado a 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...
Monitorize o balanceamento de carga e o dimensionamento automático
Voltar ao ecrã de monitorização do balanceamento de carga da última vez. Pode demorar até dez minutos a apresentar dados novos suficientes. Em breve, deve ver um ecrã semelhante ao seguinte:

O que está a acontecer aqui:
- Mais uma vez, o teste de carga envia outro grande número de pedidos de uma só vez. Inicialmente, o balanceador de carga distribui os pedidos igualmente entre os três back-ends existentes. À medida que o número de pedidos excede os limites de escalabilidade automática, o escalador automático começa a ativar instâncias adicionais conforme necessário. 
- A criação de uma escala automática acompanha as novas necessidades de capacidade. O balanceador de carga continua a preferir encaminhar pedidos para os back-ends disponíveis mais próximos. Como resultado, o back-end da Ásia acaba por receber pedidos principalmente da Ásia, o back-end da Europa recebe pedidos principalmente da Europa e o back-end dos EUA recebe tudo o resto.