O balanceamento de carga da Camada 4 usa informações definidas na camada de transporte de rede (Camada 4) como base para decidir como distribuir as solicitações dos clientes entre um grupo de servidores. Especificamente para o tráfego da Internet, um balanceador de carga da Camada 4 toma a decisão de balanceamento com base nos endereços IP e nas portas de origem e destino registrados no cabeçalho do pacote, sem considerar o conteúdo do pacote.

Ao todo, há sete camadas de rede, definidas pelo Modelo de Referência de Interconexão de Sistemas Abertos [OSI]. Para obter mais informações, consulte Camadas nos modelos OSI e de Internet abaixo.

Para obter mais informações sobre balanceamento de carga, consulte Balanceamento de carga de aplicações com o NGINX Plus.

Balanceamento de carga da camada 4 e NAT

Hoje, o termo “balanceamento de carga da Camada 4” geralmente se refere a uma implantação em que o endereço IP do balanceador de carga é anunciado aos clientes como o endereço de um site ou serviço (via DNS, por exemplo). Como resultado, os clientes registram o endereço do balanceador de carga como o endereço IP de destino em suas solicitações.

Quando o balanceador de carga da Camada 4 recebe uma solicitação e decide como distribuir a carga, ele também realiza a Tradução de Endereços de Rede (NAT) no pacote da solicitação, alterando o endereço IP de destino registrado, que deixa de ser o seu próprio e passa a ser o do servidor de conteúdo escolhido na rede interna. Da mesma forma, antes de encaminhar as respostas do servidor aos clientes, o balanceador de carga altera o endereço de origem registrado no cabeçalho do pacote, substituindo o endereço IP do servidor pelo seu próprio endereço. (Às vezes, os números das portas TCP de destino e de origem registrados nos pacotes também são alterados de maneira semelhante.)

Os balanceadores de carga da camada 4 tomam suas decisões de roteamento com base nas informações de endereço extraídas dos primeiros pacotes do fluxo TCP e não inspecionam o conteúdo dos pacotes. Um balanceador de carga da camada 4 geralmente é um dispositivo de hardware dedicado, fornecido por um fabricante, que executa um software proprietário de balanceamento de carga. As operações de NAT podem ser realizadas por chips especializados, em vez de por software.

O balanceamento de carga da Camada 4 era uma abordagem arquitetural popular para lidar com o tráfego quando o hardware comum não era tão potente quanto é hoje e a interação entre clientes e servidores de aplicações era muito menos complexa. Ele exige menos processamento do que métodos de balanceamento de carga mais sofisticados (como o da Camada 7), mas atualmente a CPU e a memória são rápidas e baratas o suficiente para que a vantagem de desempenho do balanceamento de carga da Camada 4 tenha se tornado insignificante ou irrelevante na maioria das situações.

Comparação entre balanceadores de carga da camada 4 e da camada 7

Os balanceadores de carga da camada 7 operam no nível mais alto do modelo OSI, a camada de aplicação (na Internet, o HTTP é o protocolo predominante nessa camada). Os balanceadores de carga da camada 7 baseiam suas decisões de roteamento em diversas características do cabeçalho HTTP e no conteúdo da própria mensagem, como a URL, o tipo de dados (texto, vídeo, elementos gráficos) ou as informações contidas em um cookie.

Levar em consideração tantos outros aspectos das informações que estão sendo transferidas pode tornar o balanceamento de carga da camada 7 mais dispendioso do que o da camada 4 em termos de tempo e capacidade computacional necessária, mas ainda assim pode resultar em maior eficiência geral. Por exemplo, como um balanceador de carga da camada 7 consegue determinar que tipo de dados (vídeo, texto e assim por diante) um cliente está solicitando, não é necessário duplicar os mesmos dados em todos os servidores com balanceamento de carga.

Os balanceadores de carga modernos de uso geral, como o NGINX Plus e o software NGINX de código aberto, geralmente operam na Camada 7 e funcionam como proxies reversos completos. Em vez de gerenciar o tráfego pacote por pacote, como fazem os balanceadores de carga da Camada 4 que usam NAT, os proxies de balanceamento de carga da Camada 7 podem ler solicitações e respostas na íntegra. Eles gerenciam e manipulam o tráfego com base em uma compreensão completa da transação entre o cliente e o servidor de aplicações.

Alguns balanceadores de carga podem ser configurados para fornecer balanceamento de carga na Camada 4 ou na Camada 7, dependendo da natureza do serviço. Como mencionado anteriormente, o hardware comum moderno geralmente é potente o suficiente para que a economia de recursos computacionais proporcionada pelo balanceamento de carga na Camada 4 não seja significativa a ponto de superar os benefícios da maior flexibilidade e eficiência do balanceamento de carga na Camada 7.

