Метаданные хост-агрегатов

Хост-агрегаты в 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 — это может вызвать конфликты с зоной по умолчанию

  • Узел может находиться только в одной зоне доступности, но может входить в несколько обычных хост-агрегатов