Product SiteDocumentation Site

1.3. Обзор планировщика LVS

Одним из преимуществ использования LVS является его способность выполнять гибкую балансировку нагрузки уровня IP в пуле реальных серверов. Такая гибкость объясняется наличием большого количества алгоритмов планировщика, которые администратор может выбрать на этапе настройки LVS. Балансировка нагрузки в LVS значительно превосходит такие методы, как Round-Robin DNS, когда иерархическая структура DNS и кеширование на клиентской машине может привести к разбалансировке нагрузки. В дополнение, низкоуровневая фильтрация, используемая в LVS-маршрутизаторе, имеет ряд преимуществ перед перенаправлением запросов уровня приложения, так как балансировка нагрузки на уровне сетевых пакетов требует меньших вычислительных затрат и обеспечивает лучшую масштабиремость.
Используя планировщик, активный маршрутизатор может принимать во внимание активность реального сервера, а также, опционально, назначенный администратором весовой коэффициентпри распределении запросов к сервису. Использование назначенных весовых коэффициентов позволяет назначить индивидуальным машинам произвольные приоритеты. При использовании соответствующего режима планировщика становится возможным построение пула реальных серверов на базе различных аппаратных и программных конфигураций. При этом активный маршрутизатор может равномерно распределять нагрузку между реальными серверами.
Механизм планировщика LVS реализован в наборе патчей ядра, известных как модули IP Virtual Server или IPVS. Эти модули реализуют коммутацию на 4 уровне (L4), что позволяет работать с множеством серверов, используя всего один IP-адрес.
Для эффективного отслеживания состояния и маршрутизации пакетов IPVS строит в ядре таблицу IPVS. Эта таблица используется активным маршрутизатором для перенаправления запросов с адреса виртуального сервера на адреса реальных серверов в пуле, а также для перенаправления ответов реальных серверов клиентам. Таблица IPVS постоянно обновляется при помощи утилиты ipvsadm, которая добавляет и убирает реальные серверы в зависимости от их доступности.

1.3.1. Алгоритмы планировщика

Round-Robin (Round-Robin Scheduling)
Последовательно распределяет поступающие запросы в пуле реальных серверов. При использовании этого алгоритма все реальные сервера считаются равными, вне зависимости от текущей загрузки и мощности. Эта модель работы планировщика схожа с round-robin DNS, но, в отличие от него, не подвержена разбалансировке, связанной с кешированными DNS-запросами.
Round-Robin с использованием весовых коэффициентов (Weighted Round-Robin Scheduling)
Последовательно распределяет поступающие запросы в пуле реальных серверов, но при этом больше загружая серверы с большей производительностью. Производительность обозначается назначенным администратором весовым коэффициентом, который впоследствии корректируется с использованием динамической информации о загрузке. О весовых коэффициентах реальных серверов подробно рассказано в разделе 1.3.2. Весовой коэффициент сервера и работа планировщика.
Алгоритм "Round-Robin с использованием весовых коэффициентов" является предпочтительным для случаев, когда имеется значительная разница в производительности реальных серверов.
Минимум подключений (Least-Connection)
Распределяет большее количество запросов серверам с наименьшим количеством активных подключений. Поскольку производится отслеживание активных подключений к активным серверам с помощью таблицы IPVS, этот алгоритм использует динамическое планирование, что делает его лучшим выбором для ситуаций, когда возможен большой разброс значений нагрузки. Он наилучшим образом подходит для пула реальных серверов, где все ноды имеют примерно одинаковую производительность. Если же мощности реальных серверов значительно отличаются, алгоритм "Минимум подключений c использованием весовых коэффициентов" будет лучшим выбором.
Минимум подключений c использованием весовых коэффициентов (Weighted Least-Connections) (используется по умолчанию)
Распределяет большее количество запросов серверам с наименьшим количеством активных подключений в соответствии с их производительностью. Производительность обозначается назначенным администратором весовым коэффициентом, который впоследствии корректируется с использованием динамической информации о загрузке. Введение весовых коэффициентов делает этот алгоритм идеальным для случаев, когда пул реальных серверов содержит различные по производительности конфигурации. О весовых коэффициентах реальных серверов подробно рассказано в разделе 1.3.2. Весовой коэффициент сервера и работа планировщика.
Минимум подключений с учетом местоположения (Locality-Based  Least-Connection  Scheduling)
Распределяет большее количество запросов серверам с наименьшим количеством активных подключений в соответствии с IP адресата. Этот алгоритм разработан для использования в кластерах кеширующих прокси-серверов. Он направляет пакеты с определенного IP-адреса серверу, обслуживающему этот адрес только в случаях, когда сервер не загружен полностью. В противном случае, если имеются серверы с менее чем половинной нагрузкой, пакет направляется наименее загруженному серверу. IP адресата также передается на обслуживание этому серверу.
Минимум подключений с учетом местоположения и репликацией (Locality-Based Least-Connection Scheduling with Replication Scheduling)
Распределяет большее количество запросов серверам с наименьшим количеством активных подключений в соответствии с IP адресата. Этот алгоритм также разработан для использования в кластерах кеширующих прокси-серверов. Отличие его от предыдущего алгоритма заключается в том, что IP-адрес закрепляется за подмножеством реальных серверов. Запросы передаются серверу из этого подмножества, имеющему минимальное количество подключений. Если все реальные серверы из этого подмножества перегружены, алгоритм резервирует новый сервер, выбирая наименее загруженный сервер из всего пула и добавляя его к подмножеству, обслуживающему данный IP. После этого наиболее загруженный реальный сервер удаляется из подмножества для предотвращения избыточной репликации.
Хеш получателя (Destination Hash Scheduling)
Распределяет запросы в пуле реальных серверов в соответствии с IP получателя из статической hash-таблицы. Этот алгоритм спроектирован для работы с кластером кеширующих прокси-серверов.
Хеш отправителя (Source Hash Scheduling)
Распределяет запросы в пуле реальных серверов в соответствии с IP отправителя из статической hash-таблицы. Этот алгоритм спроектирован для работы с кластером кеширующих прокси-серверов.