Описание шаблонов кластеров Azure CycleCloud

Завершено

Azure CycleCloud предоставляет развертывание кластеров HPC на основе шаблонов. По умолчанию приложение Azure CycleCloud включает несколько встроенных шаблонов для развертывания наиболее распространенных планировщиков кластеров, в том числе Slurm, PBSPro, LSF, Grid Engine и HT-Condor. Репозитории Azure CycleCloud GitHub предлагают множество проектов, относящихся к планировщику, которые можно настроить и импортировать в экземпляр Azure CycleCloud. Кроме того, вы можете реализовать подготовку на основе шаблонов для собственных встроенных планировщиков с помощью подключаемых модулей автомасштабирования CycleCloud.

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

Эти преимущества соответствуют вашим целям реализации нового кластера, размещенного в Azure, для Contoso. Чтобы оптимизировать масштаб этих преимуществ, вы решили узнать больше о формате и процессе реализации шаблонов Azure CycleCloud.

Какой формат шаблонов Azure CycleCloud?

Шаблоны — это файлы в формате INI, использующие декларативный синтаксис для описания структуры и конфигурации кластера CycleCloud, включая роли узла кластера и соответствующие связи. Шаблоны состоят из именованных разделов с заголовками, назначенными одной или несколькими парами квадратных скобок. Разделы образуют иерархию, соответствующую иерархии объектов кластера и их соответствующим параметрам. Число квадратных скобок представляет уровень в этой иерархии, число которых последовательно увеличивается на каждом уровне.

[cluster]
  [[node, nodearray]]
    [[[volume]]]
    [[[network-interface]]]
    [[[cluster-init]]]
    [[[input-endpoint]]]
    [[[configuration]]]
[environment]
[noderef]
[parameters]
  [[parameters]]
    [[[parameter]]]

Фактически, раздел [cluster] может содержать один или несколько разделов [[node]], которые могут содержать несколько [[[volume]]] разделов. Аналогичным образом в одном шаблоне в разделе [cluster] можно определить один или несколько разделов [[nodearray]], каждый из которых имеет собственный [[[configuration]]].

Заметка

Порядок разделов на одном уровне является произвольным.

Каковы основные разделы шаблона?

Шаблон состоит из следующих основных разделов:

  • в кластере: раздел [cluster] содержит определение объекта кластера Azure CycleCloud. Шаблон должен содержать по крайней мере один раздел [cluster], содержащий один или несколько разделов [[node]] и [[nodearray]], описывающих дочерние объекты этого кластера.
  • node: это представляет собой одну виртуальную машину, подготовленную платформой.
  • Nodearray: это один или несколько масштабируемых наборов виртуальных машин Azure.

Заметка

Кластеры включают узлы, обслуживающие назначенные им роли в обработке кластеризованных рабочих нагрузок. С точки зрения реализации Azure CycleCloud использует Azure Resource Manager, чтобы подготовить их как отдельные виртуальные машины Azure, так и как члены масштабируемого набора виртуальных машин. Последний представляет коллекцию идентичных настроенных виртуальных машин, которые, в отличие от виртуальных машин Azure, поддерживают горизонтальное автоматическое масштабирование. Azure CycleCloud использует масштабируемые наборы виртуальных машин для реализации nodearrays. Фактически в разделе [[node]] описываются свойства базовых, подготовленных платформой виртуальных машин, которые могут быть автономной виртуальной машиной Azure или принадлежать масштабируемому набору виртуальных машин Azure. В разделе [[nodearray]] описывается масштабируемый набор виртуальных машин Azure.

