Introdução ao balanceamento de carga
O balanceamento de carga é uma parte essencial de um projeto de sistema porque garante que as solicitações e o tráfego sejam distribuídas de maneira justa entre vários servidores. Ao distribuir a carga de trabalho entre vários servidores, podemos reduzir a probabilidade de qualquer um deles ficar sobrecarregado e consequentemente apresentar falhas, como o travar.
Este é um artigo que faz parte dos materiais que publico na Software Architect Academy, a maior comunidade de Arquitetos de Software do Brasil! 😀. Lá temos artigos organizados, categorizados por áreas de conhecimento, tutoriais, masterclasses e muito mais.
Um balanceador de carga é um dispositivo que fica entre um cliente e um servidor, recebendo o tráfego da rede e do aplicativo e dividindo-o em vários servidores de back-end com base em um conjunto de regras predefinidas. Os balanceadores de carga melhoram a disponibilidade e a capacidade de resposta do aplicativo distribuindo a carga de trabalho entre vários servidores para evitar sobrecarregar qualquer servidor existente e torná-lo o único ponto de falha do sistema.
Para utilizar escalabilidade e redundância, podemos tentar equilibrar a carga em cada camada do sistema. Podemos adicionar Load Balancers em três lugares:
- Entre o usuário e o servidor web
- Entre servidores web e uma camada de plataforma interna, como servidores de aplicativos ou servidores de cache
- Entre os servidores de aplicativos ou de cache e os servidores de banco de dados
Definições de termos essenciais e conceitos
Load Balancer: Um dispositivo ou software que distribui o tráfego de rede em vários servidores com base em regras ou algoritmos predefinidos.
Servidores de back-end: Os servidores que recebem e processam solicitações encaminhadas pelo balanceador de carga.
Algoritmo de Balanceamento de Carga: O método usado pelo balanceador de carga para determinar como distribuir o tráfego de entrada entre os servidores de back-end.
Verificações de integridade: Testes periódicos executados pelo balanceador de carga para determinar a disponibilidade e o desempenho dos servidores de back-end. Quando um servidor fica “doente”, ele é temporariamente retirado de serviço até ser recuperado.
Persistência de sessão: Uma técnica usada para garantir que as solicitações subsequentes do mesmo cliente sejam direcionadas para o mesmo servidor de back-end, mantendo o estado da sessão e fornecendo uma experiência de usuário consistente.
Término de SSL/TLS: o processo de descriptografia do tráfego criptografado por SSL/TLS no nível do balanceador de carga, descarregando a carga de descriptografia dos servidores de back-end e permitindo o gerenciamento centralizado de SSL/TLS.
Como o balanceador de carga funciona?
Os balanceadores de carga funcionam distribuindo o tráfego de rede de entrada em vários servidores ou recursos para garantir a utilização eficiente dos recursos de computação e evitar sobrecarga. Aqui estão os traços gerais da abordagem de um balanceador de carga para gerenciamento de tráfego:
- O balanceador de carga recebe uma solicitação de um cliente ou usuário.
- O balanceador de carga avalia a solicitação recebida e determina qual servidor ou recurso deve lidar com a solicitação. Isso é feito com base em um algoritmo de balanceamento de carga predefinido que leva em consideração fatores como capacidade do servidor, tempo de resposta do servidor, número de conexões ativas e localização geográfica.
- O balanceador de carga encaminha o tráfego de entrada para o servidor ou recurso selecionado.
- O servidor ou recurso processa a solicitação e envia uma resposta de volta ao balanceador de carga.
- O balanceador de carga recebe a resposta do servidor ou recurso e a envia para o cliente ou usuário que fez a solicitação.