1. Главная
  2. О компании
  3. Блог
  4. Что такое балансировщик нагрузки (Load Balancer): его задачи и функции

Что такое балансировщик нагрузки (Load Balancer): его задачи и функции

Инфраструктурные решения

RCloud

Редактор

Аудитория онлайн-сервисов растёт непрерывно, а вместе с ней увеличивается и количество запросов, ежесекундно поступающих на серверы. Пока посетителей немного, с потоком справляется и одна машина, однако по мере роста нагрузки единственный сервер начинает работать на пределе: время ответа увеличивается, а в часы пиковой активности ресурс может и вовсе перестать отвечать. Справиться с возрастающим сетевым трафиком помогает балансировщик нагрузки — компонент, который перехватывает поступающие обращения и разносит их между несколькими серверами кластера. За счёт этого сервис сохраняет скорость отклика и остаётся доступным даже при резких всплесках посещаемости.

Что такое балансировщик нагрузки (Load Balancer)?

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

Благодаря этому нагрузка не скапливается на одной машине, а мощности кластера расходуются рациональнее. Дополнительно балансировщик периодически опрашивает узлы и проверяет их работоспособность. Если какой-либо сервер выходит из строя, его обращения немедленно переводятся на исправные — для посетителя такой сбой остаётся незаметным.

Для чего нужен балансировщик нагрузки

Ключевая цель внедрения балансировщика — стабильная и предсказуемая отдача сервиса при любом уровне обращений. При этом его роль не сводится к одному лишь распределению запросов: компонент решает сразу несколько прикладных задач.

  • Снятие пиковых нагрузок. Поступающий поток дробится на части, поэтому отдельные узлы не перегружаются, а обработка обращений ускоряется.

  • Устойчивость к сбоям. Балансировщик контролирует состояние серверов и временно выводит из очереди те, что перестали отвечать, возвращая их после восстановления.

  • Наращивание мощностей. Дополнительные узлы вводятся в группу прямо во время работы — без простоя и приостановки сервиса.

  • Бесперебойный доступ. Когда обращения обслуживает не один узел, а несколько, риск полного отказа снижается, а ресурс поддерживается в режиме 24/7.

  • Защитный барьер. Балансировщик способен отсеивать подозрительные обращения, закрывать доступ с отдельных адресов и выступать первой линией обороны перед серверами.

Уровни балансировки в модели OSI

Чтобы понять, где именно действует балансировщик, полезно обратиться к сетевой модели OSI. Она разбивает передачу данных на семь ступеней — от прохождения сигналов по физической среде до взаимодействия с конечными приложениями. Кратко о назначении каждой:

  • Физический (L1) — переносит биты данных по кабелю, оптоволокну или радиоканалу.

  • Канальный (L2) — организует обмен кадрами внутри одного сегмента сети и работает с MAC-адресами.

  • Сетевой (L3) — прокладывает маршрут пакетам между разными сетями, ориентируясь на IP-адреса.

  • Транспортный (L4) — доставляет данные нужному приложению по протоколам TCP и UDP и отвечает за целостность соединения.

  • Сеансовый (L5) — открывает, поддерживает и корректно завершает сеансы связи между сторонами.

  • Представления (L6) — приводит данные к понятному приложению виду, а также шифрует и сжимает их.

  • Прикладной (L7) — обеспечивает работу с программами по протоколам HTTP, HTTPS, FTP и другим.

На деле трафик балансируют не на всех ступенях — как правило, выбор приходится на транспортную (L4) и прикладную (L7).

На транспортном уровне (L4) решение принимается по протоколам TCP и UDP. Балансировщик учитывает только IP-адреса и порты, не вникая в содержимое обращений. Результат — минимальные задержки и высокая пропускная способность, что удобно при большом объёме однородного трафика.

