Балансировщики нагрузки

Балансировщик нагрузки распределяет входящий сетевой трафик между облачными серверами в одном регионе.

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

Балансировщик можно использовать для повышения доступности сервисов — он оптимально распределит запросы между группой серверов и снизит нагрузку. Если один сервер выйдет из строя, балансировщик перенаправит трафик на другой подходящий сервер.

В балансировщике нагрузки Selectel используется модель OpenStack Octavia:

  • Listener («слушатель») — прослушивает поступающий на балансировщик поток трафика и срабатывает на указанные порт и протокол. Затем маршрутизирует трафик к необходимой группе серверов.
  • Pool (пул) — группа серверов одного Listener.
  • Members — серверы внутри одной группы серверов.

Протоколы

Доступны комбинации протоколов:

  • TCP–TCP — классическая L4-балансировка;
  • TCP–PROXY — информация о клиенте не теряется и передается в отдельном заголовке соединения;
  • UDP–UDP — UDP-протокол быстрее, чем TCP, но менее надежен;
  • HTTP–HTTP — L7-балансировка;
  • HTTPS–HTTP — L7-балансировка с шифрованием и терминацией SSL-сертификата на балансировщике.

Типы балансировщиков

Тип балансировщика Отказоустой-
чивость
Резервирование Для чего подойдет Пропускная способность Количество HTTP-запросов Количество HTTPS-запросов
Базовый с резервированием Да, аварийное переключение (Active-Standby Failover) Для небольших и средних проектов, для которых критична доступность сервиса максимум 5 Гбит/с ~19,5K ~3K keep-alive подключений
Базовый без резервирования Нет, только Single режим Для тестовых окружений или проектов, для которых не нужна доступность сервиса 24 / 7 максимум 5 Гбит/с ~19,5K ~3K keep-alive подключений
Продвинутый с резервированием Да, аварийное переключение (Active-Standby Failover) Для проектов с высокой нагрузкой и требованием к постоянной доступности сервиса максимум 5 Гбит/с ~34K ~9K keep-alive подключений

Вы можете заказать кастомную конфигурацию балансировщика — создайте тикет.

Алгоритмы распределения запросов

Listener распределяет запросы по выбранному алгоритму. Доступно два алгоритма:

  • Round Robin — алгоритм кругового обслуживания. Первый запрос передается одному серверу, следующий запрос — другому и так далее до достижения последнего сервера. Затем цикл начинается сначала. Запросы распределяются на серверы в соответствии с заданным весом.
  • Least connections — алгоритм учитывает количество подключений к серверам. Новый запрос передается серверу с наименьшим количеством активных подключений, вес сервера не учитывается.

Sticky Sessions

Дополнительно можно включить Sticky Sessions. Новые запросы распределяются в соответствии с алгоритмом, затем сессия закрепляется за сервером, который начал обрабатывать запросы. Если этот сервер недоступен, запрос перенаправится на другой.

Идентифицировать сессию можно по:

  • APP-cookie — уже существующая cookie, которая задана в коде приложения.
  • HTTP-cookie — cookie, которую создает и прикрепляет к сессии балансировщик.
  • Source IP — IP-адрес клиента хешируется и делится на вес каждого сервера в правиле — так определяется сервер, который будет обрабатывать запросы.

Проверки доступности

Для балансировщика можно включить проверку доступности. Балансировщик будет отслеживать состояние серверов — если какой-либо сервер окажется неработоспособным, балансировщик перенаправит соединение на другой.

Параметры проверки:

  • тип проверки: HTTP, HTTPS, PING, TCP, TLS-HELLO, UDP-CONNECT;
  • интервал в секундах, с которым балансировщик отправляет проверяющие запросы серверам;
  • таймаут соединения — время ожидания ответа;
  • для протоколов проверки HTTP и HTTPS можно настроить обращение к URL и ожидаемые коды ответа;
  • порог успеха — количество успешных обращений подряд, после которых сервер переводится в рабочее состояние;
  • порог неуспеха — количество неуспешных обращений подряд, после которых работа сервера приостанавливается.

Настройки соединений

Можно задать настройки соединений, проходящих через балансировщик — между входящими запросами и балансировщиком, балансировщиком и серверами.

Настройки соединений:

  • таймаут соединения — время ожидания ответа;
  • количество соединений — ограничено или нет;
  • таймаут неактивности — время, в течение которого подключение считается активным, даже если данные не передаются;
  • таймаут ожидания TCP-пакетов — время, в течение которого балансировщик ждет передачи данных для инспекции по уже установленному соединению.

Заголовки HTTP-запросов

В обычном режиме работы балансировщик передает серверу только исходное тело HTTP-запроса, заменяя IP-адрес клиента на свой.

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

  • X-Forwarded-For;
  • X-Forwarded-Port;
  • X-Forwarded-Proto;
  • X-SSL-Client-Verify;
  • X-SSL-Client-Has-Cert;
  • X-SSL-Client-DN;
  • X-SSL-Client-CN;
  • X-SSL-Issuer;
  • X-SSL-Client-SHA1;
  • X-SSL-Client-Not-Before;
  • X-SSL-Client-Not-After.

Стоимость

Стоимость балансировщика нагрузки указана на сайте.

Средства списываются с баланса Облачной платформы каждый час — подробнее об оплате Облачной платформы.