Описание интеграции и автомасштабирования планировщика Azure CycleCloud

Завершено

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

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

Какова роль Azure CycleCloud в автомасштабировании кластера?

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

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

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

При более низком пороговом значении 0 создание кластера приводит только к подготовке головного узла планировщика. Однако при обнаружении очередных заданий планировщик инициирует подготовку вычислительных узлов, необходимых для выполнения соответствующей рабочей нагрузки, до определенного предела. Для поддержки слабо связанных или параллельных заданий, где отдельные задачи выполняются независимо друг от друга, задания начинают выполняться сразу после того, как первый узел становится доступным. Для тесно связанных заданий, таких как использование функций интерфейса передачи сообщений (MPI), время ожидания больше в зависимости от степени зависимостей интернода. После того как очередь заданий пуста в течение времени, превышающего допустимое время простоя, вычислительные узлы начинают автостопироваться, а кластер снова состоит из головного узла планировщика.

Примечание.

Основные понятия, описанные в этом уроке, являются общими для планировщиков. Однако детали реализации зависят от конкретного планировщика. Подробные сведения о каждой реализации см. в документации по отдельным планировщикам.

Интеграция планировщиков с автомасштабированием Azure CycleCloud

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

Схема высокоуровневой архитектуры Azure CycleCloud.

Библиотека автомасштабирования Azure CycleCloud — это проект с открытым исходным кодом, размещенный в GitHub, который позволяет вспомогательным пользователям Python упростить разработку автомасштабирования для любого планировщика, развернутого в Azure. Вспомогательные методы используют REST API Azure CycleCloud для координации подготовки ресурсов Azure. Проект использует Python 3 и имеет множество зависимостей Python. Но его основные функциональные возможности основаны на клиентской библиотеке Python Azure CycleCloud. Автомасштабирование интегрируется с головными узлами планировщика, которые отслеживают очереди заданий. Автомасштабирование увеличивает или уменьшает число вычислительных узлов, взаимодействуя с REST API автомасштабирования, который выполняется на сервере приложений Azure CycleCloud.

Калькулятор спроса отвечает за оценку требований к ресурсам на основе вычислительного узла и данных заданий, собранных планировщиком. Эта оценка учитывает ограничения вычислительных ресурсов и сети, например максимальный размер кластера или ограничения, связанные с InfiniBand. В результате требования к ресурсам преобразуются в запрос на подготовку или отзыв виртуальных машин Azure определенного размера и конфигурации. Библиотека автомасштабирования передает эти запросы в REST API Azure CycleCloud, который затем передает их через оркестратор в Azure Resource Manager.

Примечание.

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