Получить доступ

Чем балансировщик L4 отличается от L7?

MiddleБалансировка нагрузки
Ещё спрашивают так:
  • Что такое обратный прокси?
  • Где терминировать TLS?
  • Как устроена балансировка от DNS до сервиса?
Коротко

L4 видит только IP и порты и распределяет соединения: быстро, дёшево, не понимает содержимого. L7 разбирает HTTP и распределяет запросы: маршрутизация по пути и заголовкам, TLS, повторы, кэш — но дороже.

  • L4: IPVS, LVS, Maglev, сетевые балансировщики облаков — миллионы соединений
  • L7: nginx, HAProxy, Envoy, ingress в Kubernetes, API-шлюзы
  • Долгое соединение (HTTP/2, gRPC, WebSocket) на L4 приклеивается к одному бэкенду

А ещё Типичный стек: DNS/Anycast → L4 → L7 → сервисы

Так подсказку видит пользователь sotto на живом собеседовании — за пару секунд, пока вы думаете вслух.

Попробуйте сами

Балансировка: round robin, least connections, power of two choices

Подробно

L4 (транспортный уровень). Балансировщик выбирает бэкенд при установке TCP-соединения (или для UDP-потока) по адресам и портам и дальше пересылает пакеты, не заглядывая внутрь. Варианты: NAT (меняет адрес назначения), DSR — direct server return (ответ идёт от сервера напрямую клиенту, минуя балансировщик), ECMP на маршрутизаторах и консистентное хеширование для одинакового выбора на всех узлах (Maglev). Плюсы — производительность, работа с любым протоколом, мало состояния. Минусы — не видит HTTP: не может маршрутизировать по пути, повторить запрос, учесть статус ответа.

L7 (прикладной уровень). Это обратный прокси: принимает соединение от клиента, разбирает HTTP и открывает (или берёт из пула) соединение к бэкенду. Возможности:

  • маршрутизация по хосту, пути, заголовкам, cookie (/api → один сервис, /static → другой; канареечный релиз по заголовку);
  • терминация TLS — сертификаты в одном месте, бэкенды разгружены;
  • балансировка каждого запроса, а не соединения — важно для HTTP/2 и gRPC, где одно соединение несёт тысячи запросов;
  • повторы, таймауты, circuit breaker, ограничение частоты, кэш, сжатие, аутентификация на входе;
  • наблюдаемость: метрики и логи по каждому запросу.

Цена — больше CPU и памяти на запрос, дополнительная задержка, прокси сам становится сложной точкой отказа.

Ловушка долгих соединений. gRPC через L4: клиент открыл одно соединение, и все запросы идут на один бэкенд, а новые экземпляры не получают трафика. Решения — L7-прокси (Envoy), клиентская балансировка или периодическое переподключение.

Где TLS. Терминация на L7 даёт видимость и маршрутизацию; внутри сети — либо открытый HTTP в доверенном сегменте, либо повторное шифрование (mTLS в service mesh). L4 с TLS passthrough — когда ключи не должны покидать бэкенд.

Многоуровневая схема крупного сервиса: GeoDNS или Anycast выбирают ближайший дата-центр → L4-балансировщики на границе держат объём соединений → парк L7-прокси терминирует TLS и маршрутизирует → внутри — сервисная балансировка (service mesh или клиентская).

Сам балансировщик тоже резервируют: пара в active-passive с общим виртуальным IP (keepalived, VRRP) или active-active за ECMP/Anycast.

Пример

upstream api { least_conn; server 10.0.1.11:8080; server 10.0.1.12:8080; keepalive 64; }
server {
    listen 443 ssl http2;                # TLS терминируется здесь (L7)
    location /api/   { proxy_pass http://api; proxy_next_upstream error timeout; }
    location /static/ { root /srv/static; expires 7d; }
}

Что хотят услышать

  • Разница уровней: соединения против запросов, что видит каждый.
  • Возможности L7: маршрутизация, TLS, повторы, наблюдаемость — и цена.
  • Проблема долгих соединений и gRPC на L4.
  • Многоуровневая схема и резервирование балансировщика.

Частые ошибки

  • Ставить gRPC за L4 и удивляться неравномерной нагрузке.
  • Забывать, что балансировщик — тоже точка отказа.

Что спросят дальше

Связанные вопросы

Закрытая бета

Подсказки на собеседовании — в реальном времени

sotto слышит вопрос интервьюера и показывает короткий ответ и план, как в блоке «Коротко». Оставьте контакт — пришлём доступ и промокод.

  • Промокод на 2 часа — сверх пробных 30 минут
  • Программа для Windows — скачать сразу, войти — через Яндекс ID или VK ID
  • Прямая связь с разработчиком: что улучшить — сделаем