Кластеры CycleCloud
В CycleCloud термин кластер используется для описания группы подключенных компьютеров (узлов), работающих вместе как единая система. Кластеры могут быть вложенными; Например, вычислительный кластер, состоящий из головного узла планировщика Grid Engine и вычислительных узлов, может подключить кластер BeeGFS, состоящий из нескольких серверов метаданных и серверов хранения, при этом вычислительные кластеры и кластеры хранения объединялись в одном родительском кластере HPC или системе.
Узлы и массивы узлов
Кластеры по сути состоят из узлов, каждый из которых выполняет определенную роль в системе HPC. Термины узел и виртуальная машина иногда используются взаимозаменяемо, но семантически разделены в CycleCloud. Узлы , составляющие кластер, по сути являются виртуальными машинами в Azure, которые завершили процесс подготовки и настройки. Другими словами, виртуальные машины подготавливаются на уровнях служб инфраструктуры Azure, а их конечные состояния являются узлами кластера HPC после выполнения шагов по установке и настройке программного обеспечения.
В CycleCloud есть два отдельных воплощения узлов. Первый — как автономный узел, а второй — как nodearray, который представляет собой коллекцию одинаково настроенных узлов (отличие узла от nodearray соответствует аналогии DevOps Pets и Крупного рогатого скота по духу). В целом, но это не совсем говоря, автономные узлы создаются из отдельных виртуальных машин в Azure, а nodearrays сопоставляются с масштабируемыми наборами виртуальных машин (VMSS).
Однако существуют важные различия между узлами и масштабируемыми наборами виртуальных машин. Основной из них заключается в том, что один узел может состоять из нескольких масштабируемых наборов виртуальных машин. Это позволяет создавать один узел из виртуальных машин разных размеров или даже разных семейств виртуальных машин. Единственное ограничение заключается в том, что все узлы в массиве узлов выполняют одну и ту же роль в кластере, например предоставляя ресурсы одной очереди планировщика.
Шаблоны кластера
Топология или порядок упорядочения узлов в кластере CycleCloud определяются в текстовых шаблонах, в которых размещаются связи между узлами кластера, а в случае вложенных кластеров — в отношениях "родители-потомки" кластеров. Шаблоны также предоставляют средства определения роли, которые играют каждый узел.
Шаблоны кластеров определяются в формате INI. Разделы, размеченные с помощью квадратных [
]
скобок, используются для определения кластеров, узлов и узлов. Основным элементом INI-файлов являются утверждения пар "ключ-значение", которые предоставляют сведения о конфигурации каждого раздела. Эти сведения о конфигурации предоставляют контекстную информацию, используемую для создания каждого узла кластера, из образа виртуальной машины, используемого для загрузки виртуальной машины, в подсети, в котором должна быть подготовлена виртуальная машина.
Дополнительные сведения о шаблонах кластеров CycleCloud
Подготовка и настройка узла
CycleCloud подготавливает виртуальные машины из базовых образов виртуальных машин, определенных в шаблоне кластера, и с помощью ряда шагов, управляемых агентом CycleCloud (Jetpack) в процессе загрузки, инициализирует и настраивает ОС на виртуальной машине, чтобы преобразовать ее в рабочий узел HPC. Эти действия варьируются от сценариев для установки и настройки программного обеспечения для планирования до настройки последней мили для подключения файловой системы.
В разделе конфигурации каждого узла определены спецификации cluster-init — спецификации, предоставляемые каждой загрузочной виртуальной машине, которая используется для подготовки к определенной роли в кластере. CycleCloud использует Chef в качестве платформы автоматизации инфраструктуры для подготовки и настройки каждого узла. По сути, каждая спецификация cluster-init сопоставляется с одной из нескольких ролей Chef и (или ) рецептов поваренной книги , которые необходимо выполнить на загрузочной виртуальной машине.
CycleCloud использует Chef в автономном режиме, который не зависит от централизованного сервера Chef. Вместо этого весь набор поваренной книги Chef, необходимые для подготовки каждой виртуальной машины, скачиваются из учетной записи хранения Azure, принадлежащей пользователю на этапе загрузки виртуальной машины. Этот набор поваренной книги кэшируются с сервера приложений CycleCloud в учетную запись хранения на этапе создания кластера.
После скачивания этих поваренных книг Chef обрабатывает список рецептов, определенных в спецификациях cluster-init узла, запуская этап подготовки и настройки, который преобразует виртуальную машину в рабочий узел HPC.
Спецификации создаются как логические коллекции, называемые Проектами. Например, проект для планировщика пакетной службы, например Slurm, состоит как минимум из двух спецификаций: одна для головных узлов планировщика, а другая — для вычислительных узлов. Дополнительные сведения о проектах CycleCloud
Оркестрация узлов
В зависимости от планировщика и служб, используемых в кластере, CycleCloud иногда требуется организовать этап подготовки узлов в кластере путем координации различных узлов. Например, некоторые планировщики требуют, чтобы каждый вычислительный узел регистрился в управляющей программе планировщика, что не только требует, чтобы вычислительные узлы знали об адресе головного узла, но и могли распознавать, что головной узел полностью подготовлен, и ожидать, если это не так.
Этот элемент обнаружения служб также используется для связей между сервером и клиентом файловой системы и является компонентом CycleCloud.