Кластеры CycleCloud

В CycleCloud термин кластер описывает группу подключенных компьютеров (узлы), которые работают вместе как единая целостная система. Кластеры могут быть вложенными. Например, вычислительный кластер, состоящий из головного узла планировщика Grid Engine и вычислительных узлов, может смонтировать кластер BeeGFS, состоящий из нескольких серверов метаданных и хранения. Кластеры вычислений и хранилищ объединяются под одним родительским кластером или системой HPC.

Схема обзора

Узлы и массивы узлов

Кластеры в основном состоят из узлов, каждый из которых выполняет определенную роль в системе HPC. Термины узел и виртуальная машина иногда используются взаимозаменяемо, но семантически разделены в CycleCloud. Узлы, составляющие кластер, — это виртуальные машины в Azure, которые проходят процесс подготовки и настройки. Другими словами, вы создаете виртуальные машины на основе уровней служб инфраструктуры Azure. После установки программного обеспечения и выполнения действий по настройке виртуальные машины являются узлами кластера HPC.

Схема архитектуры

CycleCloud имеет два типа узлов: автономные узлы и массивы узлов. Массив узлов — это коллекция идентичных настроенных узлов. Различие между узлом и массивом узлов следует известной аналогии DevOps: «Питомцы против Скотины». Автономные узлы создаются из отдельных виртуальных машин в Azure. Массивы узлов соответствуют масштабируемым наборам виртуальных машин.

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

Шаблоны кластеров

Определите топологию или упорядочение узлов в кластере CycleCloud в текстовых шаблонах. Шаблоны выкладывают связи между узлами кластера. Если есть вложенные кластеры, шаблоны определяют связь между родительскими и дочерними кластерами. Шаблоны также определяют роль каждого узла.

Определите шаблоны кластеров в формате INI. Используйте разделы, очерченные квадратными скобками [ и ], чтобы определить кластеры, узлы и массивы узлов. Основными элементами файлов INI являются утверждения пары "ключ-значение", которые предоставляют сведения о конфигурации каждого раздела. Эти сведения о конфигурации предоставляют контекстные сведения для создания каждого узла кластера, например образа виртуальной машины для загрузки виртуальной машины и подсети для виртуальной машины. Дополнительные сведения см. в разделе "Шаблоны кластеров CycleCloud".

Подготовка и настройка узла

CycleCloud подготавливает виртуальные машины из базовых образов виртуальных машин, определенных в шаблоне кластера. Через ряд шагов, управляемых агентом CycleCloud (Jetpack) во время загрузки, он инициализирует и настраивает ОС на виртуальной машине для преобразования его в рабочий узел HPC. Эти шаги включают в себя скрипты для установки и настройки программного обеспечения для планирования и завершающую конфигурацию для монтирования файловой системы.

Схема подготовки узла

Вы можете управлять настройкой узлов при загрузке, создав пользовательский проект cluster-init. Проект содержит скрипты и другие файлы, необходимые для настройки узла, разделенного на спецификации различных типов ролей в кластере. Например, проект планировщика партийных заданий, такого как Slurm, состоит минимум из трех спецификаций: одна для головных узлов планировщика, одна для вычислительных узлов и одна для логин-узлов. Дополнительные сведения о проектах CycleCloud.

В определении узла вы ссылаетесь на спецификации, которые должны выполняться на этом узле. Jetpack использует эти спецификации при загрузке для подготовки узла к своей роли в кластере. Файлы спецификаций поступают из учетной записи Blob-хранилища пользователя и перед запуском узлов размещаются в учетной записи хранения с сервера приложений CycleCloud.

Замечание

Спецификации встроенных шаблонов (например, типа кластера Slurm) хранятся в GitHub. CycleCloud автоматически загружает их в учетную запись хранения пользователя при запуске узла.

При загрузке узла Jetpack скачивает спецификации, определенные в секции [[[cluster-init]]], и обрабатывает их, чтобы привести узел к рабочему состоянию (например, чтобы он стал вычислительным узлом).

Оркестрация узлов

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

CycleCloud использует этот элемент Service Discovery для отношений сервера-клиента файловой системы.

Дополнительные сведения