Tempo de leitura: 8 minutos
Esse artigo faz parte de uma série de artigos sobre o Amazon EC2. Para ver a série completa, clique aqui!
Em meu último artigo falei de forma bem detalhada sobre como podemos escalar nossas aplicações por meio do Amazon EC2 Auto Scaling.
Escalar horizontalmente uma aplicação, em nosso cenário, significa que disponibilizaremos um maior poder de processamento por meio da execução de mais instância EC2.
Mas, como meus clientes saberão para que instância (servidor) a requisição deve ser enviada dado que não temos mais um ponto único da aplicação?
Com o Elastic Load Balancing é possível distribuir, de forma automática, o tráfego de requisições para as diferentes instâncias EC2 de nossa aplicação.
Nesse artigo você descobrirá:
- O que é o Elastic Load Balancing;
- Quais são os diferentes tipos de ELBs e como selecionar o tipo correto para sua aplicação;
- Quais são os benefícios oferecidos por esse serviço;
O que é o Elastic Load Balancing
O Elastic Load Balancing é o serviço que distribui, de forma automática, o tráfego de entrada para diferentes tipos de recursos.
O escopo dessa série de artigos será estudar a parceria entre o Elastic Load Balancing e o EC2 Auto Scaling de modo a distribuir o tráfego de requisições para um grupo de instâncias EC2, porém, ele não se limita a isso.
Isso significa dizer que o Elastic Load Balancing pode distribuir tráfego para os mais variados tipos de serviços na AWS e não apenas para instâncias EC2.
O Elastic Load Balancer representa um único ponto de contato para o tráfego de nossa aplicação. É ele quem direciona esse tráfego para nosso grupo de “Auto Scaling”, que é o responsável pelo gerenciamento das instâncias EC2 de nossa aplicação.
Com isso, as requisições são distribuídas entre as diferentes instâncias EC2 disponíveis, fazendo com que nenhuma delas tenha que lidar com um volume desproporcional de requisições.
Com o Elastic Load Balancer e o Auto Scaling Group, podemos “dividir o fardo” entre os recursos disponíveis garantindo aplicações com alta performance e alta disponibilidade.
Vamos ver um exemplo de como isso funciona na prática:
Como sabemos, nossas aplicações podem passar por períodos de baixa demanda.
Nesse cenário, não precisamos ter um alto poder de processamento disponível, apenas o número mínimo desejado de instâncias EC2 para o funcionamento da nossa aplicação.
Em nosso exemplo, em períodos de baixa demanda, precisaremos apenas de duas instâncias EC2 para fazer o trabalho.
Assim, o Auto Scaling Group provisiona esses recursos conforme imagem abaixo:
As requisições chegarão ao Elastic Load Balancer e ele distribuirá essas requisições entre as duas instâncias EC2 disponíveis.
Porém, em períodos de alta demanda, essas instâncias não são suficientes.
O Auto Scaling Group, então, identifica a necessidade de mais duas instâncias de acordo com as políticas configuradas, e as inicializa.
Assim que as instâncias estiverem disponíveis (saudáveis), o Elastic Load Balancing, de forma automática, passa a distribuir o tráfego também para as novas instâncias retirando a sobrecarga anterior das duas primeiras.
Vejam a imagem que representa esse cenário:
Um ponto importante a se observar é que apesar de estarmos tratando o Elastic Load Balancing e o EC2 Auto Scaling como serviços independentes, em nosso contexto, eles não tem propósito de forma isolada. É mais uma questão didática.
Outra questão importantíssima a respeito da distribuição de tráfego feita pelo Elastic Load Balancing é que ele, obviamente, só distribuirá tráfego para instâncias saudáveis.
E como ele sabe quando não deve enviar tráfego para uma instância que está falhando?
Quando configuramos um Elastic Load Balancer definimos o que chamamos de endereço de “health check”, que é um endereço que indica se a aplicação está saudável ou não.
De tempos em tempos, o ELB consulta o “health check” dos serviços envolvidos para confirmar se elas podem receber requisições.
Caso essas consultas indiquem que a aplicação não está saudável, ele não mais direcionará tráfego para a instância problemática até que ela consiga se recuperar.
Observem o poder da parceria entre esses dois serviços para disponibilizar aplicações altamente disponíveis e performáticas.
Quais são os diferentes tipos de ELBs e como selecionar o tipo correto para sua aplicação
O Elastic Load Balancing oferece quatro tipos de recursos, quatro tipos de Load Balancers, são eles: o Application Load Balancer, o Network Load Balancer, o Gateway Load Balancer e o Classic Load Balancer.
Como saber que tipo de Load Balancer utilizar?
Isso vai depender da natureza do problema que você deseja resolver.
Por exemplo, se você precisa de um gerenciamento de aplicativos flexível, recomenda-se a utilização do Application Load Balancer.
Se o aplicativo precisar de performance extrema e de um IP estático, recomenda-se usar o Network Load Balancer.
Mas, se nossa aplicação foi criada dentro da rede do EC2-Classic, recomenda-se usar o Classic Load Balancer.
Nesse link você encontrará uma tabela comparativa entre os diferentes tipos de load balancers e suas características.
A ideia é que, no momento em que surgirem as necessidades específicas para o direcionamento de tráfego, esse documento sirva de base para a escolha do load balancer que melhor atenda as necessidades do cenário estudado.
Quais são os benefícios oferecidos por esse serviço?
Segurança
Quando utilizamos uma rede privada na AWS (VPC), é possível criar e gerenciar grupos de segurança e associá-los Elastic Load Balancing.
Estudaremos sobre grupos de segurança no próximo artigo dessa série.
Agora, porém, basta saber que podemos disponibilizar, por meio desses grupos, opções adicionais de rede e segurança para o Application Load Balancer e Classic Load Balancer.
Por exemplo, é possível configurar qualquer um diferentes tipos de balanceadores de carga para que fiquem voltados para a internet ou podemos criar balanceadores de carga sem endereços IP públicos para atuar como um balanceador de carga interno.
Alta disponibilidade e verificações de integridade
Um balanceador de carga é um serviço altamente disponível. Com ele, podemos distribuir tráfego entre instâncias EC2 em uma única zona de disponibilidade ou em várias.
Ele escala automaticamente sua capacidade de receber e distribuir requisições em resposta a uma variação brusca no volume de requisições.
Para garantir essa alta disponibilidade, o Elastic Load Balancer executa verificações de integridade nos destinos de acordo com as configurações feitas.
Alta taxa de transferência
O Elastic Load Balancer foi criado para assimilar o crescimento de tráfego e pode fazer balanceamento de carga de milhões de solicitações por segundo. Além disso, também absorve padrões de tráfego súbitos e voláteis.
Sticky sessions
As sticky sessions são um mecanismo usado para rotear solicitações do mesmo cliente para o mesmo destino. Os Elastic Load Balancers são compatíveis com sticky sessions. Esse recurso de sticky sessions, ou stickiness, é definido por grupo de destinos.
Monitoramento operacional e registro em log
O CloudWatch é um grande parceiro para o monitoramento operacional de um Application Load Balancer e Classic Load Balancer.
Com ele, podemos colher métricas como o número de solicitações, número de erros, tipos de erro, latência de solicitações e muito mais.
Proteção contra exclusão
Você pode habilitar o recurso de proteção contra exclusão em um Elastic Load Balancer para impedir que ele seja excluído acidentalmente.
Então é isso pessoal!
Vejam que a parte de referências está cheia de ricos recursos para o estudo. Não deixem de dar uma olhada.
Abraços!

Referências
Conceitos básicos do Elastic Load Balancing | Amazon Web Services
Distribuição de tráfego de rede | Elastic Load Balancing | Amazon Web Services
Distribuição de tráfego de rede – Preço do Elastic Load Balancing – Amazon Web Services
Distribuição de tráfego de rede | Preço do Elastic Load Balancing | Amazon Web Services
What is a Network Load Balancer?
What is a Gateway Load Balancer?
What is a Classic Load Balancer?
Elastic Load Balancing and Amazon EC2 Auto Scaling
Getting Started with Elastic Load Balancing
AWS re:Invent 2018: [REPEAT 1] Elastic Load Balancing: Deep Dive and Best Practices (NET404-R1)
https://docs.aws.amazon.com/elasticloadbalancing/latest/application/introduction.html
Link permanente