ошибки пула пакетная служба Azure и узла

Внимание

Эта статья ссылается на CentOS, дистрибутив Linux, который приближается к состоянию конца жизни (EOL). Пожалуйста, рассмотрите возможность использования и планирования соответствующим образом. Дополнительные сведения см. в руководстве centOS End Of Life.

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

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

Ошибки пула

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

Время ожидания изменения размера или сбой

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

Свойство resizeError содержит ошибки, которые произошли для последней оценки.

К распространенным причинам ошибок изменения размера относятся следующие.

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

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

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

  • Недостаточно ресурсов, когда пул находится в виртуальной сети. При создании пула в виртуальной сети можно создавать такие ресурсы, как подсистемы балансировки нагрузки, общедоступные IP-адреса и группы безопасности сети (NSG) в той же подписке, что и учетная запись пакетной службы. Убедитесь, что квоты подписки достаточно для этих ресурсов.

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

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

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

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

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

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

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

Сбои при удалении пула

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

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

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

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

  • Созданные ресурсы могут зависеть от ресурса, созданного пакетной службы. Например, при создании пула в виртуальной сети пакетная служба создает группу безопасности сети, общедоступный IP-адрес и подсистему балансировки нагрузки. Если вы используете эти ресурсы за пределами пула, вы не сможете удалить пул.

  • Поставщик Microsoft.Batch ресурсов может быть незарегистрирован из подписки, содержащей пул.

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

Ошибки узла

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

Сбои задачи запуска

Можно указать необязательное начальное значение для пула. Как и в любой задаче, начальная задача использует командную строку и может скачать файлы ресурсов из хранилища. Начальная задача выполняется для каждого узла при запуске узла. Свойство waitForSuccess указывает, ожидает ли пакетная служба, пока задача запуска не завершится успешно, прежде чем она планирует выполнение любых задач на узел. Если вы настроите узел, чтобы ждать успешного завершения задачи запуска, но задача запуска завершается сбоем, узел не подходит для использования, но по-прежнему взимает плату.

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

Сбой задачи запуска также приводит к тому, что пакетная служба устанавливает для computeNodeStatestarttaskfailedзначение , если waitForSuccess задано значение true.

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

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

Не удалось скачать пакет приложения

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

Если пакет приложения не удается скачать и распаковать, свойство computeNodeError сообщает об ошибке и задает состояние unusableузла.

Сбой при скачивании контейнера

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

Обновления ОС узла

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

Узел с состоянием unusable (Непригоден)

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

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

Другие причины для unusable узлов могут включать следующие причины:

  • Образ виртуальной машины является недопустимым. Например, изображение неправильно подготовлено.
  • Виртуальная машина перемещена из-за сбоя инфраструктуры или обновления нижнего уровня. Пакетная служба восстанавливает узел.
  • Образ виртуальной машины был развернут на оборудовании, которое не поддерживает его. Например, образ HPC CentOS развертывается на Standard_D1_v2 виртуальной машине.
  • Виртуальные машины находятся в виртуальной сети Azure, и трафик на ключевые порты заблокирован.
  • Виртуальные машины находятся в виртуальной сети, но исходящий трафик к служба хранилища Azure заблокирован.
  • Виртуальные машины находятся в виртуальной сети с настраиваемой конфигурацией DNS, и DNS-сервер не может разрешить хранилище Azure.

Файлы журнала агента узла

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

Диск узла заполнен

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

  • Файлы пакета приложения
  • Файлы ресурсов задач
  • Файлы для конкретных приложений, скачиваемые в одну из папок пакетной службы
  • Файлы Stdout и stderr для каждого выполнения приложения задач
  • Выходные файлы конкретных приложений

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

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

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

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

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

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

Если временный или диск ОПЕРАЦИОННОй системы истекает или находится недалеко от свободного места, узел перемещается в unusablecomputeNoteState, а ошибка узла говорит о том, что диск заполнен.

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

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

Вы можете удалить старые завершенные задания или задачи, данные которых по-прежнему находится на узлах. Просмотрите recentTasks коллекцию в taskInformation на узле или используйте API списка из вычислительного узла . При удалении задания удаляются все задачи в задании. Удаление задач в задании активирует удаление данных в каталогах задач на узлах и освобождает место. После освобождения достаточного места перезагрузите узел. Узел должен выйти из unusable состояния и снова перейти в idle него.

Чтобы восстановить неиспользуемый узел в пулах VirtualMachineConfiguration, можно удалить узел из пула с помощью API "Удалить узлы". Затем вы можете снова увеличить пул, чтобы заменить плохой узел свежим. Для пулов CloudServiceConfiguration можно повторно создать экземпляр узла с помощью API повторного создания образа для очистки всего диска. Reimage в настоящее время не поддерживается для пулов VirtualMachineConfiguration .

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