Балансировщик нагрузки
Балансировщик нагрузки распределяет входящий сетевой трафик между облачными серверами и используется для повышения доступности сервисов — он оптимально распределяет запросы между серверами и снижает нагрузку. Если один сервер выйдет из строя, балансировщик перенаправит трафик на другой подходящий сервер.
Тарифы и конфигурации
Тариф балансировщика нагрузки зависит от выбранной конфигурации балансировщика:
Конфигурация |
Количество запросов в секунду (RPS) |
Подходит для |
|
|---|---|---|---|
Базовый |
1GB RAM, 1 VCPU, 1 инстанс |
19500 |
Для тестовых окружений или проектов, которым не требуется постоянная доступность сервиса |
Базовый с резервированием |
1GB RAM, 1 VCPU, 2 инстанса |
19500 |
Отказоустойчивый с резервированием для проектов со предсказуемой нагрузкой |
Продвинутый с резервированием |
2GB RAM, 2 VCPU, 2 инстанса |
34500 |
Отказоустойчивый с резервированием для проектов с высокой нагрузкой |
Максимальный с резервированием |
4GB RAM, 4 VCPU, 2 инстанса |
65500 |
Отказоустойчивый с резервированием для проектов с требованием постоянной доступности сервиса |
Ознакомиться с ценами можно на странице Cтоимость в пункте Балансировщик нагрузки.
Рекомендуется выбирать тариф с учетом требований к производительности и отказоустойчивости балансировщика.
Warning
Обратите внимание, что изменить его в будущем невозможно. Для перехода к другому тарифу надо будет создавать новый балансировщик.
Создание балансировщика
Предварительно подготовьте инфраструктуру:
Активные виртуальные серверы с предустановленными приложениями (например, Nginx, Apache, API и т.д.), на которые предполагается распределять входящий трафик.
Общая виртуальная сеть (L2) - внутренняя или внешняя.
Если включен firewall, то в его настройках должны быть разрешены входящие соединения на подсеть балансировщика.
Для создания балансировщика:
Перейдите в Панель управления в раздел Облако и нажмите кнопку +Создать.
Укажите регион и зону доступности.
Выберите сеть и подсеть с IP-адресом, на который балансировщик будет принимать трафик.
Выбор внутренней или внешней сети определяет, будет ли балансировщик доступен из интернета или ограничен только локальной сетью.
При использовании внешней сети все серверы балансировщика также должны иметь адреса во внешней сети.
Warning
Не указывайте порт вручную при создании балансировщика нагрузки. Порты, назначенные вручную, некорректно помечаются как принадлежащие балансировщику нагрузки, что может вызвать конфликты с другими сервисами. Система создаст порт автоматически.
Настройте правила маршрутизации трафика:
Введите название обработчика целевой группы, укажите протокол и порт.
На вкладке Серверы группы найдите нужные виртуальные серверы, выбрав из существующих. Все backend-серверы должны отвечать на один и тот же порт.
Перейдите на вкладку Настройки и задайте метод балансировки - Round Robin или Least Connections.
Подключите Sticky sessions, если для вашего приложения важно, чтобы запросы от одного и того же клиента направлялись на один и тот же сервер, позволяя сохранять состояние сессии. Привязка выполняется по IP адресу или cookie - HTTP или APP.
Рекомендуется подключить мониторинг серверов целевой группы, для избежания перенаправления входящего трафика на недоступные сервера.
Введите имя балансировщика и, при необходимости, его описание.
Завершите создание балансировщика, нажав кнопку Создать балансировщик.
Вернитесь на вкладку Балансировщики и включите нужный балансировщик, нажав кнопку ⋁.
Производительность и резервирование
Балансировщик нагрузки не имеет фиксированных ограничений по количеству одновременных соединений. Пропускная способность эквивалентна производительности стандартных серверов в инфраструктуре ProСloud и зависит от сетевых параметров и конфигурации конкретного проекта.
Максимальное количество backend-серверов в пуле не ограничено. Практические пределы зависят от потребляемых ресурсов и характеристик нагрузки.
Фильтрация входящего трафика осуществляется на уровне облачных security groups. Балансировщик не выполняет фильтрацию по IP-адресам или геолокации.
Можно настраивать параметры таймаутов соединений и количество повторных попыток (retries) при недоступности backend-серверов.
Управление балансировщиком доступно как через веб-интерфейс, так и через API. Поддерживается интеграция с Terraform. Поддержки Ansible и SDK на данный момент нет.
Балансировщики функционируют в пределах одного региона. Межзональное резервирование не поддерживается. Для обеспечения геораспределённой отказоустойчивости рекомендуется использовать несколько балансировщиков в разных регионах и настраивать внешнее распределение трафика между ними.
Доступные комбинации протоколов
Доступны следующие комбинации протоколов для приема трафика на балансировщике и назначения трафика на целевую группу:
TCP–TCP
UDP–UDP
TCP–PROXY — данные о клиентском подключении (IP-адрес и порт) пересылаются на внутренние серверы в специальном заголовке. Это позволяет серверам видеть реальную информацию о клиенте.
HTTPS–HTTPS — балансировка с шифрованием и терминацией TLS на стороне конечного сервера.
Изменение балансировщика нагрузки
Для изменения балансировщика:
Перейдите на вкладку Балансировщики.
В карточке нужного балансировщика нажмите кнопку Подробнее.
В открывшейся форме можно изменить название и описание самого балансировщика или добавить новое правило маршрутизации.
Удаление балансировщика нагрузки
Для удаления балансировщика:
Перейдите на вкладку Балансировщики.
В карточке нужного балансировщика нажмите кнопку ⋁.
В открывшейся форме нажмите кнопку Удалить.