Qual é a diferença entre o Load Balancer e o Proxy Reverso?

Respostas:

114

Sua confusão é razoável - eles geralmente são a mesma coisa. Mas não sempre. Quando você se refere a um balanceador de carga, está se referindo a uma coisa muito específica - um servidor ou dispositivo que equilibra solicitações de entrada em dois ou mais servidores da Web para distribuir a carga. Um proxy reverso, no entanto, geralmente possui vários recursos:

  1. balanceamento de carga: como discutido acima

  2. armazenamento em cache: pode armazenar em cache o conteúdo do (s) servidor (es) da Web atrás dele e, assim, reduzir a carga no (s) servidor (es) da Web e retornar algum conteúdo estático de volta ao solicitante sem precisar obter os dados do (s) servidor (es) da Web

  3. segurança: pode proteger o (s) servidor (es) da web, impedindo o acesso direto da internet; ele pode fazer isso de maneira simples, ocultando apenas o (s) servidor (es) da web ou pode ter alguns componentes mais ativos que revisam as solicitações de entrada que procuram código malicioso

  4. Aceleração de SSL: quando o SSL é usado; pode servir como um ponto de terminação para essas sessões SSL, para que a carga de trabalho de lidar com a criptografia seja descarregada do (s) servidor (es) da Web

Eu acho que isso cobre a maior parte, mas provavelmente há alguns outros recursos que eu perdi. Certamente, não é incomum ver um dispositivo ou software comercializado como um balanceador de carga / proxy reverso, porque os recursos geralmente são agrupados.

icky3000
fonte
2
+ pooling (permitir que vários pedidos sobre uma ligação de interface quando backend não segurá-lo bem, ou reutilizar ligação backend para várias ligações de front end)
kubanczyk
+ compactação A compactação das respostas do servidor antes de devolvê-las ao cliente (por exemplo, com gzip) reduz a quantidade de largura de banda necessária, o que acelera o trânsito pela rede
dimuthu
25

Além disso, um proxy reverso é específico para servidores da web.

Os balanceadores de carga, no entanto, podem lidar com muitos outros protocolos. Embora a web (HTTP) seja a grande ideia hoje em dia, coisas como DNS, correio (SMTP, IMAP) etc. também podem ser balanceadas por carga. Hoje em dia, quando a maioria das pessoas pensa em "Internet" ou "rede IP", pensa na web. Há muito mais coisas por aí que podem ser mais obscuras ou mais de um nicho.


fonte
12

Embora o resultado líquido (distribuição de solicitações entre servidores) seja o mesmo entre vários balanceadores de carga e proxies reversos, a diferença está no método usado para distribuir as solicitações.

Alguns balanceadores de carga equilibram o tráfego usando o DNS, resolvendo o mesmo nome para IPs diferentes em um round robin redirecionando efetivamente as solicitações. Isso geralmente pode ser útil quando solicitações de balanceamento de carga entre datacenters ou outros locais físicos. Essa é uma má escolha se você precisar de failover "instantâneo", pois está à mercê do servidor DNS de seus clientes para honrar o TTL que você forneceu. O GSS (Global Site Selector) da Cisco é um bom exemplo de balanceamento de carga baseado em DNS.

Outros balanceadores de carga funcionam reescrevendo cabeçalhos de pacotes destinados a um IP virtual para o IP real de um servidor em um farm. Isso fornece balanceamento de carga em tempo real e failover quase instantâneo. Um exemplo disso seria o CSM da Cisco (Content Switching Module)

Observe que nos dois exemplos acima, há uma conversa TCP entre o cliente e o servidor.

Um proxy reverso funciona aceitando a solicitação em nome do servidor da Web, ecoando a solicitação no servidor da Web e retornando-a ao cliente, opcionalmente, armazenando em cache os resultados caso uma solicitação semelhante seja seguida.

Observe que o cliente nunca realmente estabelece uma conexão com o servidor web; pelo contrário, a conversa é estritamente entre o proxy e o cliente.

Brian Tillman
fonte
4

Um balanceador de carga pode equilibrar o tráfego da camada 3 para a camada 7, mas um proxy reverso é específico para HTTP.

Kris Roofe
fonte
3

Um proxy reverso aceita uma solicitação de um cliente, a encaminha para um servidor que pode atendê-la e retorna a resposta do servidor ao cliente (o que significa que um servidor por trás do Proxy Reverso pode se comunicar com recursos um pouco diferentes de um protocolo ou protocolo diferente )

Um balanceador de carga distribui solicitações de entrada de clientes entre um grupo de servidores, retornando em cada caso a resposta do servidor selecionado para o cliente apropriado.

Manu Prasadh
fonte
1
Então você quer dizer que um balanceador de carga é essencial um 'proxy reverso' com distribuição?
Anthony Kong
4
Esta é uma duplicação direta de nginx.com/resources/glossary/reverse-proxy-vs-load-balancer quer que eles roubaram a sua resposta ou você deve fazer referência a suas fontes
icc97