На практике одно и то же ПО (Nginx, HAProxy, Traefik) может выполнять обе задачи. Поэтому эти два термина часто путают. Но концептуально они решают разные задачи: обратный прокси — это посредник, балансировщик нагрузки — это распределитель.
Концептуальная разница
Любой балансировщик нагрузки может быть своего рода обратным прокси, но не каждый обратный прокси является балансировщиком нагрузки. Nginx перед одним сервером не балансирует нагрузку, но выполняет роль обратного прокси.
Разделение на уровень 4 и уровень 7
Балансировка уровня 7 читает содержимое: она может отправить запросы «/api» на один сервер, а «/статика» — на другой. Уровень 4 быстрее, но о содержимом не знает.
Алгоритмы распределения нагрузки
IP hash используется в приложениях, требующих привязки сессии: один и тот же пользователь всегда попадает на один и тот же сервер, благодаря чему данные сессии не нужно разделять между серверами.
Типичная архитектура
В реальных системах оба работают вместе. Слои выстраиваются так:
| Уровень | Компонент | Назначение |
|---|---|---|
| 1 | DNS / Anycast | Направляет пользователя в ближайший регион |
| 2 | CDN | Отдаёт статическое содержимое с edge |
| 3 | Load balancer (L4) | Распределяет трафик внутри региона |
| 4 | Reverse proxy (L7) | Терминирует TLS, применяет правила маршрутизации |
| 5 | Серверы приложений | Выполняют основную работу |
В этой архитектуре forward proxy нет нигде — потому что он находится на другом конце цепочки, на стороне пользователя. Различие в статье о forward- и reverse-прокси .
Проверка состояния
Это самое явное отличие балансировщика нагрузки от обратного прокси: он постоянно следит за состоянием серверов за собой и выводит неисправный из пула.
Эта логика в точности совпадает с логикой управления пулом прокси. В нашей статье о пуле мы описали клиентский аналог того же шаблона.
Почему это важно при сборе данных?
Балансировщик нагрузки целевого сайта может распределять ваши запросы по разным серверам. Это может приводить к несогласованным результатам:
- Разные версии: во время постепенного развёртывания часть серверов может работать на новой версии.
- Потеря сессии: если привязки сессии нет, ваши cookie могут не распознаться на другом сервере.
- Переменное время ответа: между серверами может быть разница в производительности.
- A/B-тесты: разные запросы могут получать разные варианты.
Чтобы уменьшить эту несогласованность, помогает использование sticky-сессий и отправка последовательных запросов с одного IP.
Резюме
Обратный прокси — это посредник, который принимает запросы и передаёт их дальше; балансировщик нагрузки — компонент, который распределяет эти запросы между несколькими серверами и следит за их состоянием. Одно и то же ПО может выполнять обе роли, поэтому термины путают. Балансировка уровня 4 быстрая, но не знает о содержимом, а балансировка уровня 7 учитывает содержимое, но обходится дороже. При сборе данных эти слои на стороне цели могут быть скрытой причиной несогласованных результатов и обрывов сессий.