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

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

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

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

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

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

  • Использование одних и тех же образов в разных регионах. Вы можете создавать реплики общих образов в разных регионах, чтобы все пулы использовали один и тот же образ.
  • Настройка операционной системы (ОС). Можно настроить конфигурацию диска операционной системы образа.
  • Предварительная установка приложений. Предварительная установка приложений на диск операционной системы — это более эффективный и безопасный способ, чем установка приложений после подготовки вычислительных узлов с помощью задачи запуска.
  • Копирование больших объемов данных один раз. Включите статические данные в управляемый общий образ, скопировав их на его диски данных. Это необходимо сделать только один раз, и данные станут доступными в каждом узле пула.
  • Увеличение пулов до больших размеров. С помощью Коллекции вычислений Azure можно создавать большие пулы с настроенными образами вместе с другими репликами общих образов.
  • Большая производительность по сравнению просто с использованием настраиваемого управляемого образа. При использовании настраиваемого пула на базе общего образа время достижения стабильного состояния может сократиться на 25 %, а задержка при простое виртуальной машины — на 30 %.
  • Контроль версий образов и группирование образов для более эффективного управления. Определение группирования образа содержит сведения о том, с какой целью данный образ был создан и для какой ОС он предназначен, а также информацию о его использовании. Группирование образов позволяет упростить управление образами. Дополнительные сведения см. в разделе Определения образов.

Необходимые компоненты

  • Учетная запись пакетной службы Azure. Чтобы создать учетную запись пакетной службы Azure, обратитесь к примерам быстрого начала работы с пакетной службой с помощью портала Azure или Azure CLI.

Примечание.

Требуется проверка подлинности с помощью идентификатора Microsoft Entra. Если вы используете проверку подлинности общего ключа, вы получите ошибку проверки подлинности.

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

Примечание.

Если общий образ имеет не ту подписку, что учетная запись пакетной службы, необходимо зарегистрировать поставщик ресурсов Microsoft.Batch для этой подписки. Две подписки должны находиться в одном клиенте Microsoft Entra.

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

Если вы используете приложение Microsoft Entra для создания настраиваемого пула образов с изображением коллекции вычислений Azure, это приложение должно быть предоставлено встроенной роли Azure, которая предоставляет ему доступ к общему образу. Такой доступ можно предоставить на портале Azure, перейдя к общему образу, выбрав Управление доступом (IAM) и назначив приложению соответствующую роль.

Примечание.

Разрешения читателя для образа коллекции вычислений Azure недостаточно, так как они требуют выполнения следующего минимального действия: Microsoft.Compute/disks/beginGetAccess/action для соответствующего доступа.

Подготовка общего образа

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

  • моментальных снимков ОС и дисков данных виртуальной машины Azure;
  • обобщенной виртуальной машины Azure с управляемыми дисками;
  • обобщенного локального виртуального жесткого диска, отправленного в облако.

Примечание.

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

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

Подготовка виртуальной машины

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

Чтобы получить полный список текущих ссылок на образы Azure Marketplace, поддерживаемых пакетная служба Azure, используйте один из следующих API для возврата списка образов виртуальных машин Windows и Linux:

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

  • Убедитесь, что виртуальная машина создается с управляемым диском. Это параметр хранилища по умолчанию при создании виртуальной машины.
  • Не устанавливайте расширения Azure, такие как расширение пользовательского скрипта, на виртуальной машине. Если образ содержит предварительно установленное расширение, в Azure могут возникнуть проблемы при развертывании пула пакетной службы.
  • При использовании подключенных дисков данных необходимо подключить и отформатировать диски в виртуальной машине, чтобы использовать их.
  • Убедитесь, что предоставленный базовый образ операционной системы использует этот временный диск по умолчанию. Сейчас агент узла пакетной службы ожидает этот диск.
  • Убедитесь, что диск ОС не зашифрован.
  • После запуска виртуальной машины подключитесь к ней с помощью RDP (для Windows) или SSH (для Linux). Установите все необходимое программное обеспечение или скопируйте необходимые данные.
  • Чтобы ускорить подготовку пула, используйте параметр кэширования дисков ReadWrite для диска ОС виртуальной машины.

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

Создание образа

Сведения о создании образа из виртуальной машины на портале см. в статье Создание образа виртуальной машины на портале.

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

Примечание.

Если базовый образ содержит сведения о плане покупки, убедитесь, что образ коллекции имеет идентичные сведения о плане покупки, как базовый образ. Дополнительные сведения о создании образа с планом покупки см. в разделе "Предоставление сведений о плане покупки Azure Marketplace" при создании образов.

Если базовый образ не содержит сведений о плане покупки, не указывайте сведения о плане покупки для образа коллекции.

Сведения о плане покупки этих образов Marketplace см. в руководстве по виртуальным машинам Linux или Windows .

Используйте Azure PowerShell Get-AzGalleryImageDefinition или Azure CLI az sig image-definition show, чтобы проверка, имеет ли образ коллекции правильные сведения о плане.

Создание пула из общего образа с помощью Azure CLI

Чтобы создать пул из общего образа с помощью Azure CLI, используйте команду az batch pool create. Укажите идентификатор общего образа в поле --image. Убедитесь, что тип ОС и номер SKU соответствуют версиям, указанным в параметре --node-agent-sku-id

