Em geral, penso em servidores web de balanceamento de carga em duas categorias:
Balanceamento de carga baseado em aderência:
Com esse método, os clientes acessam o mesmo servidor da web a cada vez. Exemplos disso incluem:
- Baseado em IP: Os clientes são enviados para o mesmo servidor da Web com base no endereço IP do cliente. Um hash do seu endereço IP ou tabela é criado e eles são enviados para o mesmo servidor com base nisso.
- Baseada em cookies: O balanceador de carga inspeciona o todo ou parte de um cookie da Web e direciona os clientes com base nisso.
Métodos não aderentes:
Com esses métodos, os clientes nem sempre são enviados para o mesmo servidor. Os métodos para isso incluem:
- Round-robin : Cada solicitação da web é enviada para os servidores da web.
- Algoritmos aleatórios
- Quantidade de conexão : envia solicitações para o servidor com o mínimo de conexões.
- Baseada em recursos : acompanhe os recursos em camadas da Web e tente manter a utilização de recursos uniforme.
Qual tipo?
Os métodos não-adesivos tendem a ser mais uniformes na distribuição, mas seu aplicativo pode não ser capaz de trabalhar com esse tipo de método se várias coisas, como sessões, são armazenadas localmente em um servidor web. Além disso, com sessões não aderentes, você pode acabar com uma taxa de acertos do cache menor, dependendo de como o aplicativo funciona.
Hardware e software:
Você pode obter balanceadores de carga de hardware e software. Eu sou um fã de balanceadores de carga baseados em software que rodam em caixas Linux. Em particular eu recomendo HAProxy mas você também pode considerar Nginx .