Introdução
O balanceamento de carga é um componente chave das 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 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 conseguirá 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 podem ser incapazes de se conectar completamente.
Este ponto único de falha pode ser mitigado introduzindo um balanceador de carga e pelo menos um servidor web adicional no backend. Tipicamente, todos os servidores do backend 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 backend, que então responde diretamente à solicitação do usuário. Nesse cenário, o ponto único de falha agora é o próprio balanceador de carga. Isso pode ser mitigado introduzindo 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
eX-Forwarded-Port
para fornecer informações aos back-ends 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 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 ser distribuído entre todos os servidores.
- UDP — Mais recentemente, alguns balanceadores de carga adicionaram suporte para o balanceamento de protocolos principais da internet, 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 encaminhar o tráfego no back-end.
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 realmente respondendo adequadamente às solicitações e, em seguida, usarão uma regra pré-configurada para selecionar entre esse pool saudável.
Verificações 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 conectar-se 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á removido automaticamente do pool, e o tráfego não será encaminhado para ele até que ele responda novamente às verificações de saúde.
Algoritmos de Balanceamento de Carga
O algoritmo de balanceamento de carga utilizado determina qual dos servidores saudáveis no backend será selecionado. Alguns dos algoritmos comumente utilizados 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, passará para o próximo na ordem, reiniciando 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 o menor número de conexões e é recomendado quando o tráfego resulta em sessões mais longas.
Fonte — Com o algoritmo Fonte, 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 usuário específico sempre se conectará 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?
Algumas aplicações exigem que um usuário continue se conectando ao mesmo servidor de 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 fixas, 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.
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 dos outros. Cada um é igualmente capaz de detectar falhas e se recuperar.
No caso de o balanceador de carga principal falhar, o DNS deve direcionar os usuários para o 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 Reservados. O remapeamento de endereços 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 maneira geral. Para saber mais sobre tecnologias específicas de balanceamento de carga, você pode gostar de consultar:
Serviço de Balanceamento de Carga da DigitalOcean
- Como Criar Seu Primeiro Balanceador de Carga da DigitalOcean
- Como Configurar o Encaminhamento de SSL em Balanceadores de Carga da DigitalOcean
- Como Configurar o Encerramento de SSL em Balanceadores de Carga da DigitalOcean
- Como Balancear o Tráfego TCP com Balanceadores de Carga da DigitalOcean
HAProxy
- Uma Introdução ao HAProxy e Conceitos de Balanceamento de Carga
- Como Configurar Servidores HAProxy Altamente Disponíveis com Keepalived e IPs Reservados no Ubuntu 14.04
- Balanceamento de Carga do WordPress com HAProxy
Nginx
Source:
https://www.digitalocean.com/community/tutorials/what-is-load-balancing