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

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

Узлы

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

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

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

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

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

Пулы

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

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

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

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

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

Важно!

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

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

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

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

В пакетной службе доступны два типа конфигураций пула.

Важно!

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

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

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

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

Конфигурация облачных служб

Предупреждение

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

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

Доступные операционные системы для пулов конфигураций Облачных служб перечислены в таблице совместимости выпусков гостевых ОС Azure и пакетов SDK, а доступные размеры вычислительных узлов приведены в разделе Размеры для Облачных служб. При создании пула, содержащего узлы Облачных служб, необходимо указать размер узла и соответствующее семейство ОС, которое определяет версии .NET, устанавливаемые вместе с операционной системой. Облачные службы развертываются в Azure быстрее, чем виртуальные машины под управлением Windows. Если вам нужны пулы вычислительных узлов Windows, вы можете обнаружить, что облачные службы предоставляют преимущества производительности с точки зрения времени развертывания.

Как и в случае с рабочими ролями в Облачных службах можно указать версию ОС. Мы рекомендуем указывать в качестве версии ОС значение Latest (*), тогда узлы будут обновляться автоматически, и вам не потребуются дополнительные действия при выходе новых версий. Выбор конкретной версии ОС обычно нужен только для гарантии совместимости приложений. Это позволит протестировать обратную совместимость перед установкой обновлений. После успешной проверки вы можете обновить версию ОС для пула и установить новый образ ОС. Все выполняемые задачи будут прерваны и повторно поставлены в очередь.

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

При создании пула вам необходимо выбрать соответствующий nodeAgentSkuId в зависимости от ОС базового образа вашего VHD. Вы можете получить сопоставление идентификаторов SKU доступных агентов узлов со ссылками на образы на ОС, вызвав операцию List Supported Node Agent SKUs (Вывод списка поддерживаемых SKU агентов узлов).

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

Узнайте, как использовать Коллекцию вычислений Azure для создания пользовательского пула.

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

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

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

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

Тип узла и целевое количество узлов

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

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

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

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

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

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

Размер узла

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

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

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

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

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

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

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

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

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

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

Совет

Для максимально эффективного использования ресурсов укажите значение "ноль" для целевого количества узлов на момент завершения задания, но позвольте текущим задачам завершиться нормально.

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

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

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

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

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

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

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

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

Задачи запуска

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

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

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

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

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

При подготовке пула вычислительных узлов в пакетной службе можно связать его с подсетью виртуальной сети Azure. Для использования виртуальной сети Azure API клиента пакетной службы должен использовать проверку подлинности Azure Active Directory (AD). Поддержка Azure AD пакетной службой Azure описана в статье Аутентификация решений пакетной службы с помощью Active Directory.

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

Дополнительные сведения о настройке пула пакетной службы в виртуальной сети см. в статье Create an Azure Batch pool in a virtual network (Создание пула пакетной службы Azure в виртуальной сети).

Совет

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

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

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

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

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

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

Автопулы

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

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

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

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

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

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

Дальнейшие действия