O que é balanceamento de carga?

Introdução

O balanceamento de carga é um componente-chave de infraestruturas altamente disponíveis comumente usado para melhorar o desempenho e a confiabilidade de sites, aplicativos, bancos de dados e outros serviços, distribuindo a carga de trabalho entre vários servidores.

A web infrastructure with no load balancing might look something like the following:

Neste exemplo, o usuário se conecta diretamente ao servidor web, em seudominio.com. Se este único servidor web falhar, o usuário não poderá mais acessar o site. Além disso, se muitos usuários tentarem acessar o servidor simultaneamente e ele não conseguir lidar com a carga, eles podem experimentar tempos de carregamento lentos ou não conseguir se conectar de forma alguma.

Este único ponto de falha pode ser mitigado ao introduzir um balanceador de carga e pelo menos um servidor web adicional nos bastidores. Tipicamente, todos os servidores dos bastidores fornecerão conteúdo idêntico para que os usuários recebam conteúdo consistente, independentemente de qual servidor responda.

No exemplo ilustrado acima, o usuário acessa o balanceador de carga, que encaminha a solicitação do usuário para um servidor de bastidor, que então responde diretamente à solicitação do usuário. Nesse cenário, o único ponto de falha é agora o próprio balanceador de carga. Isso pode ser mitigado ao introduzir um segundo balanceador de carga, mas antes de discutirmos isso, vamos explorar como os balanceadores de carga funcionam.

Que tipo de tráfego os balanceadores de carga podem lidar?

Os administradores de balanceadores de carga criam regras de encaminhamento para quatro tipos principais de tráfego:

  • HTTP — O balanceamento HTTP padrão direciona solicitações com base em mecanismos HTTP padrão. O Balanceador de Carga define os cabeçalhos X-Forwarded-For, X-Forwarded-Proto e X-Forwarded-Port para fornecer informações aos backends sobre a solicitação original.
  • HTTPS — O balanceamento HTTPS funciona da mesma forma que o balanceamento HTTP, com a adição de criptografia. A criptografia é tratada de duas maneiras: ou com passagem SSL, que mantém a criptografia até o backend, ou com terminação SSL, que coloca a carga de descriptografia no balanceador de carga, mas envia o tráfego não criptografado para o backend.
  • TCP — Para aplicativos que não usam HTTP ou HTTPS, o tráfego TCP também pode ser balanceado. Por exemplo, o tráfego para um cluster de banco de dados pode ser distribuído entre todos os servidores.
  • UDP — Mais recentemente, alguns balanceadores de carga adicionaram suporte para balanceamento de protocolos principais da internet, como DNS e syslogd, que usam UDP.

Essas regras de encaminhamento irão definir o protocolo e a porta no balanceador de carga em si e mapeá-los para o protocolo e porta que o balanceador de carga usará para rotear o tráfego para o backend.

Como o balanceador de carga escolhe o servidor de backend?

Os balanceadores de carga escolhem para qual servidor encaminhar uma solicitação com base em uma combinação de dois fatores. Eles primeiro garantirão que qualquer servidor que possam escolher esteja respondendo adequadamente às solicitações e depois usarão uma regra pré-configurada para selecionar entre esse pool saudável.

Verificação de Saúde

Os balanceadores de carga devem encaminhar o tráfego apenas para servidores de backend “saudáveis”. Para monitorar a saúde de um servidor de backend, verificações de saúde tentam regularmente se conectar aos servidores de backend usando o protocolo e a porta definidos pelas regras de encaminhamento para garantir que os servidores estejam ouvindo. Se um servidor falhar em uma verificação de saúde e, portanto, não puder atender às solicitações, ele será automaticamente removido do pool, e o tráfego não será encaminhado para ele até que ele responda às verificações de saúde novamente.

Algoritmos de Balanceamento de Carga

O algoritmo de balanceamento de carga usado determina qual dos servidores saudáveis do backend será selecionado. Alguns dos algoritmos comumente usados são:

Round Robin – Round Robin significa que os servidores serão selecionados sequencialmente. O balanceador de carga selecionará o primeiro servidor em sua lista para o primeiro pedido, depois seguirá para baixo na lista em ordem, começando de novo no topo quando chegar ao final.

Menor Número de Conexões – Menor Número de Conexões significa que o balanceador de carga selecionará o servidor com menos conexões e é recomendado quando o tráfego resulta em sessões mais longas.

Fonte – Com o algoritmo de Fonte, o balanceador de carga selecionará qual servidor usar com base em um hash do IP de origem do pedido, como o endereço IP do visitante. Este método garante que um usuário específico se conecte consistentemente ao mesmo servidor.

Os algoritmos disponíveis para administradores variam dependendo da tecnologia específica de balanceamento de carga em uso.

Como os balanceadores de carga lidam com o estado?

Algumas aplicações requerem que um usuário continue conectado ao mesmo servidor backend. Um algoritmo de Fonte cria uma afinidade com base nas informações do IP do cliente. Outra maneira de alcançar isso no nível da aplicação da web é através de sessões persistentes, onde o balanceador de carga define um cookie e todas as solicitações dessa sessão são direcionadas para o mesmo servidor físico.

Balançadores de Carga Redundantes

Para remover o balanceador de carga como um único ponto de falha, um segundo balanceador de carga pode ser conectado ao primeiro para formar um cluster, onde cada um monitora a saúde dos outros. Cada um é igualmente capaz de detecção de falhas e recuperação.

No caso de falha do balanceador de carga principal, o DNS deve direcionar os usuários para o segundo balanceador de carga. Como as alterações de DNS podem levar uma quantidade considerável de tempo para serem propagadas na Internet e para tornar esse failover automático, muitos administradores usarão sistemas que permitem remapeamento flexível de endereços IP, como IPs Reservados. O remapeamento de endereço IP sob demanda elimina os problemas de propagação e cache inerentes às alterações de DNS, fornecendo um endereço IP estático que pode ser facilmente remapeado quando necessário. O nome de domínio pode permanecer associado ao mesmo endereço IP, enquanto o próprio endereço IP é movido entre servidores.

É assim que uma infraestrutura altamente disponível usando IPs Reservados pode parecer:

Conclusão

Neste artigo, fornecemos uma visão geral dos conceitos de balanceadores de carga e como eles funcionam de forma geral. Para aprender mais sobre tecnologias específicas de balanceamento de carga, você pode gostar de olhar para:

Serviço de Balanceamento de Carga da DigitalOcean

HAProxy

Nginx

Source:
https://www.digitalocean.com/community/tutorials/what-is-load-balancing