O que é balanceamento de carga
Balanceamento de carga é a distribuição de tráfego ou trabalho entre destinos conforme uma política. Em uma aplicação web, um balanceador pode receber chamadas e encaminhá-las a diferentes instâncias que atendem ao mesmo serviço.
Você usa essa distribuição para aproveitar os destinos disponíveis, mas ela não cria capacidade de processamento sozinha. Se todas as instâncias dependem de um banco saturado, espalhar as chamadas não elimina essa limitação.
A política escolhe o destino de cada encaminhamento
Uma política pode alternar destinos, considerar conexões ativas ou usar pesos configurados. A escolha precisa corresponder ao tipo de atendimento, pois chamadas distintas podem exigir quantidades muito diferentes de trabalho.
No round-robin, alternar requisições não garante consumo idêntico nas instâncias. Uma exportação demorada pode ocupar mais recursos que várias consultas pequenas, mesmo quando a quantidade de chamadas parece equilibrada.
Detecção de falha tem cobertura e intervalo
Uma verificação ativa consulta o destino periodicamente, enquanto a detecção passiva observa falhas no tráfego atendido. A disponibilidade desses mecanismos e suas condições dependem do balanceador usado.
A retirada do destino não precisa ser instantânea e não desfaz chamadas já afetadas. Confira o intervalo, a quantidade de falhas exigida e o comportamento quando nenhum destino satisfaz a verificação, pois esse último caso varia entre produtos.
Sessões e conexões exigem tratamento próprio
Chamadas sucessivas podem chegar a instâncias diferentes. Se uma sessão ou um arquivo existe apenas na primeira instância, a seguinte pode não encontrar o estado necessário ao atendimento.
Afinidade pode tentar manter determinadas chamadas no mesmo destino, mas não substitui a análise do que acontece quando ele desaparece. Conexões longas também podem permanecer num destino mesmo após novas instâncias entrarem no conjunto.
Retirar uma instância sem perder o trabalho
Uma remoção planejada pode parar novos encaminhamentos e permitir que chamadas em andamento terminem. Esse esvaziamento depende do suporte e dos tempos configurados, que precisam considerar tarefas longas.
A repetição de uma chamada em outro destino também merece cuidado. Se a primeira tentativa já produziu um efeito, uma nova tentativa pode duplicá-lo quando a aplicação não trata essa possibilidade.
Conferir a distribuição e a reação a falhas
Acompanhe volume, duração e erros por destino, além do total do serviço. Em teste, retire uma instância e observe as chamadas em andamento, as novas chamadas e o retorno do destino ao atendimento.
A escala horizontal trata da quantidade de instâncias que podem receber esse trabalho. Para revisar a distribuição e as falhas observadas ao longo do projeto, o Conselheiro de Tecnologia da Dev Side Studio pode apoiar o acompanhamento da infraestrutura.
Dúvidas frequentes
Perguntas frequentes sobre Balanceamento de carga
- O balanceador aumenta os recursos dos servidores?
- Não por si só. Ele distribui o trabalho entre destinos. A capacidade depende desses destinos e das dependências compartilhadas, como o banco.
- Round-robin garante o mesmo consumo em todas as instâncias?
- Não. Requisições podem exigir trabalhos muito diferentes. Distribuir quantidades parecidas de chamadas não garante o mesmo consumo de CPU ou a mesma duração.
- Um destino com falha sai imediatamente do atendimento?
- Depende da detecção e das configurações. Intervalos, tentativas e tipo de verificação influenciam a remoção, e requisições em andamento podem já ter sido afetadas.
- A próxima chamada chega sempre à mesma instância?
- Somente se houver um mecanismo de afinidade aplicável, com seus limites. A aplicação precisa tratar sessões e outros estados considerando possíveis mudanças de destino.
Para continuar
Recursos relacionados
Documentação
NGINX: balanceamento HTTP
Distribuição de requisições, afinidade e detecção de falhas.
Abrir recursoDocumentação
AWS: balanceamento de carga
Encaminhamento de tráfego e acompanhamento de destinos.
Abrir recursoAplicação na formação
Formação DevOps
O balanceamento de carga distribui chamadas conforme os destinos disponíveis e a configuração do serviço.
Conhecer a formação
Fontes consultadas
Referências deste verbete
Este verbete ajudou você?
Obrigado pela resposta. Ela fica salva apenas neste navegador.