Внимание

Идентификатор SKU агента узла должен соответствовать идентификатору издателя, предложения или SKU, чтобы узел был запущен.

az batch pool create \
    --id mypool --vm-size Standard_A1_v2 \
    --target-dedicated-nodes 2 \
    --image "/subscriptions/{sub id}/resourceGroups/{resource group name}/providers/Microsoft.Compute/galleries/{gallery name}/images/{image definition name}/versions/{version id}" \
    --{node-agent-sku-id}

Создание пула из общего образа с помощью C#

Кроме того, можно создать пул из общего образа с помощью пакета SDK для C#.

private static VirtualMachineConfiguration CreateVirtualMachineConfiguration(ImageReference imageReference)
{
    return new VirtualMachineConfiguration(
        imageReference: imageReference,
        nodeAgentSkuId: {});
}

private static ImageReference CreateImageReference()
{
    return new ImageReference(
        virtualMachineImageId: "/subscriptions/{sub id}/resourceGroups/{resource group name}/providers/Microsoft.Compute/galleries/{gallery name}/images/{image definition name}/versions/{version id}");
}

private static void CreateBatchPool(BatchClient batchClient, VirtualMachineConfiguration vmConfiguration)
{
    try
    {
        CloudPool pool = batchClient.PoolOperations.CreatePool(
            poolId: PoolId,
            targetDedicatedComputeNodes: PoolNodeCount,
            virtualMachineSize: PoolVMSize,
            virtualMachineConfiguration: vmConfiguration);

        pool.Commit();
    }
    ...
}

Создание пула из общего образа с помощью Python

Вы также можете создать пул из общего образа с помощью пакета SDK для Python:

# Import the required modules from the
# Azure Batch Client Library for Python
import azure.batch as batch
import azure.batch.models as batchmodels
from azure.common.credentials import ServicePrincipalCredentials

# Specify Batch account and service principal account credentials
account = "{batch-account-name}"
batch_url = "{batch-account-url}"
ad_client_id = "{sp-client-id}"
ad_tenant = "{tenant-id}"
ad_secret = "{sp-secret}"

# Pool settings
pool_id = "LinuxNodesSamplePoolPython"
vm_size = "STANDARD_D2_V3"
node_count = 1

# Initialize the Batch client with Azure AD authentication
creds = ServicePrincipalCredentials(
    client_id=ad_client_id,
    secret=ad_secret,
    tenant=ad_tenant,
    resource="https://batch.core.windows.net/"
)
client = batch.BatchServiceClient(creds, batch_url)

# Configure the start task for the pool
start_task = batchmodels.StartTask(
    command_line="printenv AZ_BATCH_NODE_STARTUP_DIR"
)
start_task.run_elevated = True

# Create an ImageReference which specifies the image from
# Azure Compute Gallery to install on the nodes.
ir = batchmodels.ImageReference(
    virtual_machine_image_id="/subscriptions/{sub id}/resourceGroups/{resource group name}/providers/Microsoft.Compute/galleries/{gallery name}/images/{image definition name}/versions/{version id}"
)

# Create the VirtualMachineConfiguration, specifying
# the VM image reference and the Batch node agent to
# be installed on the node.
vmc = batchmodels.VirtualMachineConfiguration(
    image_reference=ir,
    {node_agent_sku_id}
)

# Create the unbound pool
new_pool = batchmodels.PoolAddParameter(
    id=pool_id,
    vm_size=vm_size,
    target_dedicated_nodes=node_count,
    virtual_machine_configuration=vmc,
    start_task=start_task
)

# Create pool in the Batch service
client.pool.add(new_pool)

Создание пула из общего образа или пользовательского образа с помощью портал Azure

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

  1. Откройте портал Azure.
  2. Перейдите в раздел Учетные записи пакетной службы и выберите свою учетную запись.
  3. Выберите Пулы, а затем — Добавить для создания нового пула.
  4. В разделе Тип образа выберите Коллекция вычислений Azure.
  5. Выполните действия в остальных разделах со сведениями об управляемом образе.
  6. Нажмите ОК.
  7. После выделения узла используйте Подключение для создания пользователя и файла RDP для Windows ИЛИ использования SSH для Linux для входа в выделенный узел и проверки.

Создайте пул из общего образа с помощью портала.

Рекомендации по созданию крупных пулов

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

  • Номера реплик Коллекции вычислений Azure. Рекомендуем иметь хотя бы одну реплику для каждого пула, содержащего до 300 экземпляров. Например, если вы создаете пул с 3000 виртуальными машинами, следует сохранить не менее 10 реплика образа. Для повышения производительности рекомендуется хранить больше реплик, чем минимальные требования.

  • Время ожидания для изменения размера. Если в пуле содержится фиксированное число узлов (если он не выполняет автомасштабирование), увеличьте значение свойства resizeTimeout пула в зависимости от размера пула. Для каждых 1000 виртуальных машин рекомендуемое время ожидания изменения размера составляет не менее 15 минут. Например, рекомендуемое время ожидания изменения размера пула с 2000 виртуальными машинами составляет не менее 30 минут.

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