База знаний

Общее описание балансировщика нагрузки

Балансировщик нагрузки (Load Balancer) распределяет сетевую нагрузку по нескольким серверам с помощью правил перенаправления трафика. Использование балансировщика позволяет создавать гибкую и отказоустойчивую систему.

Задачи балансировщика

Балансировщик нагрузки решает следующие задачи:

  • Распределение нагрузки между серверами для повышения доступности проекта по сети
  • Обеспечение отказоустойчивости облачных проектов (в случае отказа одного из серверов трафик будет перенаправлен на другие серверы в том же пуле)
  • Вертикальное масштабирование используемых ресурсов проекта без простоя инфраструктуры (для расширения достаточно просто подключить к балансировщику новые элементы проекта)

Принципы работы балансировщика

Балансировщик определяет текущую сетевую активность серверов. Если какой-либо сервер стал недоступен, балансировщик распределяет сетевой трафик по другим серверам. Когда работа сервера восстановлена, он снова будет автоматически подключен для перераспределения трафика.

Балансировщик работает с группой ресурсов проекта (пулом), между которыми распределяются запросы. После того, как клиент отправляет запрос на балансировщик, тот выбирает какой-то элемент из пула. Далее запрос перенаправляется на выбранный элемент проекта, и открывается TCP-сессия для обмена данными. В рамках этой сессии клиент получает ответы на запросы от ресурса, находящегося за балансировщиком, но IP-адрес, с которого приходит ответ, для клиента является адресом балансировщика.

Трафик балансировщика распределяется между портами во внутренней сети проекта. Балансировщик может быть связан с сетью Интернет через внешний IP-адрес, или работать во внутренней сети.

Лимиты

По умолчанию можно создать:

  • До 50 балансировщиков нагрузки в рамках одного проекта CLO
  • До 100 правил балансировки для одного балансировщика нагрузки

Примечание. Балансировщик нагрузки в данный момент не работает с протоколом HTTP и не поддерживает ряд функций, связанных с этим протоколом. Это может быть важно для таких задач, как определение географического местонахождения пользователя по IP-адресу (актуально для интернет-магазинов, курьерских служб и сервисов геолокации).

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

  • X-Forwarded-For — исходный адрес клиента (серверы видят только IP балансировщика)
  • X-Forwarded-Port — исходный порт, с которого выполняется обращение клиента
  • X-Forwarded-Proto — идентификатор протокола HTTP/HTTPS, по которому обращался клиент