Метаданные хост-агрегатов¶
Хост-агрегаты в KeyStack позволяют группировать вычислительные узлы по определённым характеристикам и управлять размещением виртуальных машин с помощью метаданных (пар ключ-значение). Каждый узел может входить в несколько агрегатов, каждый агрегат может иметь несколько пар ключ-значение, и одна пара может быть назначена нескольким агрегатам.
Метаданные используются планировщиком Nova для направления виртуальных машин на подходящие узлы. В этом разделе описаны доступные типы метаданных, их назначение и влияние на систему.
Зона доступности¶
Зона доступности определяет логическое разделение региона на сегменты. В отличие от обычных хост-агрегатов, зона доступности видна пользователям и позволяет им выбирать место размещения виртуальных машин.
Параметры:
Ключ:
availability_zoneЗначение: строка с именем зоны (например,
az1,az2). Не должна содержать символ «:».
Влияние на систему:
Хост-агрегат становится видимым для пользователей как зона доступности
Пользователи могут указать зону при создании виртуальной машины
Узел может находиться только в одной зоне доступности
Избегайте использования имени
novaдля зоны — это зарезервированное имя зоны по умолчанию
Фильтрация по проекту¶
Ограничивает доступ к хост-агрегату для определённых проектов с помощью фильтра AggregateMultiTenancyIsolation. Обеспечивает изоляцию ресурсов между проектами.
Параметры:
Ключ:
filter_tenant_idилиfilter_tenant_id<N>(где N — число от 0 для нескольких проектов)Значение: UUID проекта
Влияние на систему:
Только указанные проекты могут размещать виртуальные машины на узлах этого агрегата
Гарантирует минимально-необходимые ресурсы для проекта (например, для выделения ресурсов конкретной команде или подразделению)
Для работы с несколькими проектами используйте суффиксы:
filter_tenant_id0,filter_tenant_id1и т.д.
Общие метаданные для характеристик узлов¶
Администраторы могут задавать произвольные пары ключ-значение для группировки узлов по характеристикам. Эти метаданные должны соответствовать дополнительным спецификациям (extra specs) во флейворах или метаданным образов.
Параметры:
Ключ: строка, описывающая характеристику (например,
ssd,gpu,high_memory)Значение: строка, соответствующая значению в extra specs флейвора или метаданных образа (например,
true,false,v1,v2)
Влияние на систему:
Виртуальные машины с соответствующими метаданными во флейворе или образе размещаются только на узлах из агрегата с совпадающими ключами и значениями
Используется для логической группировки узлов, например, для выделения узлов с SSD-дисками, GPU или высокой производительностью
Позволяет размещать высокопроизводительные приложения на определённых узлах
Примечание
Для работы фильтра AggregateInstanceExtraSpecsFilter ключи во флейворе должны использовать префикс aggregate_instance_extra_specs: (например, aggregate_instance_extra_specs:ssd=true)
Характеристики CPU и памяти¶
Указывает требования к политике использования CPU или размеру страниц памяти для виртуальных машин. Задаётся через extra specs флейвора и связывается с агрегатом.
Параметры:
- Ключи:
hw:cpu_policy— для выделенных или общих ядерhw:mem_page_size— для размера страниц памяти
- Значения:
Для
hw:cpu_policy:dedicatedилиsharedДля
hw:mem_page_size:small,large,anyили числовое значение (например,2048)
Влияние на систему:
Виртуальные машины с соответствующими extra specs размещаются на узлах, поддерживающих указанную политику CPU или размер страниц памяти
Требует включения фильтра
AggregateInstanceExtraSpecsFilterИспользуется для высокопроизводительных приложений (базы данных, HPC)
Совместимость операционных систем¶
Указывает совместимость узлов с определённой операционной системой или её версией. Обеспечивает размещение виртуальных машин на узлах, поддерживающих конкретные ОС.
Параметры:
- Ключи:
os_distro— тип ОСos_version— версия ОС
- Значения:
Для
os_distro: например,ubuntu,centosДля
os_version: например,20.04,8.0
Влияние на систему:
Виртуальные машины размещаются на узлах, совместимых с указанной ОС или версией
Полезно для разработки, тестирования или специфичных приложений
Требует включения фильтра
AggregateInstanceExtraSpecsFilter
Множитель веса для планировщика¶
Устанавливает множитель веса для управления приоритетом размещения виртуальных машин на узлах агрегата.
Параметры:
Ключ:
<resource>_weight_multiplier(например,ram_weight_multiplier,cpu_weight_multiplier)- Значение: число с плавающей точкой:
Положительное значение — увеличивает приоритет узлов
Отрицательное значение — снижает приоритет узлов
0— нейтральный вес
Влияние на систему:
Влияет на выбор узлов планировщиком при распределении ресурсов
Полезно для балансировки нагрузки
Например,
ram_weight_multiplier=2.0увеличивает вероятность выбора узлов этого агрегата для виртуальных машин с большими требованиями к памяти
Специализированные возможности¶
SR-IOV и NUMA-топологии¶
Для узлов с поддержкой SR-IOV (Single Root I/O Virtualization) или NUMA (Non-Uniform Memory Access) метаданные указывают наличие таких возможностей.
Параметры:
Ключи:
sriov_enabled,numa_nodesЗначения:
true/falseили числовое значение (например,2для количества NUMA-узлов)
Влияние на систему:
Обеспечивает размещение виртуальных машин на узлах с поддержкой SR-IOV для высокопроизводительных сетевых приложений
Оптимизирует доступ к памяти при использовании NUMA-топологии
Требует включения соответствующих фильтров (например,
PciPassthroughFilterдля SR-IOV)
Поддержка лицензирования¶
Метаданные могут указывать узлы, лицензированные для определённого ПО.
Параметры:
Ключ:
license_typeЗначение: тип лицензии (например,
windows,oracle)
Влияние на систему:
Размещение виртуальных машин только на узлах с соответствующей лицензией
Помогает соблюдать лицензионные соглашения
Управление затратами на лицензирование
Управление энергопотреблением¶
Метаданные могут указывать на энергоэффективные узлы или узлы с определёнными характеристиками энергопотребления.
Параметры:
Ключ:
power_efficientЗначение:
true/falseилиlow/high
Влияние на систему:
Направление менее критичных нагрузок на энергоэффективные узлы
Снижение общего энергопотребления
Требует интеграции с фильтром
AggregateInstanceExtraSpecsFilter
Пользовательские метаданные¶
Администраторы могут задавать любые пользовательские ключи для логической группировки узлов.
Параметры:
Ключ: произвольная строка (например,
type,location,department)Значение: произвольная строка (например,
cluster,datacenter1,teamA)
Влияние на систему:
Не влияет напрямую на планировщик, если не используется в фильтрах
Помогает администраторам организовать узлы
Может использоваться для документации или интеграции с внешними системами
Ограничения и важные замечания¶
Для работы фильтра
AggregateInstanceExtraSpecsFilterключи во флейворе должны использовать префиксaggregate_instance_extra_specs:Метаданные образа должны соответствовать допустимым свойствам образа
При несовпадении метаданных флейвора или образа с метаданными хост-агрегата прямое указание хост-агрегата при создании виртуальной машины приведёт к ошибке
Не используйте имя зоны доступности
nova— это может вызвать конфликты с зоной по умолчаниюУзел может находиться только в одной зоне доступности, но может входить в несколько обычных хост-агрегатов