Заметка

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

  • том определяет управляемый диск Azure, который должен быть подключен к отдельным узлам кластера или узлам, формирующим узелмассив. Это дочерний объект узла или объекта NodeArray.
  • сетевой интерфейс определяет сетевой интерфейс Azure, который должен быть подключен к отдельным узлам кластера или узлам, образующим nodearray. Это дочерний объект узла или объекта массива узлов.
  • Конфигурация определяет настраиваемые свойства узла или массива узлов. Это дочерний объект узла или объекта массива узлов.
  • cluster-init определяет спецификации проекта Azure CycleCloud для применения к узлу кластера. Проект — это коллекция ресурсов, определяющих конфигурации узлов в виде спецификаций проекта. При запуске узла он автоматически настраивается путем обработки этих спецификаций. Cluster-init — это дочерний объект узла или объекта nodearray.
  • среда определяет развертывание Azure Resource Manager, которое подготавливает или изменяет ресурсы Azure для использования кластером. Это необязательный объект верхнего уровня.
  • Noderef ссылается на узел в шаблоне для выражения зависимостей ресурсов. Это необязательный объект верхнего уровня.
  • параметры позволяют переносить шаблон, позволяя использовать его для развертывания нескольких кластеров с соответствующей иерархией объектов, но разными параметрами конфигурации. Это необязательный объект верхнего уровня, но у вас есть возможность создать вложенную иерархию параметров. Для каждого параметра можно определить значение по умолчанию. Параметры также позволяют предоставлять настраиваемые переменные в кластере через веб-интерфейс CycleCloud.

Каждый раздел содержит несколько пар "ключ-значение", которые предоставляют сведения о конфигурации соответствующего объекта, представленного заголовком раздела. Например, такие сведения для nodearray могут включать ключ ImageName со значением, указывающим образ виртуальной машины Azure, который будет использоваться для своих узлов, или ключ Azure.MaxScalesetSize, указывающий максимальный допустимый размер масштабируемого набора виртуальных машин в качестве значения. Аналогичным образом разделы узла или массива узлов могут включать один или несколько разделов [[[configuration]]].

Как подготовить кластер на основе шаблона?

После определения шаблона, который планируется использовать для подготовки кластера Azure CycleCloud, можно применить любой из следующих методов реализации:

  • Используйте Azure CycleCloud CLI для импорта шаблона в приложение Azure CycleCloud, а затем используйте графический интерфейс приложения для подготовки кластера. Чтобы активировать импорт, выполните команду cyclecloud import_template -f <template_file> (где заполнитель <template_file> представляет имя файла, содержащего шаблон). Если шаблон содержит несколько определений кластера, укажите имя кластера, который требуется импортировать, ссылаясь на него в качестве значения параметра -c.
  • Используйте Azure CycleCloud CLI для импорта шаблона в приложение Azure CycleCloud, а затем для подготовки кластера. Чтобы активировать импорт, выполните команду cyclecloud import_template -t -f <template_file> (где заполнитель <template_file> представляет имя файла, содержащего шаблон). После завершения импорта выполните команду cyclecloud create_cluster. Например, чтобы создать кластер с именем lab-cluster из импортированного шаблона с именем lab-template, необходимо запустить cyclecloud create_cluster lab-template lab-cluster.
  • Используйте Azure CycleCloud CLI для подготовки кластера без явного импорта шаблона. Чтобы активировать импорт, выполните команду cyclecloud import_cluster.

Независимо от выбранного метода необходимо указать значения всех необходимых параметров во время подготовки кластера. При использовании Azure CycleCloud CLI их можно предоставить, ссылаясь на файл параметров в формате JSON.

Заметка

Файл состоит из пар "ключ-значение", где ключ представляет имя параметра. Чтобы просмотреть формат существующего кластера, используйте команду cyclecloud export_parameters <cluster_name> > params.json, где заполнитель <cluster_name> представляет имя существующего кластера.

Заметка

Прежде чем развертывать кластер на основе импортированного шаблона, необходимо также передать содержимое соответствующего проекта в хранилище Azure CycleCloud. Чтобы выполнить загрузку, используйте команду Azure CycleCloud CLI cyclecloud project upload <locker_name> (где заполнитель <locker_name> представляет имя хранилища). Чтобы получить список доступных шкафчиков, выполните команду cyclecloud locker list Azure CycleCloud CLI. Имя шкафчика упоминается в секции [[[cluster-init]]].

Заметка

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