Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Пакеты приложений могут упростить код в решении на основе Azure Batch и упростить управление приложениями, выполняемыми вашими задачами. С помощью пакетов приложений можно отправлять и управлять несколькими версиями выполняемых задач приложений, включая их вспомогательные файлы. Затем вы можете автоматически развернуть одно или несколько этих приложений на вычислительных узлах в пуле.
API для создания и управления пакетами приложений являются частью библиотеки Batch Management .NET. API-интерфейсы для установки пакетов приложений на вычислительном узле являются частью библиотеки Пакетной службы .NET . Сопоставимые возможности имеются в доступных пакетных API для других языков программирования.
В этой статье объясняется, как отправлять пакеты приложений и управлять ими на портале Azure. В нем также показано, как установить их на вычислительных узлах пула с библиотекой Batch .NET.
Требования к пакету приложения
Чтобы использовать пакеты приложений, необходимо связать учетную запись хранения Azure с учетной записью Batch.
Существуют ограничения на количество приложений и пакетов приложений в учетной записи пакетной службы и максимальный размер пакета приложения. Дополнительные сведения см. в разделе о квотах и ограничениях пакетной службы.
Примечание.
Пулы пакетной службы, созданные до 5 июля 2017 г., не поддерживают пакеты приложений (если только они не были созданы после 10 марта 2016 г. с помощью конфигурации облачных служб). Функция пакетов приложений, описанная здесь, заменяет функцию пакетных приложений, доступную в предыдущих версиях службы.
Общие сведения о приложениях и пакетах приложений
В пакете Azure Batch приложение относится к набору двоичных файлов с версиями, которые можно автоматически скачать на вычислительные узлы в пуле. Приложение содержит один или несколько пакетов приложений, представляющих разные версии приложения.
Каждый пакет приложения — это файл .zip, содержащий двоичные файлы приложения и все вспомогательные файлы. Поддерживается только формат .zip.
Пакеты приложений можно указывать на уровне пула или задачи.
Пакеты приложений пула развертываются на каждом узле в пуле. Приложения развертываются, когда узел присоединяется к пулу, а также при его перезагрузке или повторном образе диска.
Пакеты приложений для пула подходят, если все узлы пула выполняют задачи задания. При создании пула можно указать один или несколько пакетов приложений. Вы также можете добавить или обновить пакеты существующего пула. Чтобы установить новые пакеты в существующий пул, необходимо перезапустить его узлы.
Пакеты приложений задач развертываются только на вычислительном узле, запланированном для выполнения задачи, непосредственно перед выполнением командной строки задачи. Если указанный пакет приложения и версия уже находится на узле, он не развертывается и используется существующий пакет.
Пакеты приложений задач полезны в средах общего пула, где различные задания выполняются в одном пуле, а пул не удаляется при завершении задания. Если задание имеет меньше задач, чем узлы в пуле, пакеты приложений задач могут свести к минимуму передачу данных, так как приложение развертывается только на узлах, выполняющих задачи.
Другие сценарии, которые могут выиграть от применения пакетов для задач, включают задания, запускающие крупное приложение, но только для нескольких задач. Например, приложения для задач могут быть полезны для трудоемкого этапа предварительной обработки или задачи слияния.
При использовании пакетов приложений в задаче запуска пула не нужно указывать длинный список отдельных файлов ресурсов для установки их на узлы. Вам не нужно вручную управлять несколькими версиями файлов приложения в службе хранилища Azure или на узлах. Вам не нужно беспокоиться о создании URL-адресов SAS для предоставления доступа к файлам в учетной записи хранения Azure. Пакетная служба работает в фоновом режиме с хранилищем Azure для хранения пакетов приложений и их развертывания на вычислительных узлах.
Примечание.
Общий размер начальной задачи должен быть меньше или равен 32 768 символам, включая файлы ресурсов и переменные среды. Если начальная задача превышает это ограничение, использование пакетов приложений — еще один вариант. Вы также можете создать файл .zip, содержащий файлы ресурсов, загрузить файл как блоб в хранилище Azure, а затем распаковать его из командной строки вашей начальной задачи.
Отправка приложений и управление ими
Вы можете использовать портал Azure или API управления пакетной службой для управления пакетами приложений в учетной записи пакетной службы. В следующих разделах объясняется, как связать учетную запись хранения, вы узнаете, как добавлять приложения и пакеты приложений и управлять ими на портале Azure.
Примечание.
Хотя вы можете определить значения приложений в ресурсе Microsoft.Batch/batchAccountsшаблона ARM, в настоящее время невозможно использовать шаблон ARM для отправки пакетов приложений для использования в учетной записи пакетной службы. Их необходимо передать в связанную учетную запись хранения, как описано в разделе "Добавление нового приложения".
Свяжите учетную запись хранения
Чтобы использовать пакеты приложений, необходимо связать учетную запись хранения Azure с учетной записью пакетной службы. Пакетная служба использует связанную учетную запись хранения для хранения пакетов приложений. В идеале следует создать учетную запись хранения специально для работы с учетной записью Batch.
Если вы еще не настроили учетную запись хранения, портал Azure отображает предупреждение при первом выборе приложений в меню навигации слева в учетной записи пакетной службы. Чтобы связать учетную запись хранения с учетной записью пакетной службы, необходимо выполнить следующие действия:
- Выберите окно Предупреждение, в котором указано: «Учетная запись хранения не настроена для этой пакетной учетной записи».
- Затем выберите набор учетных записей хранения... на следующей странице.
- Выберите ссылку "Выбор учетной записи хранения" в разделе "Сведения о учетной записи хранения ".
- Выберите учетную запись хранения, которую вы хотите использовать с этой учетной записью пакетной службы в списке на панели "Выбор учетной записи хранения ".
- Затем нажмите кнопку "Сохранить " в левом верхнем углу страницы.
После подключения двух учетных записей, Батч может автоматически развертывать пакеты, хранящиеся в связанной учетной записи хранения, на вычислительные узлы.
Это важно
Вы не можете использовать пакеты приложений с учетными записями хранения Azure, настроенными с правилами брандмауэра или иерархическим пространством имен с включенным.
Пакетная служба использует службу хранилища Azure для хранения пакетов приложений в виде блочных BLOB-объектов. Плата взимается по стандартной тарификации для данных блочного BLOB-объекта, а размер каждого пакета не может превышать максимальный размер блочного BLOB-объекта. Дополнительные сведения см. в статье Scalability and performance targets for Blob storage (Целевые показатели масштабируемости и производительности для хранилища BLOB-объектов). Чтобы свести к минимуму затраты, следует учитывать размер и количество пакетов приложения, а также периодически удалять устаревшие пакеты.
Добавление нового приложения
Чтобы создать новое приложение, добавьте пакет приложения и укажите уникальный идентификатор приложения.
В учетной записи пакетной службы выберите "Приложения " в меню навигации слева и нажмите кнопку "Добавить".
Введите следующие сведения:
- Идентификатор приложения: идентификатор нового приложения.
- Версия: версия пакета приложения, который вы отправляете.
- Пакет приложения: файл .zip, содержащий двоичные файлы приложения и вспомогательные файлы, необходимые для запуска приложения.
Идентификатор приложения и версия должны соответствовать следующим требованиям:
- На узлах Windows идентификатор может содержать любое сочетание буквенно-цифровых знаков, дефисов и символов подчеркивания. На узлах Linux допускаются только буквенно-цифровые знаки и символы подчеркивания.
- Не может содержать более 64 символов.
- Должен быть уникальным в учетной записи Batch.
- Идентификаторы бывают с сохранением регистра и без учета регистра.
Когда будете готовы, нажмите кнопку Отправить. После отправки .zip файла в учетную запись хранения Azure на портале отображается уведомление. В зависимости от размера отправленного файла и скорости сетевого подключения этот процесс может занять некоторое время.
Просмотр текущих приложений
Чтобы просмотреть приложения в учетной записи пакетной службы, выберите "Приложения " в меню навигации слева.
При выборе этого меню откроется окно "Приложения ". В этом окне отображается идентификатор каждого приложения в учетной записи и следующие свойства:
- Пакеты: количество версий, связанных с этим приложением.
- Версия по умолчанию: если применимо, версия приложения, установленная, если версия не указана при развертывании приложения.
- Разрешить обновления. Указывает, разрешены ли обновления и удаления пакетов.
Чтобы просмотреть структуру файлов пакета приложения на вычислительном узле, перейдите к учетной записи пакетной службы на портале Azure. Выберите пулы. Затем выберите пул, содержащий вычислительный узел. Выберите вычислительный узел, на котором установлен пакет приложения, и откройте папку приложений .
Просмотр сведений о приложении
Чтобы просмотреть сведения о приложении, выберите его в окне "Приложения ". Вы можете настроить приложение, выбрав "Параметры" в меню навигации слева.
- Разрешить обновления. Указывает, можно ли обновлять или удалять пакеты приложений. Значение по умолчанию — "Да". Если задано значение "Нет", существующие пакеты приложений не могут быть обновлены или удалены, но новые версии пакетов приложений по-прежнему можно добавлять.
- Версия по умолчанию: пакет приложения по умолчанию, используемый при развертывании приложения, если версия не указана.
- Отображаемое имя: понятное имя, которое может использовать решение пакетной службы при отображении сведений о приложении. Например, это имя можно использовать в пользовательском интерфейсе вашей службы, предоставляемой клиентам через пакетную обработку.
Добавление нового пакета приложения
Чтобы добавить версию пакета приложения для существующего приложения, выберите приложение на странице "Приложения " учетной записи пакетной службы. Затем выберите Добавить.
Как и для нового приложения, укажите версию нового пакета, отправьте файл .zip в поле пакета приложения и нажмите кнопку "Отправить".
Обновление или удаление пакета приложения
Чтобы обновить или удалить существующий пакет приложения, выберите приложение на странице "Приложения " учетной записи пакетной службы. Выберите многоточие в строке пакета приложения, который требуется изменить. Затем выберите действие, которое вы хотите выполнить.
Если выбрать "Обновить", можно отправить новый файл .zip. Этот файл заменяет предыдущий файл .zip, который вы загрузили для этой версии.
Если выбрать "Удалить", появится запрос на подтверждение удаления этой версии. После нажатия кнопки "ОК" пакетная служба удаляет файл .zip из учетной записи хранения Azure. Если удалить версию приложения по умолчанию, параметр версии по умолчанию удаляется для этого приложения.
Установка приложений на вычислительных узлах
Вы узнали, как управлять пакетами приложений на портале Azure. Теперь вы можете узнать, как развернуть их на вычислительных узлах и запустить их с помощью задач пакетной службы.
Установка пакетов приложений для пула
Чтобы установить пакет приложения на всех вычислительных узлах в пуле, укажите одну или несколько ссылок на пакет приложения для пула. Пакеты приложений, указанные для пула, устанавливаются на каждом вычислительном узле, который присоединяется к пулу и на любом узле, который перезагружается или переимычен.
В Batch .NET укажите одну или несколько ссылок на CloudPool.ApplicationPackageReferences при создании нового пула или использовании существующего пула. Класс ApplicationPackageReference указывает идентификатор приложения и версию для установки на вычислительных узлах пула.
// Create the unbound CloudPool
CloudPool myCloudPool =
batchClient.PoolOperations.CreatePool(
poolId: "myPool",
targetDedicatedComputeNodes: 1,
virtualMachineSize: "standard_d1_v2",
VirtualMachineConfiguration: new VirtualMachineConfiguration(
imageReference: new ImageReference(
publisher: "MicrosoftWindowsServer",
offer: "WindowsServer",
sku: "2019-datacenter-core",
version: "latest"),
nodeAgentSkuId: "batch.node.windows amd64");
// Specify the application and version to install on the compute nodes
myCloudPool.ApplicationPackageReferences = new List<ApplicationPackageReference>
{
new ApplicationPackageReference {
ApplicationId = "litware",
Version = "1.1001.2b" }
};
// Commit the pool so that it's created in the Batch service. As the nodes join
// the pool, the specified application package is installed on each.
await myCloudPool.CommitAsync();
Это важно
Если развертывание пакета приложения завершается сбоем, служба пакетной службы помечает неиспользуемый узел, и задачи не запланированы для выполнения на этом узле. В этом случае перезапустите узел, чтобы снова начать развертывание пакета. Перезапуск узла также позволяет повторно планировать задачи на узле.
Установка пакетов приложений задач
Как и в пуле, вы указываете ссылки на пакеты приложений для задачи. Когда задача планируется запустить на узле, пакет загружается и извлекается непосредственно перед выполнением командной строки задачи. Если указанный пакет и версия уже установлены на узле, пакет не скачан и используется существующий пакет.
Чтобы установить пакет приложения задач, настройте свойство CloudTask.ApplicationPackageReferences задачи:
CloudTask task =
new CloudTask(
"litwaretask001",
"cmd /c %AZ_BATCH_APP_PACKAGE_LITWARE%\\litware.exe -args -here");
task.ApplicationPackageReferences = new List<ApplicationPackageReference>
{
new ApplicationPackageReference
{
ApplicationId = "litware",
Version = "1.1001.2b"
}
};
Выполнение установленных приложений
Указанные пакеты для пула или задачи загружаются и извлекаются в именованную директорию в AZ_BATCH_ROOT_DIR узла. Batch также создает переменную среды, содержащую путь к именованному каталогу. Командная строка задачи использует эту переменную среды при ссылке на приложение на узле.
На узлах Windows переменная находится в следующем формате:
Windows:
AZ_BATCH_APP_PACKAGE_APPLICATIONID#version
На узлах Linux формат немного отличается. Точки (.), дефисы (-) и знаки чисел (#) сглаживаются для подчеркивания в переменной среды. Кроме того, сохраняется регистр идентификатора приложения. Рассмотрим пример.
Linux:
AZ_BATCH_APP_PACKAGE_applicationid_version
APPLICATIONID и version являются значениями, соответствующими версии приложения и пакета, указанной для развертывания. Например, если указать, что на узлах Windows следует установить смешиватель приложений версии 2.7, командная строка задачи будет использовать эту переменную среды для доступа к своим файлам:
Windows:
AZ_BATCH_APP_PACKAGE_BLENDER#2.7
На узлах Linux укажите переменную среды в этом формате. Сглаживание периодов (.), дефисов (-) и знаков чисел (#) для подчеркивания и сохранение регистра идентификатора приложения:
Linux:
AZ_BATCH_APP_PACKAGE_blender_2_7
При отправке пакета приложения можно указать версию по умолчанию для развертывания на вычислительных узлах. Если вы указали версию по умолчанию для приложения, при ссылке на приложение можно опустить суффикс версии. Вы можете указать версию приложения по умолчанию на портале Azure в окне "Приложения ", как показано в разделе "Отправка приложений и управление ими".
Например, если в качестве версии по умолчанию для смешивателя приложений задано значение 2.7, а задачи ссылаются на следующую переменную среды, узлы Windows используют версию 2.7:
AZ_BATCH_APP_PACKAGE_BLENDER
В следующем фрагменте кода показан пример командной строки задачи, которая запускает версию приложения blender по умолчанию:
string taskId = "blendertask01";
string commandLine =
@"cmd /c %AZ_BATCH_APP_PACKAGE_BLENDER%\blender.exe -args -here";
CloudTask blenderTask = new CloudTask(taskId, commandLine);
Подсказка
Дополнительные сведения о параметрах среды вычислительных узлов см. в разделе "Параметры среды" для задач.
Обновление пакетов приложений пула
Если существующий пул уже настроен с пакетом приложения, можно указать новый пакет для пула. Это означает:
- Пакетная служба устанавливает только что указанный пакет на всех новых узлах, которые присоединяются к пулу и на любом существующем узле, который перезагружается или переимитируется.
- Вычислительные узлы, которые уже находятся в пуле при обновлении ссылок на пакет, не устанавливают новый пакет приложения автоматически. Для получения нового пакета эти вычислительные узлы необходимо перезагружать или переимыслить.
- При развертывании нового пакета созданные переменные среды отражают ссылки на новый пакет приложения.
В этом примере существующий пул имеет версию 2.7 приложения смешивателя , настроенного в качестве одного из его CloudPool.ApplicationPackageReferences. Чтобы обновить узлы пула с версией 2.76b, укажите новый ApplicationPackageReference с новой версией и зафиксируйте изменение.
string newVersion = "2.76b";
CloudPool boundPool = await batchClient.PoolOperations.GetPoolAsync("myPool");
boundPool.ApplicationPackageReferences = new List<ApplicationPackageReference>
{
new ApplicationPackageReference {
ApplicationId = "blender",
Version = newVersion }
};
await boundPool.CommitAsync();
Теперь, когда была настроена новая версия, пакетная служба устанавливает версию 2.76b на любой новый узел, присоединяющийся к пулу. Чтобы установить 2.76b на узлы, которые уже находятся в пуле, перезагрузите или пересоздайте их. Перезагруженные узлы сохраняют файлы из предыдущих развертываний пакетов.
Список приложений в пакетной учетной записи
Вы можете перечислить приложения и их пакеты в учетной записи Batch с помощью метода ApplicationOperations.ListApplicationSummaries.
// List the applications and their application packages in the Batch account.
List<ApplicationSummary> applications = await batchClient.ApplicationOperations.ListApplicationSummaries().ToListAsync();
foreach (ApplicationSummary app in applications)
{
Console.WriteLine("ID: {0} | Display Name: {1}", app.Id, app.DisplayName);
foreach (string version in app.Versions)
{
Console.WriteLine(" {0}", version);
}
}
Дальнейшие действия
- REST API пакетной службы также обеспечивает поддержку работы с пакетами приложений. Например, см. элемент applicationPackageReferences для указания пакетов, которые необходимо установить, и Applications для получения информации о приложении.
- Узнайте, как программно управлять учетными записями пакетной службы Azure и квотами с помощью .NET для управления пакетной службой. Библиотека Batch Management .NET может предоставить функции создания и удаления учетных записей для вашего пакетного приложения или службы.