Skip to main content

Command Palette

Search for a command to run...

Load Balancer

Updated
5 min read
Load Balancer

Balanceador de carga para servidores web

Aqui nesse perfil já falamos sobre diversos assuntos, como, por exemplo:

Mas hoje vamos falar sobre um assunto que é muito importante para a disponibilidade de aplicações web, o balanceamento de carga.

O que é balanceamento de carga?

Se você está começando a trabalhar com desenvolvimento web, provavelmente nunca ouviu falar sobre balanceamento de carga, e tenha calma, pois é um assunto bem simples.

Diferente do que aprendemos na faculdade ou em cursos, onde aprendemos a desenvolver aplicações web que rodam em um único servidor, na realidade, aplicações web rodam em mais de um servidor, e isso é necessário para que a aplicação tenha uma boa disponibilidade.

Por que utilizar mais de um servidor?

No início do desenvolvimento temos um servidor só, e isso é o suficiente para que a aplicação funcione corretamente, mas quando a aplicação começa a crescer, e o número de acessos aumenta, um único servidor não é mais o suficiente para atender a demanda, e é aí que entra um termo muito importante, escalabilidade.

A escalabilidade é a capacidade de uma aplicação de aumentar a sua capacidade de atender a demanda.

Existem dois tipos de escalabilidade, a vertical e a horizontal.

Escalabilidade vertical

A escalabilidade vertical é quando aumentamos a capacidade de um servidor, adicionando mais memória, processamento, etc.

Chamamos isso de escalabilidade vertical, pois estamos aumentando a capacidade de um único servidor.

Escalabilidade horizontal

A escalabilidade horizontal é quando aumentamos a capacidade de uma aplicação, adicionando mais servidores.

Chamamos isso de escalabilidade horizontal, seria algo como colocar mais servidores ao lado do servidor que já temos.

Como funciona o balanceamento de carga?

Quando temos mais de um servidor, precisamos de um mecanismo para distribuir as requisições entre os servidores, e esse mecanismo é o balanceador de carga.

O balanceador de carga é um servidor que fica na frente dos servidores que rodam a aplicação, e ele é responsável receber as requisições e distribuir.

Um detalhe importante é que o balanceador de carga não é um servidor comum, ele é um servidor especializado, que tem como única função, distribuir as requisições entre os servidores que rodam a aplicação.

Como funciona o balanceamento de carga?

Geralmente rodando na porta 80, o balanceador fica a frente dos servidores, nele é configurado o endereço de onde rodam a aplicação, e ele é responsável por distribuir as requisições entre os servidores conforme a sua configuração de balanceamento.

Existem vários tipos de balanceamento, mas os mais comuns são:

  • Round Robin
  • Least Connections
  • Least Response Time
  • Hash
  • IP Hash

Round Robin

O balanceamento Round Robin é o mais simples, ele distribui as requisições entre os servidores de forma circular, ou seja, a primeira requisição vai para o servidor 1, a segunda para o servidor 2, a terceira para o servidor 3, e assim por diante.

Least Connections

Distribui as requisições entre os servidores conforme o número de conexões ativas em cada servidor, ou seja, se o servidor 1 tem 10 conexões ativas, e o servidor 2 tem 5 conexões ativas, a próxima requisição vai para o servidor 2, pois ele tem menos conexões ativas.

Least Response Time

Distribui as requisições entre os servidores segundo o tempo de resposta de cada servidor, ou seja, se o servidor 1 tem um tempo de resposta de 100ms, e o servidor 2 tem um tempo de resposta de 50ms, a próxima requisição vai para o servidor 2, pois ele tem um tempo de resposta menor.

Hash

Distribui as requisições entre os servidores de acordo com um hash gerado a partir de um parâmetro da requisição, por exemplo, se o parâmetro for TOKEN, e o valor do TOKEN for 123, o hash gerado será sempre o mesmo, e a requisição sempre vai para o mesmo servidor.

IP Hash

Distribui as requisições entre os servidores conforme o IP do cliente, ou seja, todas as requisições que vierem do mesmo IP, vão para o mesmo servidor.

Qual balanceamento utilizar?

Não existe um balanceamento melhor que o outro, cada um tem a sua aplicação, e o ideal é que você teste cada um deles, e veja qual se adapta melhor a sua aplicação.

Quando balancear a carga?

O balanceamento de carga é utilizado quando temos mais de um servidor, e precisamos distribuir as requisições entre eles, mas quando temos apenas um servidor, não temos a necessidade de utilizar um balanceador de carga, pois ele só iria adicionar mais um ponto de falha na aplicação.

Lembre-se que nos servidores devem rodar a mesma aplicação, e devem estar sincronizados, pois se um servidor estiver com uma versão diferente da aplicação, ele pode apresentar comportamentos inesperados.

Geralmente usa-se o balanceamento de carga quando temos mais de um droplet, e cada droplet roda a mesma aplicação, e temos um banco de dados centralizado, acessado por todos.

Serviços de balanceamento de carga

Existem vários serviços de balanceamento de carga, mas os mais conhecidos são:

Todos eles são ótimos, e cada um tem a sua aplicação, mas o mais utilizado é o Nginx, pois ele é muito leve, e tem um ótimo desempenho.

Conclusão

O balanceamento de carga é um assunto muito importante, e é essencial para que a aplicação tenha uma boa disponibilidade, e não fique fora do ar.

Caso tenha alguma dúvida, ou queira contribuir com o artigo, deixe um comentário abaixo.

9 views

More from this blog

L

Luiz Schons

28 posts