Como o NGINX pode ajudar

NGINX Plus e NGINX são as melhores soluções de balanceamento de carga da categoria, usadas por sites de alto tráfego como Dropbox, Netflix e Zynga. Mais de 350 milhões de sites em todo o mundo confiam no NGINX Plus e no NGINX Open Source para disponibilizar seu conteúdo com rapidez, confiabilidade e segurança.

Como balanceador de carga baseado em software, o NGINX Plus é muito mais econômico do que soluções baseadas em hardware com recursos semelhantes. Os recursos abrangentes de balanceamento de carga do NGINX Plus permitem criar uma rede de entrega de aplicações altamente otimizada.

Ao inserir o NGINX Plus como balanceador de carga à frente do seu conjunto de servidores, você aumenta a eficiência, o desempenho, a confiabilidade e a escalabilidade de todo o seu site. O NGINX Plus ajuda a maximizar tanto a satisfação dos clientes quanto o retorno sobre seus investimentos em TI.

Camadas nos modelos OSI e de Internet

Para o tráfego da Internet, referir-se ao balanceamento de carga de “Camada 4” e “Camada 7” é uma forma abreviada conveniente, mas não rigorosamente precisa. Se tiver interesse, continue lendo.

A noção de sete camadas de rede vem do Modelo de Referência de Interconexão de Sistemas Abertos (OSI). O modelo divide as funções de rede em sete camadas abstratas, geralmente identificadas por seus números (da Camada 1 à Camada 7). Em cada camada, há padrões que definem como os dados são empacotados e transportados. Entre outras coisas, esses padrões definem como segmentar o fluxo de bits que compõe uma solicitação ou resposta em pacotes distintos chamados unidades de dados de protocolo (PDUs). Os padrões também definem os metadados adicionados a cada PDU na forma de um cabeçalho; esses metadados podem especificar, por exemplo, os endereços dos hosts de origem e destino.

A atribuição de diferentes aspectos da funcionalidade de rede a diferentes camadas simplifica o processamento em cada uma delas, pois um protocolo só precisa saber como lidar com as PDUs de sua própria camada e quais metadados incluir no cabeçalho para que os protocolos das camadas adjacentes possam reempacotar as PDUs de acordo com seu próprio nível de segmentação de dados.

A distribuição das funções de rede entre os protocolos básicos para o tráfego na World Wide Web – coletivamente denominados suíte de protocolos da Internet (IP) – não corresponde exatamente ao modelo OSI. Isso ocorre porque a suíte IP foi definida e implementada antes da publicação do modelo OSI definitivo, em 1984. Ainda assim, os diversos protocolos da suíte IP desempenham funções distintas que correspondem, de modo geral, às camadas OSI.

Há vários protocolos definidos em cada camada, mas os protocolos e as camadas relevantes para o balanceamento de carga do tráfego de sites são os seguintes:

  • O Protocolo de Internet (IP) opera na camada de inter-rede (Camada 3). Suas PDUs são chamadas de pacotes, e o IP é responsável por entregá-las de um host de origem a um host de destino, geralmente atravessando os limites entre as várias redes menores que compõem a Internet. Cada dispositivo conectado diretamente à Internet possui um endereço IP exclusivo, usado para localizar o dispositivo destinatário dos pacotes.
  • O Protocolo de Controle de Transmissão (TCP) opera na camada de transporte (Camada 4). O TCP cria efetivamente uma conexão virtual entre o host no qual o navegador está sendo executado e o host no qual uma aplicação de servidor está sendo executada. Devido à natureza não confiável das redes, os pacotes IP podem ser perdidos, corrompidos ou chegar fora de ordem. O TCP possui mecanismos para corrigir esses erros, transformando o fluxo de pacotes IP em um canal de comunicação confiável. Cada aplicação recebe um número de porta TCP exclusivo para permitir a entrega à aplicação correta em hosts nos quais várias aplicações estão sendo executadas.
  • O Protocolo de Transferência de Hipertexto (HTTP) opera na camada de aplicação (Camada 7). Ele define como os dados são codificados para a comunicação entre navegadores e servidores web (ou qualquer aplicativo que compreenda a codificação HTTP).

Como esta lista deixa claro, referir-se ao “balanceamento de carga da Camada 4” do tráfego da Internet é uma forma abreviada conveniente, mas o termo mais preciso é “balanceamento de carga das Camadas 3/4” – porque o balanceador de carga baseia sua decisão tanto nos endereços IP dos servidores de origem e destino (Camada 3) quanto no número da porta TCP das aplicações (Camada 4). Um termo mais exato para “balanceamento de carga da Camada 7” seria “balanceamento de carga das Camadas 5 a 7”, pois o HTTP combina as funções das Camadas 5, 6 e 7 do modelo OSI.