Балансировка нагрузки
В Платформе предусмотрены следующие виды балансировки:
-
Балансировка на уровне администраторов Платформы:
- Автоматическая балансировка, регулируемая метаданными агрегата (см. раздел Управление метаданными агрегата).
- Ручная балансировка с помощью миграции ресурсов гипервизоров (см. раздел Миграция ресурсов гипервизоров).
- Распределение нагрузки на агрегатах с помощью правил планировщика (sheduler); см. раздел Управление нагрузкой с помощью правил планировщика (sheduler).
- Настройка правил размещения ВМ на вычислительных узлах (affinity, anti-affinity), см. раздел Политики affinity и anti-affinity для размещения ВМ.
-
Балансировка на уровне администраторов проектов:
- Octavia balancer — распределяет задания/трафик между несколькими сетевыми устройствами (например, серверами) с целью оптимизации использования ресурсов, сокращения времени обслуживания запросов, горизонтального масштабирования кластера (динамическое добавление/удаление устройств), а также обеспечения отказоустойчивости (см. раздел Балансировщики нагрузки).
Автоматическая балансировка выполняется на основе настроек агрегатов: эти настройки заключаются в указании метаданных для каждого агрегата. В качестве примера балансировки можно привести закрепление вычислительного узла за проектом (см. раздел Закрепление вычислительного узла за проектом), когда необходимо, чтобы ресурсы данного узла были доступны только в рамках этого проекта.
Чтобы посмотреть список метаданных агрегата:
- В меню слева перейдите в раздел «Облачные вычисления» → «Агрегаторы узлов».
- Нажмите на иконку справа от поля поиска и выберите вариант «Реальные данные» (по умолчанию показаны «Кешированные данные»).
- Нажмите на кнопку «•••» справа от названия агрегата и выберите пункт «Обновление метаданных».
Чтобы добавить новые / редактировать существующие метаданные агрегата:
- Откройте список метаданных агрегата (см. шаги предыдущей инструкции).
- Нажмите на кнопку «Редактировать».
- Добавьте метаданные из области слева (если таковые имеются) или укажите пользовательские метаданные в формате «Имя-Значение» в одноимённых полях.
- Нажмите на кнопку «Сохранить изменения».
Дальнейшая балансировка будет выполняться в соответствии с указанными метаданными для агрегата.
Миграция ресурсов гипервизоров позволяет оперативно разгрузить перегруженный вычислительный узел. При миграции определяются ВМ-кандидаты на миграцию, после чего их можно переместить на наименее загруженные вычислительные узлы.
Миграция ресурсов гипервизоров осуществляется при помощи:
- Портала администратора.
- OpenStack CLI.
Чтобы выполнить миграцию ресурсов гипервизоров в Портале администратора:
-
В меню слева перейдите в раздел «Облачные вычисления» на страницу «Гипервизоры».
-
Выберите один или несколько гипервизоров, которые будут участвовать в миграции, отметив флажок в списке. Степень их загруженности отображается в столбцах
cpu_idle(остаток свободного CPU в процентах к сумме ядер) иfree_mem(остаток свободного ОЗУ в МБ). -
Нажмите на кнопку «Мигрировать» над таблицей. В открывшейся форме имеются поля:
-
Использование процессора гипервизоров — целевая процентная нагрузка по CPU после выполнения миграции. Например, значение
0.5означает загрузку на 50% по CPU (см. пояснения ниже). -
Использование физической памяти гипервизоров — целевой объём ОЗУ в МБ после выполнения миграции. Учитывается именно максимальный объём, указанный в шаблоне ВМ (см. пояснения ниже).
-
Включить VIP-проекты — опция включения VIP-проектов. ВМ, помеченные как VIP, не будут участвовать в расчётах и останутся на текущем вычислительном узле в любом случае, но это вызовет большее количество миграций обычных (не VIP) ВМ. При включении этой опции VIP ВМ будут рассчитываться в качестве кандидатов наравне с другими ВМ.
-
Название зоны — наименование зоны доступности (AZ), в рамках которой выполняется миграция. Используется в случае наличия на нескольких гипервизорах нескольких AZ.
-
Название агрегатора — наименование агрегата узлов, в рамках которого будет выполняться миграция. Это позволит вам ограничить список миграций только ВМ определённых агрегатов и не трогать остальные.
-
Игнорировать выключенные гипервизоры — позволять использовать выключенные вычислительные узлы в качестве кандидатов для миграции. Выключенные вычислительные узлы будут рассматриваться как потенциальные кандидаты для миграции наравне с включёнными.
-
-
Заполните поля формы и нажмите на кнопку «Следующий шаг».
-
В открывшейся таблице из найденных ВМ выберите подходящие для выполнения миграции. Если найденные ВМ по каким-то причинам не подходят для миграции, нажмите на кнопку «Предыдущий шаг» и измените параметры поиска.
-
При необходимости укажите хост назначения:
- Нажмите на кнопку «Хост назначения: отключено».
- В открывшейся форме включите переключатель «Включен».
- В поле «Хост назначения» укажите целевой хост, куда будет выполнена миграция.
- Нажмите на кнопку «Применить».
-
Выберите одну или несколько ВМ, которые будут отправлены на миграцию.
-
Нажмите на кнопку «Завершить».
После запуска процесса миграции отследить его ход можно в разделе «Облачные вычисления» → «Инстансы» при выборе типа данных «Реальные данные». История миграции ВМ доступна в разделе «Облачные вычисления» → «Миграции».
В отличие от миграции с помощью Портала администратора, миграция с использованием OpenStack CLI не имеет количественных параметров и предназначена для миграции всех инстансов с целевого гипервизора.
Миграция ресурсов гипервизоров в OpenStack CLI выполняется следующей командой:
nova host-servers-migrate <HOST>
, где <HOST> — наименование целевого гипервизора, откуда будет осуществлена полная миграции.
Настройки правил планировщика находятся на управляющем узле в конфигурационном файле Nova (nova.conf). Чтобы изменить правила размещения ВМ на агрегатах:
-
Выполните подготовительные операции (см. раздел Вход для Администратора Платформы).
-
Найдите параметр
scheduler_available_filtersв конфигурационном файлеnova.conf. -
Добавьте / удалите фильтры (полный список фильтров см. в документации «Compute schedulers» Openstack).
-
Сохраните файл и перезагрузите сервис
openstack-nova-schedulerна всех управляющих узлах:systemctl restart openstack-nova-scheduler
Правила размещения ВМ на узлах кластера также может настраиваться политиками, в частности, с политикой affinity ВМ будут создаваться только на одном узле, а с anti-affinity — только на разных (или с максимальным распределением по узлам, если создаваемых ВМ больше, чем узлов). Далее приведён пример добавления политик affinity и anti-affinity.
Чтобы добавить политики affinity и anti-affinity:
-
Выполните подготовительные операции (см. раздел Вход для Администратора Платформы).
-
Создайте группы серверов с политиками
affinityиanti-affinity, выполнив команды:openstack --insecure server group create --policy anti-affinity anti-affinity-groupopenstack --insecure server group create --policy affinity affinity-group -
Отобразите список созданных групп:
openstack --insecure server group listПример отображения информации о группах серверов+--------------------------------------+---------------------+---------------+| ID | Name | Policies |+--------------------------------------+---------------------+---------------+| ae7a655b-4b18-425b-82cb-415930669d7b | anti-affinity-group | anti-affinity || bd5a029e-1fb2-4133-b019-a52eed372fcb | affinity-group | affinity |+--------------------------------------+---------------------+---------------+
Чтобы убедиться в корректности работы политик, одновременно создайте несколько ВМ, указав для них политики affinity и anti-affinity:
for i in 1 2 3;do openstack --insecure server create --image <НАЗВАНИЕ_ОБРАЗА> --flavor Basic-1-1 --hint group=<ID_ГРУППЫ_СО_СВОЙСТВОМ_AFFINITY> --nic net-id=<ID_СЕТИ> vm-affinity-$i;donefor i in 1 2;do openstack --insecure server create --image <НАЗВАНИЕ_ОБРАЗА> --flavor Basic-1-1 --hint group=<ID_ГРУППЫ_СО_СВОЙСТВОМ_ANTI-AFFINITY> --nic net-id=<ID_СЕТИ> vm-anti-affinity-$i;done
ВМ будут размещены в соответствии с применённой политикой.