Entendendo diferença entre LB tipo L4 e L7
A ideia aqui é falar sobre a diferença de Load Balancer (LB) na camada 4 e 7, perguntinha comum em entrevistas de emprego para quem está disputando uma vaga de Cloud Engineer ou Cloud Architect. Antes de entrar no assunto vamos relembrar algumas coisinhas básicas.
Relembrando do Modelo OSI?
É um modelo referência para comunicação entre sistemas computacionais composto por 7 camadas.
- Application (HTTP, FTP, SSH, NTP, NFS, SNMP…)
- Presentation (SSL, TLS…)
- Session Layer (RCP, SOCKS, NetBios…)
- Transport (TCP, UDP…)
- Network ( IP, IPSEC, ICMP, IGMP, RIP…)
- Data Link ( PPP, ARP, WIFI, Ethernet…)
- Physical ( 1000BASE-TX, RJ45…)’
Só precisa lembrar que é um modelo conceitual e referencial, nunca foi implementado, quem virou realidade foi o TCP/IP que é uma versão mais simples e de alguma forma parecida com esse modelo.
Relembrando o Modelo TCP/IP
É um modelo mais enxuto e muito funcional.
- Application (HTTP, HTTPS, SSH, SSL, TLS…)
- Transport (TCP, UDP…)
- Internet ( IP, ICMP, IGMP… )
- Link ( ARP, NDP… )
Esse foi o modelo que se tornou o padrão, sendo o que é usado até hoje.
Qual a diferença entre Load Balancer na camada 4 ou 7?
Quando fazem essa pergunta estão falando do modelo OSI pq é a única que tem 7 camadas.
A camada 7 é a camada mais alta do modelo OSI, chamada de aplicação, nessa camada no caso do LB estamos falando do HTTP que é o que importa para LB geralmente.
A camada 4 é camada de transporte onde temos o TCP que o que importa quando estamos falando de LB geralmente.
Camada 4
O balanceamento nesta camada leve em conta as informações de endereçamento de cada pacote – dos primeiros que recebe – para tomar decisões de roteamento, contudo ele não lê ou inspeciona os dados do pacote.
Aqui estamos falando dos dados brutos, estamos falando dos pacotes de fato. Neste cenário o LB vai receber pacotes em uma porta TCP qualquer, por exemplo a 80 e repassar para outro IP na mesma porta ou em outra porta que for definida. O balanceador pode encaminhar pacotes para vários IPs diferentes de acordo com as regras estabelecidas pelo administrador.
Pode-se ainda definir configurações de estratégia de balanceamento como RR (round-robin), persistência de sessão, definir pesos, prioridades, tempo de timeout, nível máximo de tolerância a falhas e outras regras que a tecnologia escolhida oferecer e suportar.
O único tratamento – de fato – que ele vai fazer é um NAT que irá mudar quando necessário o ip de origem e o ip destino dos pacotes.
Camada 7
Já nesta camada o LB baseia todas as decisões de roteamento usando características e informações presentes nos pacotes, e falando especicamente de HTTP temos o cabeçalho HTTP, o conteúdo da mensagem, a url, o tipo de dados (imagem, texto, áudio, vídeo…) e os cookies.
Além destas informações, o administrador pode definir configurações de estratégia de balanceamento, persistência de sessão, definir pesos, prioridades, tempo de timeout, nível máximo de tolerância a falhas e outras regras que a tecnologia escolhida oferecer e suportar.
E não é só isso, o balanceamento na L7 pode ir além, usando características de reverse-proxys ele permite por exemplo, enviar requisições específicas para um determinado servidor, habilitar compressão de dados (GZIP) e criptografia na comunicação (TLS/SSL), coisas que não podem ser feitas em um LB do tipo L4.
Amarrando as pontas
Sabemos que o custo computacional do L7 é bem maior que o L4, contudo, hoje em dia isso é praticamente imperceptível para a maioria das aplicações e cenários. Só vamos começar a perceber o custo computacional com aplicaçoes de missão crítica ou em sites com acessos na casa dos centenas de milhares por segundo. Ainda assim, os benefícios são maiores IMHO.
Refs
- https://www.a10networks.com/blog/how-do-layer-4-and-layer-7-load-balancing-differ
- https://www.nginx.com/resources/glossary/layer-7-load-balancing
- https://levelup.gitconnected.com/l4-vs-l7-load-balancing-d2012e271f56
[s]
Guto
–
Este post é do tipo #MindNotes, entenda aqui.
Se gostou manda um alo no twitter @gutocarvalho.