Общее описание балансировщика нагрузки
Балансировщик нагрузки (Load Balancer) распределяет сетевую нагрузку по нескольким серверам с помощью правил перенаправления трафика. Использование балансировщика позволяет создавать гибкую и отказоустойчивую систему.
Задачи балансировщика
Балансировщик нагрузки решает следующие задачи:
- Распределение нагрузки между серверами для повышения доступности проекта по сети
- Обеспечение отказоустойчивости облачных проектов (в случае отказа одного из серверов трафик будет перенаправлен на другие серверы в том же пуле)
- Вертикальное масштабирование используемых ресурсов проекта без простоя инфраструктуры (для расширения достаточно просто подключить к балансировщику новые элементы проекта)
Принципы работы балансировщика
Балансировщик определяет текущую сетевую активность серверов. Если какой-либо сервер стал недоступен, балансировщик распределяет сетевой трафик по другим серверам. Когда работа сервера восстановлена, он снова будет автоматически подключен для перераспределения трафика.
Балансировщик работает с группой ресурсов проекта (пулом), между которыми распределяются запросы. После того, как клиент отправляет запрос на балансировщик, тот выбирает какой-то элемент из пула. Далее запрос перенаправляется на выбранный элемент проекта, и открывается TCP-сессия для обмена данными. В рамках этой сессии клиент получает ответы на запросы от ресурса, находящегося за балансировщиком, но IP-адрес, с которого приходит ответ, для клиента является адресом балансировщика.
Трафик балансировщика распределяется между портами во внутренней сети проекта. Балансировщик может быть связан с сетью Интернет через внешний IP-адрес, или работать во внутренней сети.
Лимиты
По умолчанию можно создать:
- До 50 балансировщиков нагрузки в рамках одного проекта CLO
- До 100 правил балансировки для одного балансировщика нагрузки
Примечание. Балансировщик нагрузки в данный момент не работает с протоколом HTTP и не поддерживает ряд функций, связанных с этим протоколом. Это может быть важно для таких задач, как определение географического местонахождения пользователя по IP-адресу (актуально для интернет-магазинов, курьерских служб и сервисов геолокации).
Все HTTP-заголовки сохраняются, то есть пробрасываются с балансировщика на целевые серверы. При этом информация в заголовки не добавляется. Следовательно, целевые серверы не могут получить информацию вида:
- X-Forwarded-For — исходный адрес клиента (серверы видят только IP балансировщика)
- X-Forwarded-Port — исходный порт, с которого выполняется обращение клиента
- X-Forwarded-Proto — идентификатор протокола HTTP/HTTPS, по которому обращался клиент