Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
пакетная служба Azure предлагает Spot-виртуальные машины для снижения затрат на пакетные задания. Spot-виртуальные машины делают возможным создание новых типов рабочих нагрузок пакетной службы, что позволяет использовать большое количество вычислительных мощностей по низкой цене.
Точечные виртуальные машины используют преимущества избыточной емкости в Azure. Объем доступной емкости зависит от таких факторов, как семейство виртуальных машин, размер виртуальной машины, регион и время дня. При указании точечных виртуальных машин в пулах пакетная служба Azure может использовать этот профицит при наличии.
Компромисс по использованию точечных виртуальных машин заключается в том, что эти виртуальные машины не имеют соглашение об уровне обслуживания и не гарантируют доступность. Точечные виртуальные машины можно использовать в любое время, в том числе сразу после создания виртуальной машины. По этой причине точечные виртуальные машины лучше всего подходят для рабочих нагрузок с пакетной и асинхронной обработкой, когда время выполнения задания является гибким, а работа распределяется по множеству виртуальных машин.
Если происходит прерывание, то вычислительный узел Spot будет вытеснен, и вся работа, которая не была соответствующим образом промежуточно сохранена, будет потеряна. Контрольные точки являются необязательными, и их реализация зависит от конечного пользователя Batch. Выполняющаяся задача пакетной службы, которая была прервана из-за вытеснения, автоматически будет заново поставлена в очередь для выполнения другим вычислительным узлом. Прерванная виртуальная машина может быть впоследствии восстановлена платформой Azure, но восстановление выполняется только в первые 48 часов после прерывания, и его успешность не гарантируется.
Точечные виртуальные машины предоставляются по сниженной цене по сравнению с выделенными виртуальными машинами. Дополнительные сведения о ценах см. в разделе Цены на пакетные предложения.
Пакетная поддержка виртуальных машин типа Spot
пакетная служба Azure предоставляет несколько возможностей, которые упрощают использование и преимущества точечных виртуальных машин:
- Пулы Batch могут содержать как выделенные, так и точечные виртуальные машины. Число каждого типа виртуальной машины можно указать при создании пула или в любое время для существующего пула с помощью явной операции изменения размера или с помощью автомасштабирования. Отправка заданий и задач не изменяется независимо от типа виртуальной машины в пуле. Вы можете настроить пул так, чтобы он в основном использовал точечные виртуальные машины для выполнения заданий как можно дешевле и развертывал выделенные виртуальные машины, если значение емкости падает ниже заданного порогового значения, чтобы выполнение заданий продолжалось.
- Пулы пакетных ресурсов автоматически добиваются достижения заданного количества виртуальных машин типа Spot. Если виртуальные машины вытеснены или недоступны, Batch пытается заменить потерянную емкость и вернуться к целевому объему.
- Когда задачи прерываются, Batch обнаруживает это и автоматически заново ставит их в очередь для повторного выполнения.
- Точечные виртуальные машины имеют отдельную квоту на виртуальные ЦП, которая отличается от квоты выделенных виртуальных машин. Квота для точечных виртуальных машин выше, чем квота для выделенных виртуальных машин, так как их стоимость ниже. Дополнительные сведения см. в разделе о квотах и ограничениях пакетной службы.
Рекомендации и варианты использования
Многие пакетные рабочие нагрузки хорошо подходят для Spot виртуальных машин. Рассмотрите возможность использования точечных виртуальных машин, если задания разбиваются на множество параллельных задач или при наличии большого количества заданий, масштабируемых и распределенных по нескольким виртуальным машинам.
Ниже приведены некоторые примеры вариантов использования пакетной обработки, которые хорошо подходят для точечных виртуальных машин:
- Разработка и тестирование. При разработке крупномасштабных решений, в частности, можно существенно сэкономить средства. Преимущества доступны для всех видов тестирования, но лучше всего подходит крупномасштабное нагрузочное тестирование и тестирование регрессии.
- Добавление емкости по требованию: точечные виртуальные машины могут использоваться в дополнение к обычным выделенным виртуальным машинам. Когда ресурсы доступны, можно масштабировать задачи и, следовательно, выполнять их быстрее при меньших затратах; когда они недоступны, базовые выделенные виртуальные машины остаются в наличии.
- Гибкое время выполнения заданий. Если имеется гибкость во времени завершения заданий, возможное снижение мощности может быть допустимо. Однако при добавлении точечных виртуальных машин задания часто выполняются быстрее и при более низкой стоимости.
Пакетные пулы можно настроить для использования точечных виртуальных машин несколькими способами:
- Пул может использовать только виртуальные машины Spot. В этом случае система Batch восстанавливает предварительно освобожденные ресурсы, когда они становятся доступными. Данная конфигурация представляет собой самый дешевый способ выполнения заданий.
- Точечные виртуальные машины можно использовать с фиксированной базовой базой выделенных виртуальных машин. Фиксированное количество выделенных виртуальных машин гарантирует, что для выполнения задания всегда существует некоторая емкость.
- Пул может использовать динамическую комбинацию выделенных и точечных виртуальных машин, чтобы более дешевые точечные виртуальные машины использовались исключительно при наличии, но при необходимости масштабируются выделенные виртуальные машины по полной стоимости. Эта конфигурация обеспечивает минимальный объем емкости для поддержания хода выполнения заданий.
Помните, что при планировании использования точечных виртуальных машин следует учитывать следующие методики.
- Чтобы максимально увеличить использование избыточных мощностей в Azure, подходящие рабочие места могут масштабироваться.
- Иногда виртуальные машины могут быть недоступны или выделены для других задач, что приводит к снижению мощности для выполнения заданий и может привести к прерыванию задач и их перезапускам.
- Задачи с более коротким временем выполнения, как правило, лучше всего работают с точечными виртуальными машинами. Задания с длительными задачами могут быть более затронуты, если их прервать. Если длительные задачи внедряют контрольные точки для сохранения хода выполнения, это воздействие может быть уменьшено.
- Длительные задания MPI, использующие несколько виртуальных машин, не подходят для Spot виртуальных машин, так как прерывание одной виртуальной машины может привести к необходимости выполнения всего задания заново.
- В случае если правила группы безопасности сети (NSG) настроены неправильно, точечные узлы могут быть помечены как непригодные для использования.
Создание пулов и управление ими с помощью точечных виртуальных машин
Пул Batch может содержать выделенные и Spot виртуальные машины (также называемые вычислительными узлами). Вы можете задать целевое количество вычислительных узлов как для выделенных, так и для Spot виртуальных машин. Целевое количество узлов указывает количество виртуальных машин, которые вы хотите иметь в пуле.
Точечные виртуальные машины иногда могут быть упрещены. Когда происходит прерывание, задачи, выполнявшиеся на узлах ВМ, подвергнутых прерыванию, заново добавляются в очередь и запускаются снова, когда емкость восстанавливается. Пакет также выполняет следующие действия:
- Для замещенных виртуальных машин устанавливается состояние Замещено.
- Виртуальная машина удаляется, что приводит к потере всех ее локальных данных в хранилище.
- Операция отображения узлов в пуле по-прежнему возвращает вытесненные узлы.
- Пул постоянно пытается достичь целевого количества доступных Spot-узлов. При обнаружении емкости замены узлы сохраняют свои идентификаторы, но повторно инициализируются, проходя состояния Создание и Запуск перед тем, как они становятся доступными для планирования задач.
- Счетчики предварительных разрешений доступны в виде метрик на портале Azure.
пакет SDK пакетная служба Azure
В следующем примере создается пул с помощью виртуальных машин Azure, в данном случае виртуальных машин Linux, нацеленный на 5 выделенных виртуальных машин и 20 спотовых виртуальных машин.
ImageReference imageRef = new ImageReference(
publisher: "Canonical",
offer: "ubuntu-24_04-lts",
sku: "server",
version: "latest");
// Create the pool
VirtualMachineConfiguration virtualMachineConfiguration =
new VirtualMachineConfiguration("batch.node.ubuntu 24.04", imageRef);
pool = batchClient.PoolOperations.CreatePool(
poolId: "vmpool",
targetDedicatedComputeNodes: 5,
targetLowPriorityComputeNodes: 20,
virtualMachineSize: "Standard_D4s_v3",
virtualMachineConfiguration: virtualMachineConfiguration);
Можно получить текущее количество узлов как для выделенных, так и для точечных виртуальных машин:
int? numDedicated = pool1.CurrentDedicatedComputeNodes;
int? numLowPri = pool1.CurrentLowPriorityComputeNodes;
В узлах пула есть свойство, указывающее на принадлежность узла (выделенная или точечная виртуальная машина):
bool? isNodeDedicated = poolNode.IsDedicated;
Как и в пулах, состоящих исключительно из выделенных виртуальных машин, можно масштабировать пул, содержащий точечные виртуальные машины, вызывая Resize метод или используя автомасштабирование.
Операция изменения размера пула принимает второй необязательный параметр, который обновляет значение targetLowPriorityNodes:
pool.Resize(targetDedicatedComputeNodes: 0, targetLowPriorityComputeNodes: 25);
Azure CLI
Создайте новый пул с Spot-инстансами:
az batch pool create \
--id "vmpool" \
--vm-size "Standard_D4s_v3" \
--target-dedicated-nodes 5 \
--target-low-priority-nodes 20 \
--enable-inter-node-communication false \
--image "Canonical:ubuntu-24_04-lts:server" \
--node-agent-sku-id "batch.node.ubuntu 24.04" \
--account-name <your-batch-account-name> \
--account-endpoint "https://<your-batch-account-name>.<region>.batch.azure.com"
Масштабирование существующего пула для использования экземпляров Spot.
az batch pool resize \
--pool-id <existing-pool-id> \
--target-dedicated-nodes 5 \
--target-low-priority-nodes 20 \
--account-name <your-batch-account-name> \
--account-endpoint "https://<your-batch-account-name>.<region>.batch.azure.com"
Проверка состояния пула и распределение узлов
az batch pool show \
--account-name <your-batch-account-name> \
--account-endpoint "https://<your-batch-account-name>.<region>.batch.azure.com" \
--pool-id <your-pool-id> \
--query "{State:state, CurrentSpotNodes:currentLowPriorityNodes, TargetSpotNodes:scaleSettings.targetLowPriorityNodes, ResizeErrors:resizeErrors}"
Azure PowerShell
Создайте пул с экземплярами Spot:
New-AzBatchPool `
-Id "vmpool" `
-VirtualMachineSize "Standard_D4s_v3" `
-TargetDedicatedComputeNodes 5 `
-TargetLowPriorityComputeNodes 20 `
-VirtualMachineImageId "/subscriptions/{subscription}/resourceGroups/{rg}/providers/Microsoft.Compute/images/{image}" `
-BatchContext $context
Проверьте с помощью PowerShell:
$pool = Get-AzBatchPool -Id "vmpool" -BatchContext $context
$pool | Select-Object Id, VmSize, @{Name="SpotNodes";Expression={$_.TargetLowPriorityComputeNodes}}, State
портал Azure
На портале Azure выберите учетную запись пакетной службы и просмотрите существующий пул или создайте новый пул.
В разделе "Масштаб" выберите выделенные узлы целевого объекта или целевые точечные или низкоприоритетные узлы.
Для существующего пула выберите пул, а затем выберите масштаб , чтобы обновить необходимое количество точечных узлов.
Нажмите Сохранить.
Автомасштабирование с помощью точечных виртуальных машин
Помимо прямого подсчета целевых виртуальных машин можно определить формулу автомасштабирования для пула. Формула автомасштабирования пула реализует поддержку точечных виртуальных машин следующим образом:
- Вы можете получить или задать значение определенной службой переменной
$TargetLowPriorityNodes. - Вы можете получить значение определенной службой переменной
$CurrentLowPriorityNodes. - Вы можете получить значение определенной службой переменной
$PreemptedNodeCount. Эта переменная возвращает количество узлов в состоянии "Отложено" и позволяет масштабировать число выделенных узлов в зависимости от числа недоступных замещенных узлов.
Дополнительные сведения см. в руководстве по пакетному автомасштабированию.
Настройка заданий и задач
Для заданий и задач может потребоваться дополнительная конфигурация для точечных узлов:
- У свойства
JobManagerTaskзадания есть свойствоAllowLowPriorityNode. Если это свойство имеет значение true, задачу диспетчера заданий можно запланировать на выделенном или точечном узле. Если значение указано как false, задача диспетчера заданий запланирована только для выделенного узла. - Переменная
AZ_BATCH_NODE_IS_DEDICATEDсреды доступна приложению задачи, чтобы оно могло определить, работает ли оно на Spot-узле или на выделенном узле.
Просмотр метрик для точечных виртуальных машин
Новые метрики доступны на портале Azure для точечных узлов. Эти метрики перечислены ниже.
- Количество узлов с низким приоритетом
- Число ядер с низким приоритетом
- Количество вытесненных узлов
Чтобы просмотреть эти метрики на портале Azure, выполните следующие действия.
- Перейдите в учетную запись Batch на портале Azure.
- В разделе Мониторинг щелкните Метрики.
- Выберите нужные показатели из списка Показатель.
Ограничения
- Спотовые виртуальные машины в Batch не поддерживают установку максимальной цены и вытеснения на основе цен. Их можно выселить только по причинам переполненности.
- Точечные виртуальные машины недоступны для некоторых облаков, размеров виртуальных машин и типов предложений подписки. Дополнительные сведения об ограничениях для точечных виртуальных машин.
- В настоящее время эфемерные диски ОС не поддерживаются с точечными виртуальными машинами из-за управляемой службой политикой вытеснения Stop-Deallocate.
Следующие шаги
- Узнайте подробнее о рабочем процессе и основных ресурсах пакетной службы, таких как пулы, узлы, задания и задачи.
- Узнайте о пакетных API и инструментах, которые доступны для создания пакетных решений.
- Дополнительные сведения о точечных виртуальных машинах в Azure, включая просмотр исторических цен и ставок вытеснения, см. в разделе Spot Виртуальные машины.