Балансировщик нагрузки (Load Balancer) — сервис распределения запросов между несколькими серверами, гарантирующий работу системы даже в случае отказа одного из серверов.
- Зачем использовать балансировщик нагрузки
- Как работает балансировщик
- Алгоритмы балансировки
- Как включить балансировщик?
- Дополнительные настройки
- Как отключить балансировщик
Зачем использовать балансировщик нагрузки
С ростом проекта увеличивается число пользователей и размер трафика на сервис. Соотвественно возрастает и нагрузка на оборудование. Для построения надежной отказоустойчивой инфраструктуры необходимо равномерное распределение нагрузки на серверы. Балансировщик дает возможность не перегружать один сервер, а равномерно распределять запросы между несколькими серверами.
- Отказоустойчивость. Если один сервер откажет, балансировщик распределит запросы между остальными серверами.
- Оптимальное использование ресурсов. Балансировщик позволяет наилучшим образом использовать ресурсы оборудования и быстрее отвечать на запросы.
- Масштабирование инфраструктуры. Если проекту потребуется больше ресурсов, добавьте новый сервер в кластер, а балансировщик равномерно загрузит его.
Как работает балансировщик
Балансировщик распределяет запросы на доступные серверы из кластера. Он постоянно проверяет доступность серверов и определяет на какие серверы можно отправлять запрос.
Если какие-то из серверов не отвечают, то запросы на них перестают отправляться. Как только эти серверы восстанавливают работоспособность, балансировщик автоматически направляет на них трафик снова.
В SpaceWeb балансировщики располагаются в двух разных дата-центрах: г.Москва и г.Санкт-Петербург. Причем, каждый из них размещен на двух серверах, что дает дополнительную отказоустойчивость самого сервиса. При создании балансировщика вы можете выбрать наиболее удобный для вас дата-центр.
Алгоритмы балансировки
Существует несколько алгоритмов балансировки. В SpaceWeb используются два из них, Round Robin и Least Connections.
- Round Robin — алгоритм, при котором запросы передаются на серверы по кругу: первый запрос - на первый сервер, следующий запрос - на второй сервер, и так далее до последнего сервера, после чего цикл начинается заново. Для данного алгоритма можно указать приоритеты узлов, в этом случае в первую очередь запросу будут отправляться на узлы с более высоким приоритетом.
- Least Connections — алгоритм, при котором каждый новый запрос передается на тот сервер, на котором в данный момент меньше всего активных подключений. Этот метод позволяет распределять нагрузку на серверы достаточно равномерно.
Как включить балансировщик?
Для того, чтобы подключить балансировщик для ваших серверов необходимо:
- Зайти в раздел Балансировщики панели управления
- Нажать Создать балансировщик
- Выбрать тариф:
- Стандартный - балансировщик размещает правила на одном из двух серверов в выбранном дата-центре, но не имеет встроенной отказоустойчивости
- Отказоустойчивый - балансировщик автоматически переключается на резервный сервер при сбоях, обеспечивая непрерывную работу
- Задать имя балансировщика, дата-центр, алгоритм балансировки и серверы, между которыми требуется распределять нагрузку
5. Определить Правила переадресации
6. Задать Дополнительные настройки, если требуются
7. Нажать Создать
8. Готово, вы подключили балансировщик к своим сервисам.
9. Теперь осталось прописать внешний IP балансировщика как А-запись для вашего домена.
10. Изменить параметры существующего балансировщика можно нажав меню "три точки", а затем — Изменить настройки
Дополнительные настройки балансировщика
В дополнение к основным настройкам можно задать дополнительные:
Proxy protocol
Включение Proxy-протокола позволяет перенаправлять данные о подключении клиента (IP-адрес и порт) на конечный сервер, а не отбрасывать их на балансировщике. Это может быть необходимо для сбора статистики по трафику, отображения версии сайта или приложения на нужном языке или с нужным набором функций в зависимости от страны пользователя и в других подобных случаях.
Proxy-протокол будет работать для всех созданных правил, которые имеют целевой протокол HTTP или HTTPS.
Backend keep-alive
При включении настройки будет поддерживаться режим постоянного соединения с серверами (keep-alive) для всех правил с целевым протоколом HTTP. Это позволяет балансировщику поддерживать меньшее количество TCP-соединений для обмена запросами с серверами.
В большинстве случаев включение этой опции помогает повысить производительность и снизить время отклика для клиента.
Запоминание сессии
Включение настройки позволит балансировщику использовать cookie-файлы, чтобы перенаправлять запросы одного и того же клиента на один и тот же сервер. Однако если сервер станет не доступен, балансировщик перенаправит запрос клиента на другой сервер.
Как отключить балансировщик
Удаление услуги Балансировщика доступно через сутки после ее создания.
Для того чтобы удалить услугу балансировщика нужно:
- Зайти в раздел Услуги/Балансировщики панели управления
- Рядом с нужным балансировщиком нажать меню "три точки", а затем кнопку Удалить
- Подтвердить действие.