Распределение виртуальной машины Azure при завершении задачи - PullRequest
0 голосов
/ 26 апреля 2020

Мне нужна Azure ВМ (Ubuntu) для выполнения некоторой задачи (java приложение) каждые 10 минут. Поскольку задача обычно длится менее минуты, я бы сэкономил деньги, если бы мог запускать машину каждые 10 минут и останавливать ее после выполнения задачи. Я узнал, что могу планировать время запуска и остановки в учетной записи автоматизации, но более оптимальным было бы остановить ВМ в тот самый момент, когда задача будет выполнена. Есть ли простой способ сделать это?

1 Ответ

0 голосов
/ 26 апреля 2020

Это действительно звучит как работа для Azure Batch. Если вы ищете решение IaaS, Azure Batch выполнит эту работу за вас. Посмотрите на это: https://azure.microsoft.com/en-gb/services/batch/#overview. Это позволяет вам использовать виртуальные машины с вашей предпочитаемой ОС (в Azure Batch это называется узлом) и запускать набор задач. После завершения виртуальная машина будет выделена.

Таким образом, каждый узел запускает набор пулов, в каждом пуле у вас есть задание, и в каждом задании вы можете иметь задачи. Задачей может быть, например, строка cmd, которая запускает указанное приложение c. Так, например, вы можете просто run example.exe 1 2 на windows ОС или эквивалентной командной строке для ОС Ubuntu.

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

Недостатки этого метода в том, что это виртуальная машина без состояния, поэтому все, что вам нужно установить или для хранения вам придется использовать альтернативные методы. Azure Пакетная обработка позволяет вам предварительно устанавливать программу (например, приложение Java) каждый раз, когда она запускается. Также, если вы используете файлы и / или ожидаете, что файлы будут созданы, вам потребуется хранилище больших двоичных объектов для поддержки этого. Поэтому, если вы ожидаете, что он будет использовать определенное количество файлов, сохраните их в хранилище больших двоичных объектов и затем запишите обратно в хранилище больших двоичных объектов, если ваша программа делает это.

Наконец, ваш планировщик, это действительно зависит от того, как вы Если вы хотите иметь дело с этим, если у вас есть локальный сервер или сервер на Azure, который уже работает 24/7, вы можете добавить запланированное задание в планировщик и запустить программу, которая добавит задачу в Azure Batch , Или, если вы не возражаете против использования Azure функций, вы можете просто добавить функцию таймера Azure, которая добавит задачу в задание. Есть несколько способов справиться с этим, у вас уже может быть существующее решение.

Надеюсь, вы найдете это полезным!

...