Поделиться через


Узлы и пулы в службе пакетной обработки Azure

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

Узлы

Узел — это виртуальная машина Azure или облачной службы, назначенная для обработки определенной рабочей нагрузки вашего приложения. Размер узла определяет количество ядер ЦП, объем памяти и размер локальной файловой системы, которые выделяются узлу.

Из узлов Windows или Linux можно создавать пулы с помощью Облачных служб Azure, образов из Azure Marketplace для виртуальных машин или самостоятельно подготовленных пользовательских образов.

Узлы могут запускать любой исполняемый файл или скрипт, поддерживаемый операционной средой узла. исполняемые файлы или скрипты включают в себя *.exe, *.cmd, *.bat и скрипты PowerShell (для Windows), а также двоичные файлы, скрипты оболочки и скрипты Python (для Linux).

Все вычислительные узлы в Batch также включают:

По умолчанию узлы могут взаимодействовать друг с другом, но они не могут взаимодействовать с виртуальными машинами, которые не являются частью одного пула. Чтобы узлы могли безопасно обмениваться данными с другими виртуальными машинами или локальной сетью, можно подготовить пул в подсети виртуальной сети Azure. При этом доступ к узлам можно получить через общедоступные IP-адреса. Batch создает эти общедоступные IP-адреса, которые могут изменяться в течение времени существования пула. Вы также можете создать пул со статическими общедоступными IP-адресами , которые вы управляете, что гарантирует, что они не изменяются неожиданно.

Пулы

Пул — это коллекция узлов, на которых выполняется приложение.

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

Каждому узлу, который добавляется в пул, присваивается уникальное имя и IP-адрес. При удалении узла из пула будут потеряны любые изменения, внесенные в операционную систему или файлы. Имя и IP-адрес удаленного узла освобождаются для использования в других целях. Когда узел покидает пул, срок его существования истекает.

Пул может использоваться только учетной записью Batch, в которой он был создан. Учетная запись Batch может создавать множество пулов для удовлетворения требований к ресурсам приложений, которые необходимо выполнить.

Пул может создаваться вручную или автоматически пакетной службой при назначении работы для выполнения. При создании пула можно указать следующие атрибуты:

Внимание

Для пакетных учетных записей установлена стандартная квота, которая ограничивает количество ядер в учетной записи Batch. Число ядер соответствует количеству вычислительных узлов. Дополнительные сведения о квотах по умолчанию и инструкцию по увеличению квоты см. в статье Квоты и ограничения пакетной службы Azure. Если пул не достигает целевого числа узлов, это может быть связано с основной квотой.

Название и версия операционной системы

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

Конфигурации

Конфигурация виртуальной машины

Конфигурация виртуальной машины указывает, что пул состоит из виртуальных машин Azure. Эти виртуальные машины могут быть созданы из образов Windows или Linux.

Агент узла пакетной службы — это программа, которая выполняется на каждом узле в пуле и предоставляет интерфейс контроля и управления между узлом и пакетной службой. Существуют различные реализации агента узла для различных операционных систем, известные как SKU. Создавая пул, основанный на конфигурации виртуальных машин, необходимо указать не только размер узлов и источник образов, которые использовались для их создания, но и ссылку на образ виртуальной машины и номер SKU агента узла пакетной службы для установки на узлах. Дополнительные сведения об указании этих свойств пула см. Настройка вычислительных узлов Linux в пулах Batch Azure. При необходимости можно подключить один или несколько пустых дисков данных к виртуальным машинам в пуле, созданных на основе образов Marketplace, или включить диски данных в пользовательские образы, используемые для создания виртуальных машин. При добавлении дисков данных необходимо подключить и отформатировать эти диски на виртуальной машине, чтобы использовать их.

Номера SKU агентов узлов

При создании пула вам необходимо выбрать соответствующий nodeAgentSkuId в зависимости от ОС базового образа вашего VHD. Вы можете получить отображение доступных SKU ID агентa узла на ссылки их ОС образа, вызвав операцию Список поддерживаемых SKU агентa узла.

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

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

Поддержка контейнеров в пулах виртуальных машин

При создании пула конфигурации виртуальной машины с помощью Batch API можно настроить его для выполнения задач в контейнерах Docker. В настоящее время вы должны создать пул, используя образ, поддерживающий контейнеры Docker. Используйте Windows Server 2016 Datacenter с образами контейнеров из Azure Marketplace или укажите пользовательский образ виртуальной машины, включающий Docker Community или Enterprise Edition и все необходимые драйверы. Параметры пула должны включать конфигурацию контейнера, которая копирует образы контейнеров на виртуальные машины при создании пула. Задачи, выполняющиеся в пуле, могут ссылаться на образы контейнеров и параметры запуска контейнеров.

См. дополнительные сведения о выполнении контейнерных приложений Docker в пакетной службе Azure.

Тип узла и целевой узел

При создании пула можно указать нужные типы узлов и целевое количество узлов каждого типа. Узлы бывают двух типов:

  • Выделенные узлы. Выделенные вычислительные узлы зарезервированы для рабочих нагрузок. Они обычно дороже, чем точечные узлы, но они гарантированно никогда не превысят.
  • Найти узлы. Узлы типа Spot используют избыточные мощности Azure для выполнения ваших пакетных рабочих нагрузок. Час работы точечных узлов дешевле, чем у выделенных узлов, и они позволяют выполнять рабочие нагрузки, требующие значительной вычислительной мощности. Для получения дополнительной информации см. Использование Spot ВМ с Batch.

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

Вы можете иметь как Spot узлы, так и выделенные вычислительные узлы в одном пуле. Каждый тип узла имеет свой параметр целевого значения, в котором можно указать желаемое количество узлов.