Прикладной уровень (L7) работает тоньше: во внимание принимается сам HTTP- или HTTPS-запрос. Балансировщик анализирует адрес страницы, заголовки, cookie или тип содержимого и на этом основании выбирает направление — например, разводит обращения по разным сервисам в зависимости от URL. Здесь же выполняются расшифровка TLS и закрепление пользователя за конкретным сервером на всё время сессии. Такой подход гибче, однако требует заметно больше вычислительных ресурсов.

Реже поток распределяют на сетевом уровне (L3) либо средствами DNS, но ведущие позиции неизменно сохраняют L4 и L7.

Методы балансировки

Организовать балансировку можно несколькими способами, а подходящий выбирают с учётом масштаба проекта, бюджета и требуемой гибкости решения.

  • Аппаратный способ. В инфраструктуру устанавливают отдельные физические устройства, рассчитанные на распределение трафика. Они дают высокую производительность, но обходятся дорого и с трудом поддаются расширению.

  • Программный способ. Функции балансировщика выполняет программное обеспечение — например, решения на базе Nginx или HAProxy. Такой вариант заметно гибче и экономичнее, его несложно адаптировать под нужды проекта.

  • DNS-балансировка. Запросы распределяются уже на этапе разрешения доменного имени: пользователей направляют на различные IP-адреса. Метод прост в настройке, но не учитывает текущую загрузку и состояние узлов.

  • Облачный способ. Балансировщик предоставляется как облачная услуга. Оборудование покупать не требуется, развёртывание проходит быстро, масштабирование происходит на ходу, а все параметры настраиваются в панели провайдера.

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

За то, какому серверу достанется очередной запрос, отвечает выбранный алгоритм. Чаще всего применяют несколько основных схем.

  • Round Robin (круговой перебор). Обращения раздаются узлам по очереди и по замкнутому циклу: после последнего сервера следующий запрос вновь направляется на первый. Простая и предсказуемая схема для машин сопоставимой мощности.

  • Взвешенный Round Robin. Каждому узлу заранее назначается коэффициент в соответствии с его производительностью, и более мощные серверы получают большую долю обращений.

  • Least Connections (наименьшее число соединений). Очередной запрос отправляется туда, где в данный момент открыто меньше всего подключений. Схема выручает, если обращения обрабатываются с разной продолжительностью.

  • Взвешенный Least Connections. Одновременно опирается на два показателя — текущее количество соединений и запас мощности сервера.

  • IP Hash. Сервер подбирается исходя из IP-адреса клиента, поэтому один и тот же посетитель всегда попадает на один узел. Это помогает сохранять данные пользовательской сессии.

  • По времени отклика. Предпочтение отдаётся серверу, отвечающему быстрее остальных, что позволяет уменьшить задержки.

Преимущества облачного балансировщика

У облачного балансировщика нагрузки есть ряд практических достоинств, из-за которых его выбирают всё чаще.

  • Без вложений в оборудование. Приобретать и обслуживать дорогостоящую аппаратуру не нужно — услуга работает из облака.

  • Быстрый запуск. Балансировщик собирается непосредственно в панели управления за несколько минут.

  • Масштабирование под задачу. Ресурсы добавляются и убавляются по мере необходимости, а новые узлы подключаются без остановки сервиса.

  • Работа без простоев. Механизмы резервирования встроены изначально и поддерживают стабильность даже при сбоях.

  • Оплата по факту. Расходы формируются только из фактически использованных ресурсов.

  • Защита на стороне сервиса. Многие облачные балансировщики умеют фильтровать трафик, выполнять терминацию TLS и противостоять сетевым атакам.

  • Единая точка управления. Все настройки собраны в одной панели провайдера.

Подключить балансировщик нагрузки можно в облаке RCloud. Сервис принимает входящий поток и распределяет его по серверной группе, позволяет оперативно наращивать мощности вслед за спросом и расширять инфраструктуру по горизонтали, не прерывая работу. Трафик контролируется в режиме реального времени, обращения разводятся по заранее описанным правилам и сценариям, а сам балансировщик берёт на себя и функцию защитного рубежа: отсеивает лишнее, ограничивает доступ по IP и выполняет терминацию TLS.

другие публикации

смотреть все