Como funciona um balanceador de carga típico de http (s)?

5

Eu sei que há algumas situações em que encontramos pesado carregamento de http (s) em um servidor e devemos usar um balanceador de carga para distribuir a carga entre vários servidores de back-end.
Mas eu tenho uma confusão aqui! Vamos supor que muitos usuários (digamos 100.000) estão tentando acessar simultaneamente para example.com:80 e um balanceador de carga (por exemplo, Apache mod_proxy_balancer ou qualquer outro balanceador de carga independente) deseja distribuir essa carga entre vários servidores back-end , mas ainda assim todo o tráfego deve ser passado pelo servidor front-end, o que gera um tráfego intenso nesse servidor & mesmo que todas as solicitações estejam sendo analisadas em servidores back-end, o servidor front-end ainda precisa gerenciá-las (suponha que, no melhor dos casos, ele precise criar um único encadeamento exclusivo para cada solicitação, causando a falha após criar 100.000 encadeamentos em um momento!).
Agora, minha pergunta (que pode soar engraçada para um especialista!) É como um balanceador de carga pode lidar com essa situação? Em outras palavras, como o servidor front-end pode estabelecer um link diretamente entre os clientes & servidores back-end sem ter que tolerar essa carga de rede tão pesada? (Eu sei que nesta situação não podemos chamar servidores back-end realmente 'back-end'! Mas suponha que está tudo bem por agora) Este cenário precisa de alguma alteração específica do aplicativo? (por exemplo, para simplesmente redirecionar clientes com http Location header para outros servidores)

    
por Ehsan Khodarahmi 05.08.2017 / 14:36

1 resposta

9

Isso depende da finalidade do balanceador de carga, ou seja, que tipo de carga de trabalho deve equilibrar. Os balanceadores de carga HTTP (S) baseados no proxy reverso estão distribuindo a carga entre os backends de aplicativos que geram o conteúdo.

Os proxies reversos não estão tentando equilibrar a carga da rede e, comparados a todas as tarefas que os aplicativos dinâmicos fazem, passar tráfego de rede (e possivelmente servir conteúdo estático) é uma tarefa relativamente simples.

Por exemplo, o acesso ao banco de dados também pode ser balanceado de carga. A maioria das consultas de banco de dados envolve apenas a leitura do banco de dados, portanto, enquanto as gravações precisam ser replicadas imediatamente em todos os servidores de banco de dados, as leituras podem ser distribuídas uniformemente.

O balanceamento de carga de rede é uma área diferente. Por exemplo, um método comum para balanceamento (rede) de carga entre servidores de cluster é registros DNS round-robin , onde o mesmo nome de host simplesmente tem mais de um A registros.

    
por 05.08.2017 / 15:17