Чем балансировщик L4 отличается от L7?
Производительность и безопасность сети
L4-балансировщик распределяет TCP- и UDP-соединения по IP и портам, не заглядывая в содержимое; L7 разбирает HTTP или gRPC и маршрутизирует каждый запрос по пути, заголовкам, cookie.
L4
- Бэкенд выбирается при установке соединения, дальше все пакеты идут туда же.
- Очень быстрый и дешёвый, держит миллионы соединений; может не терминировать TCP вовсе (IPVS, Maglev, direct server return).
- TLS проходит насквозь — сертификаты живут на бэкендах.
- Примеры: AWS NLB, IPVS, HAProxy в режиме
tcp.
L7
- Терминирует TCP и TLS, читает запрос.
- Маршрутизация:
/apiв один сервис,/staticв другой; поHost, заголовкам, канареечные релизы по доле трафика. - Бонусы: ретраи, health-check по HTTP, sticky sessions по cookie, кеш, WAF, rate limiting.
- Цена: больше CPU и задержка, ключи TLS хранятся на балансировщике.
- Примеры: nginx, Envoy, AWS ALB, Traefik.
Когда что
- gRPC и HTTP/2 на L4 балансируются плохо: одно долгое соединение с тысячами запросов прибито к одному бэкенду. L7 раскидывает каждый запрос.
- Не-HTTP протоколы вроде PostgreSQL или MQTT — L4.
- Часто комбинируют: L4 на входе распределяет трафик по флоту L7-прокси.
- Алгоритмы: round robin и weighted, least connections, consistent hashing, power of two choices.
Коротко для собеседования
L4 дешевле и быстрее, потому что работает с соединениями и не читает трафик, а L7 платит CPU за умную маршрутизацию каждого запроса. Важная ловушка — gRPC и HTTP/2 за L4 прибиваются к одному бэкенду, поэтому часто ставят L4 перед флотом L7-прокси.