1.3. Обзор планирования распределения нагрузки
1.3. Обзор планирования распределения нагрузки
Одним из преимуществ комплекта является гибкость распределения запросов между серверами на уровне IP, которая достигается благодаря множеству алгоритмов планирования. Использование комплекта распределения нагрузки является более предпочтительным по сравнению с менее гибкими методами, такими как циклическое обслуживание DNS, так как иерархическая структура DNS и кэширование в системах клиентов могут нарушить баланс. Кроме того, низкоуровневое фильтрование, используемое маршрутизатором LVS, имеет свои преимущества по сравнению с перенаправлением запросов на уровне приложений, так как распределение нагрузки на уровне пакетов не вызывает существенных вычислительных издержек и допускает масштабирование.
При распределении запросов активный маршрутизатор принимает во внимание активность реальных серверов и дополнительно заданный администратором весовой коэффициент. Значения веса позволяют присвоить машинам приоритет. Таким образом, набор серверов может включать компьютеры с различными комбинациями аппаратного и программного обеспечения, в то же время поддерживая их равномерную нагрузку.
Механизм планирования распределения реализован с помощью набора модулей IPVS (IP Virtual Server), которые позволяют осуществлять переключение транспортного уровня L4 (layer 4), что подходит при использовании одного IP-адреса несколькими серверами.
IPVS создает в ядре системы таблицу IPVS для эффективного отслеживания и перенаправления пакетов реальным серверам. Эта таблица используется активным маршрутизатором LVS для перенаправления запросов с виртуального адреса реальным серверам и обратно. Таблица постоянно обновляется программой ipvsadm, которая добавляет и исключает компоненты кластера исходя из их доступности.
1.3.1. Алгоритмы распределения
Структура таблицы IPVS зависит от выбранного алгоритма распределения для заданного виртуального сервера. Red Hat Enterprise Linux предоставляет несколько алгоритмов (см. Раздел 4.6.1, «Подсекция VIRTUAL SERVER»).
- Циклическое распределение
- Запросы последовательно распределяются между серверами в наборе. Все реальные серверы используются равноправно без учета их мощности и нагрузки. Такая модель распределения напоминает циклическое распределение DNS, но отличие состоит в том, что она использует сетевое подключение и позволяет избежать нарушения баланса, вызванного кэшированием запросов DNS.
- Циклическое распределение с весовыми коэффициентами
- Распределение запросов происходит последовательно, но серверы с большей пропускной способностью получают большее число задач. Пропускная способность определяется заданным администратором весовым коэффициентом, который может корректироваться в зависимости от нагрузки (см. Раздел 1.3.2, «Весовой коэффициент сервера и распределение»).Такое распределение рекомендуется при сильных различиях мощности серверов в наборе. Но при значительном изменении числа запросов сервер с бóльшим весом будет обрабатывать большее число запросов, чем было задано изначально.
- Наименьшее число подключений
- Передача большего числа запросов серверам с наименьшим числом активных подключений. Так как активные подключения отслеживаются с помощью таблицы IPVS, этот алгоритм предпочтителен при резких изменениях нагрузки и особенно эффективен, если набор состоит из серверов с приблизительно одинаковой пропускной способностью. Если серверы сильно отличаются, лучше использовать метод минимальных подключений с весовым коэффициентом.
- Наименьшее число подключений с весовым коэффициентом (по умолчанию)
- Передача большего числа запросов серверам с наименьшим числом подключений и большей пропускной способностью, определяемой заданным пользователем коэффициентом, который корректируется динамически в зависимости от нагрузки. Использование коэффициента делает этот алгоритм идеальным выбором, если пул серверов содержит оборудование с различной пропускной способностью (см. Раздел 1.3.2, «Весовой коэффициент сервера и распределение»).
- Наименьшее число подключений на основе размещения
- Передача большего числа запросов серверам с наименьшим числом подключений и с учетом IP-адреса получателя. Этот алгоритм используется в кластерах с кэширующим прокси-сервером и передает пакеты, предназначенные заданному IP-адресу, соответствующему серверу. Если сервер перегружен, адрес будет закреплен за наименее загруженным сервером.
- Наименьшее число подключений на основе размещения с репликацией
- Передача большего числа запросов серверам с наименьшим числом активных подключений с учетом IP-адреса получателя. Этот алгоритм используется в кластерах с кэширующим прокси-сервером и отличается от описанного выше алгоритма тем, что IP-адрес получателя сопоставляется не одному, а подмножеству реальных серверов. Запросы будут передаваться серверу в подмножестве с наименьшим числом подключений. Если все узлы, обслуживающие этот IP-адрес, перегружены, из общего пула в подмножество будет добавлен новый сервер с наименьшим числом подключений. При этом максимально загруженный сервер будет исключен из группы.
- Распределение по получателю
- Сервер для обработки запроса выбирается из статической таблицы по IP-адресу получателя. Этот алгоритм предназначен для использования в кластерах с кэширующим прокси-сервером.
- Распределение по отправителю
- Сервер для обработки запроса выбирается из статической таблицы по IP-адресу отправителя. Этот алгоритм предназначен для маршрутизаторов LVS с несколькими межсетевыми экранами.