Um balanceador de carga é usado uma vez por novo cliente ou o tempo todo?

4

Eu tenho 2 servidores (S1, S2) nos IPs 1.1.1 e 1.1.1.2, e gostaria de carregar o tráfego em www.example.com para eles. Estou pensando em ter uma máquina em 1.1.1.3 que seria o balanceador de carga: o dns example.com apontaria para 1.1.1.3 e o LB redirecionaria para 1.1.1.1 ou 1.1.1.2.

Pergunta: Um cliente do navegador da Web envia um arquivo de 1 MB para example.com . O arquivo passa inteiramente pelo LB antes de ir para o S1? Quero dizer, todos os pacotes viajam do cliente para LB para S1? Ou acontece assim: o web browser pede example.com , é devolvido o IP 1.1.1.3 (LB) pelo DNS, então para o primeiro pacote o LB diz ao cliente "Ei, fale com o 1.1.1.1 em vez disso" , e assim o navegador da web envia todos os seus pacotes http para S1 1.1.1.1 e assim o LB recebe apenas 0,001% do tráfego total?

Uma outra possibilidade seria assumirmos que a solicitação é grande em termos de acesso à CPU / banco de dados, etc. e, como um balanceador de carga não lidaria com a solicitação (e apenas a transferisse) ela ainda seria útil, embora absorve todo o tráfego

Espero que as coisas aconteçam como eu digo, mas não sei o suficiente sobre o protocolo http para responder; Eu vi algum hardware comercial que faz isso é por isso que eu me pergunto se existe uma solução de software puro.

Eu não sou um nativo de Inglês, minha pergunta é muito básica Eu acho que se parece complicado, não hesite em pedir-me para reformular:)

    
por Thomas 01.04.2014 / 17:55

3 respostas

6

Existem diferentes tipos de balanceamento de carga. Você pode ter vários IPs públicos, visíveis em registros DNS. Cada um desses IPs poderia apontar diretamente para um servidor. Será então o cliente que escolher entre eles, e o cliente pode fazer failover entre eles. Você não deve depender muito do failover entre servidores, se você deixar isso para o cliente.

Você pode ajustar o cenário acima ao não distribuir todos os seus IPs públicos em todas as solicitações de DNS. Existem vários motivos para não distribuir todos os seus IPs públicos:

  • Pode haver tantos que a resposta do DNS seria muito grande.
  • Você pode querer ter mais controle sobre o local de carregamento.
  • Você pode direcionar os usuários para servidores que estejam geograficamente mais próximos deles.
  • Você pode deixar de contar aos clientes sobre IPs públicos que estão atualmente fora de serviço.

Os métodos acima são geralmente conhecidos como balanceamento de carga baseado em DNS.

Na próxima camada da cadeia, seus IPs públicos podem ser IPs virtuais, que podem ser migrados entre diferentes unidades de hardware. Cada IP virtual só pode ser encaminhado para uma peça de hardware de cada vez, por isso não faria sentido ter muito mais caixas nesta camada do que você tem endereços IP públicos.

Tais IPs virtuais são mais usados para disponibilidade, não são muito flexíveis como uma solução de balanceamento de carga.

Na próxima camada, você pode ter um balanceador de carga convencional. O balanceador de carga recebe as solicitações dos clientes e as encaminha para um pool de servidores. Todo o tráfego do cliente para o servidor precisa passar pelo balanceador de carga, mas o processamento que o balanceador de carga precisa executar pode ser extremamente leve.

Esta camada de balanceador de carga pode operar em dois modos diferentes. Eles podem operar no modo de proxy convencional, no qual uma conexão TCP é usada entre cliente e balanceador de carga e outra conexão TCP é usada entre balanceador de carga e servidor, ou no modo DSR no qual as conexões TCP são terminadas nos servidores atrás o balanceador de carga.

No modo de proxy, o balanceador de carga não precisa apenas lidar com todos os pacotes dos clientes. Ele também precisa manipular todos os pacotes dos servidores para os clientes. E o balanceador de carga precisa de uma pilha TCP completa com buffer e retransmissão.

No modo DSR, o balanceador de carga só precisa de um acompanhamento de conexão simples de cada conexão dos clientes. Isso reduz significativamente o uso de memória no balanceador de carga. Isso também significa que os pacotes do servidor para o cliente não passam pelo balanceador de carga, são enviados diretamente para o cliente (obviamente passando pelos roteadores a caminho). Esta propriedade é a razão pela qual esse modo é chamado de Retorno Direto ao Servidor.

A desvantagem do modo DSR é que a configuração de rede é um pouco mais complicada. Os pacotes do balanceador de carga para o servidor não podem depender apenas do roteamento comum. Como não reescreve o IP de destino dos pacotes de cliente para servidor, ele precisa manipular o endereço de destino em uma camada de protocolo inferior para rotear o pacote para o servidor apropriado ou inserir uma camada de encapsulamento para ter uma camada na qual colocar esse endereço de destino.

Todos os métodos acima podem ser colocados em camadas um na frente do outro. É assim que você pode construir um site com centenas de milhões de usuários.

    
por 01.04.2014 / 22:47
12

so the LB receives only 0.001% of the total traffic?

Não. Tudo o tráfego fluirá pelo balanceador de carga. O balanceador de carga passará o tráfego para o servidor de destino real.

Sim, o balanceador de carga é um ponto único de falha (o balanceamento de carga não é HA). Se você precisar de HA, obtenha dois balanceadores de carga.

    
por 01.04.2014 / 18:04
7

Um balanceador de carga geralmente funciona de maneira semelhante a um proxy reverso.
O cliente inicia a conexão com o balanceador de carga e envia sua solicitação para ele.
O balanceador de carga recebe a solicitação e a passa para o nó de back-end e aguarda a resposta.
Obtém a resposta e encaminha para o cliente original.

Então, sim, todo o tráfego fluirá sobre ele, tanto solicitará quanto responderá.

    
por 01.04.2014 / 18:03