Учёт нагрузки от старта ВМ при эвакуации

Модуль DRS при эвакуации или автоматическом старте виртуальных машин теперь учитывает дополнительную нагрузку, которая возникает в процессе запуска ВМ. Это позволяет избежать размещения новых виртуальных машин на узлах, которые уже испытывают высокую нагрузку, и обеспечивает более равномерное распределение ресурсов в кластере.

Как это работает

Ранее при выборе гипервизора для размещения виртуальной машины планировщик Nova не учитывал пиковую нагрузку, которая возникает непосредственно во время запуска ВМ. Процесс старта виртуальной машины создаёт временную, но значительную нагрузку на процессор и оперативную память узла. Если на момент принятия решения гипервизор был недостаточно загружен, но уже запускал другие ВМ, это могло привести к перегрузке.

Теперь планировщик Nova использует компонент Prometheus Weigher, который получает актуальные метрики загрузки узлов из системы мониторинга. При выборе гипервизора для размещения ВМ учитываются текущие показатели использования процессора и оперативной памяти, включая нагрузку от уже запускающихся на этом узле виртуальных машин. Это позволяет планировщику принимать более обоснованные решения и размещать ВМ на наименее загруженных узлах.

Prometheus Weigher рассчитывает нагрузку по следующим формулам:

  • Загрузка процессора — вычисляется время простоя (idle time) на каждое ядро процессора. Чем выше значение idle time, тем ниже фактическая загрузка узла и тем предпочтительнее он для размещения новых ВМ.

  • Использование памяти — рассчитывается как отношение доступной памяти к общему объёму: node_memory_MemAvailable_bytes / node_memory_MemTotal_bytes. Узлы с большим объёмом доступной памяти получают более высокий приоритет.

Конфигурация

Для включения учёта нагрузки от старта ВМ необходимо активировать Prometheus Weigher в конфигурации Nova Scheduler. Настройка выполняется через параметры развёртывания Kolla-Ansible.

В конфигурационном файле Nova Scheduler добавьте следующие параметры в секцию [filter_scheduler]:

[filter_scheduler]
enabled_filters = {{ nova_enabled_filters }}
ram_weight_multiplier = 4
cpu_weight_multiplier = 4
weight_classes = nova.scheduler.weights.all_weighers
prometheus_cpu_weight_multiplier = 3.0
prometheus_ram_weight_multiplier = 3.0
prometheus_endpoint = {{ internal_protocol }}://admin:{{ prometheus_password }}@{{ kolla_internal_fqdn }}:{{ victoriametrics_vmselect_port }}/api/v1/query

Параметры конфигурации:

  • weight_classes — указывает планировщику использовать все доступные weigher-компоненты, включая Prometheus Weigher.

  • prometheus_cpu_weight_multiplier — множитель веса для метрик загрузки процессора. Значение 3.0 используется по умолчанию. Чем выше значение, тем сильнее влияние загрузки процессора на решение о размещении ВМ.

  • prometheus_ram_weight_multiplier — множитель веса для метрик использования оперативной памяти. Значение 3.0 используется по умолчанию. Работает аналогично параметру для процессора.

  • prometheus_endpoint — адрес API системы мониторинга, откуда Prometheus Weigher получает метрики загрузки узлов.

Примечание

Уточните у команды DevOps оптимальные значения параметров prometheus_cpu_weight_multiplier и prometheus_ram_weight_multiplier для вашей инфраструктуры. Эти значения могут быть скорректированы в зависимости от характера нагрузки и требований к распределению ресурсов.

Конфигурация с mTLS

Если в вашей инфраструктуре включена взаимная аутентификация по TLS для внутренних соединений, дополнительно укажите пути к сертификатам:

[filter_scheduler]
enabled_filters = {{ nova_enabled_filters }}
ram_weight_multiplier = 4
cpu_weight_multiplier = 4
weight_classes = nova.scheduler.weights.all_weighers
prometheus_cpu_weight_multiplier = 3.0
prometheus_ram_weight_multiplier = 3.0
ssl_ca_file = {{ openstack_cacert }}
ssl_cert_file = /etc/nova/certs/nova-cert.pem
ssl_key_file = /etc/nova/certs/nova-key.pem
prometheus_endpoint = {{ internal_protocol }}://admin:{{ prometheus_password }}@{{ kolla_internal_fqdn }}:{{ victoriametrics_vmselect_port }}/api/v1/query

Параметры ssl_ca_file, ssl_cert_file и ssl_key_file указывают пути к сертификатам, необходимым для установления защищённого соединения с системой мониторинга.

Применение конфигурации

После внесения изменений в конфигурацию перезапустите сервис Nova Scheduler, чтобы новые параметры вступили в силу.