Tempo de leitura: 12 minutos
Faala galera!
Finalmente chegamos ao último artigo da série sobre os serviços do EC2!
Hoje iremos meter a mão na massa com o Elastic Load Balancer.
Como sempre, temos um artigo introdutório falando sobre os conceitos teóricos que iremos colocar em prática. Aqui você encontra o artigo sobre o Elastic Load Balancer.
Temos alguns pré-requisitos importantes:
- Ter uma conta ativa na AWS. Caso não tenha, é bem fácil configurar uma. Siga os passos aqui;
- Ter feito a leitura do artigo introdutório sobre o Elastic Load Balancer.
- Familiaridade com o console do EC2. Os artigo abaixo podem te ajudar:
Nesse laboratório iremos trabalhar os seguintes tópicos:
- Revisitando conceitos importantes sobre o Elastic Load Balancer
- Executando múltiplas instâncias EC2
- Acessando as instâncias individualmente
- Configurando o Elastic Load Balancer
- Vendo a mágica funcionar
Esse artigo faz parte de uma série de artigos sobre o Amazon EC2. Para ver o índice completo, clique aqui!
Revisitando conceitos importantes sobre o Elastic Load Balancer
O que é Elastic Load Balancer?
O Elastic Load Balancer é um serviço que distribui o tráfego de entrada entre diferentes instâncias EC2 permitindo que aumentemos o grau de tolerância à falhas de nossas aplicações.
Com o Elastic Load Balancer além de distribuir o tráfego entre diferentes instâncias EC2 podemos distribuir o tráfego entre diferentes zonas de disponibilidade.
O ELB garante que apenas instâncias saudáveis recebam o tráfego de nossos usuários, redirecionando as requisições assim que identifica que uma instância está falhando.
Além disso, ele possui um mecanismo próprio para lidar com o aumento repentino da demanda, escalando sua capacidade de forma automática.
Executando múltiplas instâncias EC2
Nosso primeiro passo será configurar duas instâncias EC2 com o Apache Web Server e uma aplicação que nos indique o ID da instância EC2 que está sendo executado.
Para isso, usaremos uma aplicação de exemplo disponibilizada pela própria AWS em seus laboratórios gratuitos e que estão disponíveis no S3.
Seguiremos basicamente os mesmos passos que propus em meu artigo mão na massa para configurar sua primeira instância EC2.
Então, não entrarei em muitos detalhes conceituais sobre o EC2, mas, se você ainda não viu esse artigo e deseja aprofundar seu conhecimento, encontrará informações mais detalhadas aqui.
Dito isso, vamos em frente:
1 Vá para o console do EC2 e, no menu de navegação à esquerda, clique em Instâncias:
2 O segundo passo é clicar no botão laranja, Executar instâncias, no canto superior direito. Isso vai te levar para o ambiente de configuração da imagem (AMI) que iremos utilizar para executar nossas instâncias EC2.
3 Escolha uma das opções para Amazon Linux 2 AMI (HVM) e clique em Selecionar.
4 Selecione a opção t2.micro na lista disponível e clique no botão Próximo: Configure os detalhes da instância:
5 Depois disso, faça as configurações abaixo:
- Número de instâncias: 2
- Rede: Default VPC
6 Na mesma página de configuração, desça até a seção Detalhes avançados;
7 No campo Dados do usuário, digite os comandos abaixo:
#!/bin/sh
yum -y install httpd php
chkconfig httpd on
systemctl start httpd.service
cd /var/www/html
wget https://s3-us-west-2.amazonaws.com/us-west-2-aws-training/awsu-spl/spl-03/scripts/examplefiles-elb.zip
unzip examplefiles-elb.zip
No script acima, definimos alguns comandos que devem ser executados na inicialização da instância. Com eles, configuramos o servidor de aplicação e o php, que serão essenciais para nossa aplicação web.
Abaixo explico o que cada um dos comandos faz:
- yum -y install httpd php: instalação do servidor de aplicação da apache e o php.
- chkconfig httpd on: faz algumas checagens prévias antes de inicializar o servidor de aplicação.
- systemctl start httpd.service: inicializa o servidor de aplicação.
- cd /var/www/html: acessa o diretório dentro do servidor onde as aplicações web ficam armazenadas.
- wget https://s3-us-west-2.amazonaws.com/us-west-2-aws-training/awsu-spl/spl-03/scripts/examplefiles-elb.zip: fazemos uma requisição para um bucket disponibilizado pela AWS para baixar a aplicação web que iremos utilizar em nosso exercício.
- unzip examplefiles-elb.zip: descompactamos a aplicação fazendo com que ela fique disponível para ser acessada.
Com essa aplicação web conseguiremos visualizar o acesso a diferentes instâncias via Elastic Load Balancer. Então, ela é um ponto chave de nosso exercício.
Vá para o próximo passo clicando no botão Próximo: Adicionar armazenamento:
8 Na tela de configuração de armazenamento, utilizamos a configuração padrão e seguiremos para a próxima tela clicando no botão Próximo: Adicionar tags.
9 Clique no botão Adicionar tag e preencha com os valores abaixo:
- Chave: Nome
- Valor: InstanciasLoadBalancer
Clique em Próximo: configure o security group.
10 Nesse passo, iremos configurar um grupo de segurança com os parâmetros abaixo:
- Nome do grupo de segurança: SG-InstanciasLoadBalancer
- Descrição: SG-InstanciasLoadBalancer
Remova a regra de SSH que já vem preenchida clicando no X à direita dela:
11 Adicione uma nova regra clicando no botão Adicionar regra e preencha com os seguintes parâmetros:
- Tipo: HTTP
- Origem: Qualquer lugar
Não se preocupe com esse aviso que aparece. Siga em frente e clique no botão azul Verificar e ativar.
IMPORTANTE: Lembre-se de que essa configuração abre sua aplicação para o mundo. Em termos de exercícios funciona bem, mas isso nunca deve ser levado para ambiente produtivo.
12 Depois de revisar as configurações clique no botão Executar.
13 Na próxima tela, iremos escolher as seguinte opções:
- Continuar sem par de chaves
- “Reconheço que, sem um par de chaves, …”
Clique no botão Executar instâncias.
14 Pronto! Instâncias configuradas. Agora, clique no botão Exibir instâncias:
Com isso, você será levado para a área que vai te permitir visualizar as instâncias em execução:
Acessando as instâncias individualmente
Antes de criarmos o Elastic Load Balancer, iremos acessar as aplicações que estão sendo executadas em cada instância para confirmar se está tudo funcionando direitinho.
Para isso, iremos acessar os endereços públicos de cada uma delas e acessar esses endereços via browser.
15 Estando no console do EC2, clique na primeira instância da lista:
16 Estando na tela de resumo, copie o DNS IPv4 público clicando no ícone indicado pela seta abaixo:
17 Vá para seu browser e acesse a aplicação com o endereço copiado. Uma tela indicando o ID da instância e a zona de disponibilidade será exibida:
Essa aplicação foi instalada junto com a instância nos passos anteriores.
18 Repita esse processo para a segunda instância. Depois disso, podemos comparar os resultados e ver que estamos executando a aplicação em instâncias diferentes:

Configurando o Elastic Load Balancer
Agora que temos duas aplicações sendo executadas, podemos configurar Elastic Load Balancer.
Ao invés de acessarmos as aplicações diretamente, como na sessão anterior, colocaremos o ELB na frente delas para que ele faça a distribuição de tráfego automaticamente.
Assim, o Load Balancer vai distribuir as requisições e teremos um ponto único de acesso para nossa aplicação.
19 Vamos voltar para o console do EC2 e, no menu de navegação à esquerda, clique em Balanceamento de carga -> Load balancers. Na próxima tela, clique em Criar Load Balancer:
Na tela seguinte, você verá as opções disponíveis para o Elastic Load Balancer. Escolha a opção Application Load Balancer:
Cada opção atende um cenário específico. Para entender um pouco melhor sobre as características de cada uma delas, você pode acessar esse artigo aqui.
OBSERVAÇÃO: Quando escrevi esse artigo, percebi que as telas de configuração do ELB ainda não tinham tradução para o português, então usarei os termos em inglês:
20 Na próxima tela, vamos fazer as configurações básicas (Basic configuration) do nosso ELB da seguinte forma:
- Load balancer name: Blog-Victor-ELB
- Scheme: Internet-facing
- IP address type: IPv4
O Scheme indica que nosso Load Balancer será voltado para internet, ou seja, que poderemos ter acesso externo via internet a ele.
A opção IP address type indica o tipo de IP que será utilizado pela infraestrutura de rede da AWS. No escopo desse artigo, isso não é relevante.
21 Na próxima sessão, Network mapping, selecionaremos nossa VPC padrão (Default VPC) e selecionaremos todas as zonas de disponibilidades disponíveis.
Para cada zona de disponibilidade, aparecerá uma subseção para escolher a subnet. Como estamos usando a VPC padrão, não precisaremos mudar nada porque cada zona de disponibilidade tem apenas uma Subnet disponível.
Mas não se preocupem muito com essas questões de VPC e subnets agora. Sigamos em frente para a próxima seção da página, Security groups;
22 Delete o grupo de segurança que já vem preenchido por padrão (default), clicando no X:
23 Depois, selecione, no combo dessa seção, o grupo de segurança que criamos anteriormente para nossas instâncias EC2, o SG-InstanciasLoadBalancer:
24 Desça mais um pouco para a seção Listeners and routing e clique no link Create target group:
Uma nova aba será aberta para configurarmos o que chamamos de target group.
O Target Group representa um alvo para nosso Elastic Load Balancer.
O ELB irá redirecionar todas as requisições que chegarem a ele para os locais configurados no target group.
No nosso caso, precisaremos configurar nosso Target group para apontar para as instâncias EC2 que configuramos anteriormente.
25 Por padrão, a seção Basic configuration já vem preenchida para trabalhar com instâncias EC2, então a única coisa que iremos adicionar é o nome do Target group:
- Target group name: Blog-Victor-Target-Group
Garanta que suas configurações estejam conforme imagem abaixo:
26 Desça a tela até a seção Health checks e expanda a sub-seção Advanced health check settings. Configure o campo Healthy threshold com o número 3 e clique em Next:
O Healthy threshold indica o número de requisições consecutivas que devem ser respondidas com sucesso pelas instâncias EC2 para que elas sejam consideradas como instâncias saudáveis.
E por quê essas verificações são importantes?
Porque o Load Balancer só vai redirecionar requisições para instâncias saudáveis e essa é a regra usada por ele para verificar se as instâncias estão respondendo com sucesso.
O campo Unhealthy threshold indica o número de requisições consecutivas respondidas com erro pelas instâncias EC2 para que ela seja considerada como uma instância não saudável. Se a instância atingir esse limite, o ELB não mais redirecionará tráfego para ela.
Assim, de tempos em tempos, o ELB irá fazer requisições para nossas instâncias EC2 com o objetivo de verificar se elas estão saudáveis e, se não estiverem, ele irá remover a instância do serviço até que ela se recupere.
O campo Health check path indica o caminho que o ELB deverá acessar para fazer essas verificações. Basicamente o que o ELB faz é uma requisição semelhante àquela que fizemos anteriormente via browser.
Para as outras configurações dessa seção, vamos usar os valores padrão.
27 Na próxima tela, selecione as instâncias EC2 e clique no botão Include as pending below:
Com isso, as instâncias serão adicionadas ao target group e poderão ser monitoradas pelo ELB. Clique em Create target group:
28 Com o target group criado, precisamos voltar para a tela de configuração do Elastic Load Balancer que estávamos anteriormente e selecionar o Target group que acabamos de criar.
IMPORTANTE: clique no botão de atualização indicado pela seta para atualizar a lista de target groups disponíveis:
29 Desça a tela até o fim e clique no botão Create load balancer:
30 Na próxima tela, clique no botão View load balancer:
31 Ao fazer isso, você será direcionado a um console com informações do seu Load Balancer.
No canto superior direito, tem um botão de atualização que você pode clicar para verificar a mudança do Estado de seu ELB de Provisionando para Ativo:
Quando o ELB estiver com o Estado Ativo, ele estará pronto para ser utilizado:
Vendo a mágica funcionar
32 Com o Load Balancer no Estado Ativo, copie o Nome do DNS, que é o endereço público do ELB:
33 Abra seu browser de preferência e acesse a aplicação com o endereço copiado anteriormente e veja como o ID da instância que está sendo acessado muda à medida que atualizamos o navegador:
Pronto! O Elastic Load Balancer está redirecionando o fluxo de requisições para as diferentes instâncias EC2 que configuramos e cumprindo seu papel principal.
Parabéns! Você acaba de aprofundar seu conhecimento em Elastic Load Balancer.
Se tiverem alguma dúvida ou feedback, podem me enviar uma mensagem.
Abraços!