Балансировщики нагрузки
Балансировщик нагрузки распределяет входящий сетевой трафик между облачными серверами в одном регионе.
Трафик распределяется между серверами по правилам — настраивается порт и протокол балансировщика и серверов, алгоритм распределения запросов, проверки доступности и параметры соединений. Количество правил не ограничено.
Балансировщик можно использовать для повышения доступности сервисов — он оптимально распределит запросы между группой серверов и снизит нагрузку. Если один сервер выйдет из строя, балансировщик перенаправит трафик на другой подходящий сервер.
В балансировщике нагрузки 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.
Стоимость
Стоимость балансировщика нагрузки указана на сайте.
Средства списываются с баланса Облачной платформы каждый час — подробнее об оплате Облачной платформы.