Число вычислительных узлов называется целевым, так как в некоторых случаях пул может не достигнуть желаемого числа узлов. Например, пул может не достичь цели, если сначала будет достигнут целевой объем ядер для вашей учетной записи пакетной службы. Кроме того, пул может не достичь целевого объекта, если вы применили к пулу формулу автоматического масштабирования, которая ограничивает максимальное количество узлов.

Замечание

Когда вычислительные узлы пакетной обработки прерываются, они сначала переходят в unusable состояние. Через некоторое время эти вычислительные узлы будут переходить на отражение preempted состояния. Пакетная служба автоматически активирует функцию Попробовать и восстановить, чтобы с максимальными усилиями восстанавливать вытесненные spot-экземпляры и поддерживать целевое количество экземпляров.

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

Размер узла

При создании пула пакетной службы Azure вы можете использовать любые семейства и размеры виртуальной машины, доступные в Azure. Azure предлагает ряд размеров виртуальных машин для разных рабочих нагрузок, включая специализированные размеры HPC или размеры с поддержкой GPU. Размеры виртуальных машин узла можно выбрать только во время создания пула. Другими словами, после создания пула его размер виртуальной машины не может быть изменен.

Дополнительные сведения см. в статье Выбор размера виртуальной машины для вычислительных узлов в пуле пакетной службы Azure.

Политика автоматического масштабирования

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

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

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

Формула масштабирования может использовать следующие метрики.

  • Метрики времени — основываются на статистических данных, которые собираются каждые 5 минут за указанное число часов.
  • Метрики ресурсов — зависят от показателей загрузки ЦП, использования пропускной способности и памяти, а также количества узлов.
  • Метрики задач зависят от состояния задачи: Активная (в очереди), Выполняется или Завершена.

Если при автоматическом масштабировании уменьшается количество вычислительных узлов в пуле, необходимо учитывать способ обработки текущих выполняемых задач. Чтобы учесть это, Batch предоставляет опцию деалокации узлов, которую можно добавить в формулы. Например, можно указать, чтобы выполняемые задачи сразу останавливались, а затем помещались в очередь на выполнение на другом узле или завершались до удаления узла из пула. Установка опции высвобождения узла как taskcompletion или retaineddata предотвращает операции изменения размера пула до тех пор, пока не будут завершены все задачи, либо когда истекут все сроки хранения задач соответственно.

Подробные сведения об автоматическом масштабировании приложения см. в статье Автоматическое масштабирование вычислительных узлов в пуле пакетной службы Azure.

Подсказка

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

Политика планирования задач

Параметр конфигурации Максимальное число заданий на узел определяет максимальное число задач, которые могут параллельно выполняться на каждом вычислительном узле пула.

Конфигурация по умолчанию указывает, что за раз на узле выполняется одна задача, но существуют сценарии, в которых полезно выполнять две или несколько задач одновременно на узле. См. пример сценария в статье о параллельных задачах узла о том, как можно воспользоваться несколькими задачами на узел.

Вы также можете выбрать тип заполнения, который определяет, будет ли Batch равномерно распределять задачи между всеми узлами в пуле или назначать каждому узлу максимально возможное число задач, прежде чем назначать задачи следующему узлу.

Состояние обмена данными

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

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

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

Начать задачи

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

Пакеты приложений

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

Дополнительные сведения о развертывании ваших приложений на узлах пакетной службы с помощью пакетов приложений см. в Развертывание приложений на вычислительных узлах с помощью пакетов приложений Batch.

конфигурация виртуальной сети и брандмауэра;

При создании пула вычислительных узлов в службе Azure Batch можно связать этот пул с подсетью виртуальной сети Azure. Чтобы использовать виртуальную сеть Azure, API клиента Batch должен использовать аутентификацию Microsoft Entra. Поддержка пакетной службы Azure для Microsoft Entra ID задокументирована в Проверка подлинности решений пакетной службы с помощью Active Directory.

Требования к виртуальной сети

Дополнительные сведения о настройке пула пакетной службы в виртуальной сети (VNet) см. в статье Создание пула виртуальных машин с вашей виртуальной сетью.

Подсказка

Чтобы гарантировать, что общедоступные IP-адреса, используемые для доступа к узлам, не изменяются, можно создать пул с заданными общедоступными IP-адресами, которыми вы управляете.

Время существования пула и вычислительного узла

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

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

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

Смешанный подход обычно используется для обработки постоянной нагрузки, интенсивность которой изменяется. Вы можете создать пул для отправки нескольких заданий и изменять количество узлов в нем в зависимости от текущей нагрузки. Вы можете делать это реактивно, по мере изменения текущей нагрузки, или проактивно, если нагрузка может быть спрогнозирована. Дополнительные сведения см. в разделе Политика автоматического масштабирования.

Автоматические пулы

Автоматический пул — это пул, который служба пакетной службы создает при отправке задания, а не создается явно перед заданиями, которые будут выполняться в пуле. Служба Batch управляет жизненным циклом автопула в соответствии с характеристиками, которые вы указываете. Чаще всего эти пулы также автоматически удаляются после завершения заданий.

Безопасность с использованием сертификатов

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

Для добавления сертификата к учетной записи Batch используйте операцию добавления сертификата в REST API Batch или метод CertificateOperations.CreateCertificate в Batch .NET. Затем можно будет связать сертификат с новым или существующим пулом.

Если к пулу привязан сертификат, пакетная служба устанавливает этот сертификат на каждом узле пула. Пакетная служба устанавливает нужные сертификаты при запуске узла до начала выполнения каких-либо задач (в том числе задач запуска и задач диспетчера заданий).

При добавлении сертификатов в существующий пул необходимо перезагрузить его вычислительные узлы, чтобы применить к ним этот сертификат.

Следующие шаги

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