Oque é Load Balance?

Introdução

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

Uma infraestrutura da web sem balanceamento de carga pode ter a seguinte aparência:

Neste exemplo, o usuário se conecta diretamente ao servidor da web, em seudominio.com . Se esse único servidor web cair, 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 enfrentar tempos de carregamento lentos ou podem não conseguir se conectar.

Esse único ponto de falha pode ser mitigado pela introdução de um balanceador de carga e pelo menos um servidor da web adicional no back-end. Normalmente, todos os servidores de back-end fornecerão conteúdo idêntico para que os usuários recebam conteúdo consistente, independentemente de qual servidor responde.

No exemplo ilustrado acima, o usuário acessa o balanceador de carga, que encaminha a solicitação do usuário a um servidor de back-end, que 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 atenuado com a introdução de um segundo balanceador de carga, mas antes de discutirmos isso, vamos explorar como funcionam os balanceadores de carga.

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

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

  • HTTP – O balanceamento de HTTP padrão direciona as solicitações com base em mecanismos HTTP padrão. O Load Balancer define os X-Forwarded-ForX-Forwarded-ProtoX-Forwarded-Portcabeçalhos para dar a informação backends sobre o pedido original.
  • HTTPS – o balanceamento de HTTPS funciona da mesma forma que o balanceamento de HTTP, com a adição de criptografia. A criptografia é tratada de duas maneiras: com passagem SSL, que mantém a criptografia até o back-end, 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 back-end.
  • 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 se espalhar por todos os servidores.
  • UDP – mais recentemente, alguns balanceadores de carga adicionaram suporte para protocolos de Internet centrais de balanceamento de carga, como DNS e syslogd, que usam UDP.

Essas regras de encaminhamento definirão o protocolo e a porta no próprio balanceador de carga e os mapearão para o protocolo e a porta que o balanceador de carga usará para rotear o tráfego no back-end.

Como o balanceador de carga escolhe o servidor de back-end?

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 está realmente respondendo de forma adequada às solicitações e, em seguida, usarão uma regra pré-configurada para selecionar entre aquele pool íntegro.

Verificações de saúde

Os balanceadores de carga devem encaminhar o tráfego apenas para servidores de back-end “saudáveis”. Para monitorar a integridade de um servidor de back-end, as verificações de integridade tentam regularmente se conectar a servidores de back-end usando o protocolo e a porta definidos pelas regras de encaminhamento para garantir que os servidores estejam escutando. 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 a ele até que responda às verificações de saúde novamente.

Algoritmos de balanceamento de carga

O algoritmo de balanceamento de carga usado determina qual dos servidores íntegros no back-end 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 a primeira solicitação e, em seguida, moverá para baixo na lista em ordem, começando do início ao chegar ao final.

Menos conexões – menos 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.

Origem – com o algoritmo de origem, o balanceador de carga selecionará qual servidor usar com base em um hash do IP de origem da solicitação, como o endereço IP do visitante. Este método garante que um determinado usuário se conectará de forma consistente ao mesmo servidor.

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

Como os balanceadores de carga lidam com o estado?

Alguns aplicativos exigem que o usuário continue a se conectar ao mesmo servidor back-end. Um algoritmo de origem cria uma afinidade com base nas informações de IP do cliente. Outra maneira de conseguir isso no nível do aplicativo da web é por meio de sessões persistentes , em que o balanceador de carga define um cookie e todas as solicitações dessa sessão são direcionadas ao mesmo servidor físico.

Balanceadores 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 do outro. Cada um é igualmente capaz de detecção e recuperação de falhas.

No caso de falha do balanceador de carga principal, o DNS deve levar os usuários ao segundo balanceador de carga. Como as alterações de DNS podem levar um tempo considerável para serem propagadas na Internet e para tornar esse failover automático, muitos administradores usarão sistemas que permitem o remapeamento flexível de endereços IP, como IPs flutuantes . O remapeamento de endereços IP sob demanda elimina os problemas de propagação e armazenamento em 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.

Esta é a aparência de uma infraestrutura altamente disponível usando IPs flutuantes:

Conclusão

Neste artigo, fornecemos uma visão geral dos conceitos do balanceador de carga e como eles funcionam em geral.