Открыть сервис

Server Load Balancer

Server Load Balancer — это аппаратное или программное устройство, которое распределяет входящий сетевой трафик между несколькими серверами (серверной фермой, пулом серверов) с целью повышения общей производительности, отказоустойчивости и доступности приложений или веб-сайтов. Балансировщик нагрузки выступает в роли единой точки входа для клиентов, скрывая внутреннюю архитектуру серверной инфраструктуры и обеспечивая равномерную загрузку каждого узла.

Принцип работы

Основная задача балансировщика нагрузки — принять запрос от клиента (например, HTTP-запрос к веб-сайту) и перенаправить его на один из серверов в пуле, в соответствии с заданным алгоритмом и текущим состоянием серверов. Процесс включает несколько этапов:

  1. Прием запроса: Балансировщик получает запрос от клиента по публичному IP-адресу и порту.
  2. Проверка состояния (Health Check): Балансировщик периодически отправляет тестовые запросы (например, ping, запрос к определённому URL) каждому серверу, чтобы убедиться, что он работает и готов обрабатывать трафик. Серверы, не прошедшие проверку, временно исключаются из пула.
  3. Выбор сервера: На основе выбранного алгоритма балансировки (см. раздел «Алгоритмы») балансировщик определяет, какой сервер из доступных получит текущий запрос.
  4. Перенаправление запроса: Балансировщик пересылает запрос выбранному серверу. В зависимости от типа балансировщика (L4 или L7), это может происходить на уровне сетевых пакетов или на уровне прикладного протокола.
  5. Передача ответа: Сервер обрабатывает запрос и отправляет ответ обратно балансировщику, который затем передаёт его клиенту. Клиент взаимодействует только с балансировщиком и не знает о существовании отдельных серверов.

Классификация

Балансировщики нагрузки классифицируются по нескольким признакам.

По уровню модели OSI

По форме реализации

Алгоритмы балансировки

Алгоритм определяет, как балансировщик выбирает сервер для каждого запроса. Основные алгоритмы:

Основные функции и возможности

Помимо распределения трафика, современные балансировщики нагрузки выполняют ряд дополнительных задач:

Применение

Server Load Balancer является ключевым компонентом масштабируемых и отказоустойчивых веб-приложений. Основные сценарии использования:

Примеры решений

Критика и ограничения

Несмотря на очевидные преимущества, использование балансировщиков нагрузки связано с определёнными сложностями:

Источники

  1. RFC 7230 - Hypertext Transfer Protocol (HTTP/1.1): Message Syntax and Routing.
  2. Документация HAProxy (haproxy.org).
  3. Документация Nginx (nginx.org).
  4. Документация AWS Elastic Load Balancing (docs.aws.amazon.com).
  5. T. Bourke, «Server Load Balancing», O'Reilly Media, 2001.
  6. D. E. Comer, «Internetworking with TCP/IP, Volume 1: Principles, Protocols, and Architecture».

BFOmetr — база данных и аналитика по компаниям России.

На главную BFOmetr →