Балансировщик нагрузки кластера виртуализации
Уникальность архитектуры кластера AirCloud состоит в поддержки консистентного состояния всех серверов этого кластера необходимого и достаточного для запуска любой из виртуальных машин (ВМ) этого кластера. Такое архитектурное решение позволяет увеличить количество потенциальных расстановок ВМ в рамках кластера и достичь максимальной экономической эффективности в использовании вычислительных ресурсов.
Согласно проведенным экспериментам, кластер, использующий балансировщик нагрузки, вмещал ВМ больше до 40%, чем кластер без использования балансировщика нагрузки.
Весовые коэффициенты вычислительных ресурсов
![image-20240403-142501.png](../__attachments/66585150/image-20240403-142501.png?inst-v=d00fe7c8-eb57-482a-97df-32ff3c4c02d1)
Для адаптивности стратегии балансировки ВМ были введены весовые коэффициенты на CPU и RAM (в будущих релизах - до конца 2023 года - будет добавлен весовой коэффициент на хранилища). Сумма весовых коэффициентов всегда равняется единице.
Выставление весовых коэффициентов позволяет приоритезировать соответствующий вычислительный ресурс и адаптировать стратегию балансировки под текущее состояние кластера.
Весовые коэффициенты разрешено менять во время работы кластера, они являются глобальными и не являются частью профилей балансировки. Значения весовых коэффициентов не может быть менее 0,1 и более 0,9.
Профили балансировки и их граничные значения, расписание балансировки
![image-20240403-142708.png](../__attachments/66585150/image-20240403-142708.png?inst-v=d00fe7c8-eb57-482a-97df-32ff3c4c02d1)
Пользователь может настраивать стандартные и добавлять свои профили балансировки с пользовательским расписанием вызова и собственными настройками.
К ключевым настройкам профиля балансировки нагрузки относится:
Режим балансировки
Максимум производительности - в таком режиме достигается максимальная производительность ВМ кластера.
Максимум плотности - в данном режиме достигается максимальная плотность расположения ВМ кластера с целью освобождения части серверов, снижение их энергопотребления, вплоть до перевода сервера в режим гибернации.
Пороговые значения
Минимальный - при попадании текущей нагрузки CPU/RAM ниже минимального порога в режиме:
максимальной производительности балансировщик пытается дозаполнить сервер ВМ, а при отсутствии такой возможности освобождает сервер полностью;
максимальной плотности балансировщик пытается любой ценой освободить текущий сервер от ВМ в пределах максимальных пороговых значений других серверов.
Максимальный - при попадании текущей нагрузки CPU/RAM выше максимального порога в обоих режимах балансировщик пытается избавится от превышения максимального порогового значения, а при отсутствии такой возможности уведомляет администратора о необходимости добавления серверов в кластер.
Расписание балансировки, которое позволяет максимально гибко настроить расписание вызовов настраиваемого профиля балансировки.
Стратегии балансировки кластера
В архитектуру решения заложены 2 стандартные стратегии (профиля) балансировки нагрузки:
Регулярный
Критический
Пороговые значения критического профиля нагрузки не могут быть строже, чем пороговые значения регулярного профиля.
В контексте классического сценария балансировки виртуальных рабочих мест рассматривается балансировка с помощью критического профиля в течение рабочего дня и с помощью регулярного вне рабочего дня, например, ночью.
Напоминаю, что администратор может добавлять собственные профили балансировки, но критический и регулярный профили должны присутствовать всегда.
Не рекомендуется сочетать различные режимы балансировки (максимальной производительности и плотности) в критическом и регулярном профилях, т.к. они противоречат друг другу. Такое сочетание может привести к большому числу живых миграций в кластере.
Оптимизация числа и времени живых миграций при балансировке нагрузки
Помимо балансировки ВМ кластера к задачам балансировщика нагрузки относится минимизация числа живых миграций ВМ в кластере. Это достигается за счет того, что балансировщик нагрузки определяет корректное расположение ВМ во время их включения, а также в первую очередь балансирует ВМ, находящиеся в режиме сна, а только потом запущенные. Помимо этого балансировщик нагрузки оценивает используемый объем RAM и текущее потребление CPU, мигрируя в первую очередь те ВМ, у которых эти показатели ниже.
Внутри балансировщика нагрузки интегрирована система прогнозирования времени миграции ВМ на основании вышеупомянутых параметров, позволяя произвести максимальное количество миграций за ограниченный промежуток времени и минимизировать время каждой из миграций, тем самым доставляя лучший пользовательский опыт во время миграций.