O balanceador de carga retorna a resposta ao cliente ou o trabalhador?

4

No Apache, mod_proxy_balancer suporta o balanceamento de carga da maneira mais fácil.

Por favor, consulte Balanceamento de carga HTTP fácil com o Apache . Quando a solicitação é processada por trabalhadores (nós de balanceamento de carga), ela chega a um servidor de balanceamento de carga e depois vai para o cliente, ou vai diretamente dos trabalhadores?

Exemplo:
Método 1: Web Client - > Balanceador de carga - > Trabalhador - > Balanceador de carga - > Cliente da Web

OR

Método 2: Cliente da web - > Balanceador de carga - > Trabalhador - > Cliente da Web

O que está acontecendo no balanceador de carga do Apache?

    
por Mani 14.05.2012 / 17:32

1 resposta

7

Mesmo ao retornar, os dados devem passar pelo servidor proxy, pois é o servidor que mantém a conexão TCP do cliente e deve enviar a resposta por meio dele.

A solução sem servidor proxy trabalhando no caminho de volta existe, mas são muito mais difíceis de implementar corretamente (truques TCPIP / iptables sujos geralmente estão envolvidos).

EDIT: boa solução sem servidor proxy:

"Solução limpa" que magicamente envia TCP SYNs e descarregaria todo o resto do balanceador de carga é provavelmente um sonho, e eu não estou ciente de nada disso.

Em vez disso, existem duas abordagens comumente usadas:

- balanceamento de carga DNS : tem mais servidores em vários endereços IP publicamente acessíveis, especifica mais entradas do seu site, possivelmente faça o seu servidor DNS embaralhar a resposta para adicionar aleatoriedade. Funciona perfeitamente em muitas instalações comerciais. Prós: simples, Contras: "quebrável" e você precisa de espaço IP público.

- Balanceamento de carga somente por firewall : provavelmente há um único roteador que lida com todo o tráfego, portanto, adicionar algumas regras de firewall normalmente não prejudica o desempenho real. A coisa que você está procurando (no linux) é usar o alvo DNAT do iptables, e algum tipo de correspondência "aleatória" ou "hashing". Eu pessoalmente uso algo assim em várias instalações:

iptables -t nat -A PREROUTING -d 11.22.33.44 -p tcp --dport 80 -m random --average 50 -j DNAT --to 192.168.0.2
iptables -t nat -A PREROUTING -d 11.22.33.44 -p tcp --dport 80 -j DNAT --to 192.168.0.3

Substitua 11.22.33.44 pelo seu endereço IP público e 192.168.x.x pelos seus servidores. Não se esqueça de modificar os valores - média.

Prós: toda a solução se parece com um único servidor externo, o balanceamento de carga é inquebrável com DoSing em um único servidor, etc. Contras: você quer ter o roteador e todos os servidores em um ponto.

    
por 14.05.2012 / 17:38