Согласованное с приложениями резервное копирование виртуальных машин Linux в Azure

При создании резервных моментальных снимков виртуальных машин согласованность с приложениями означает, что приложения запускаются при загрузке виртуальных машин после восстановления. Можно себе представить, какое важное значение имеет согласованность с приложениями. Чтобы обеспечить согласованность с приложениями виртуальных машин Linux, можно использовать платформу сценариев предварительной и последующей обработки Linux для создания согласованных с приложениями резервных копий. Платформа сценариев предварительной и последующей обработки поддерживается только для виртуальных машин Linux, развернутых с помощью Azure Resource Manager. Скрипты для обеспечения согласованности с приложениями не поддерживаются для виртуальных машин, развернутых с помощью Service Manager, и виртуальных машин Windows.

Принцип работы платформы

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

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

Действия по настройке скриптов предварительного и последующего выполнения

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

  2. Перейдите на сайт GitHub, скачайте файл VMSnapshotScriptPluginConfig.json и скопируйте его в папку /etc/azure для всех виртуальных машин, резервные копии которых требуется создать. Если папка /etc/azure не существует, создайте ее.

  3. Скопируйте сценарии предварительной и последующей обработки для приложения на все виртуальные машины, резервные копии которых нужно создать. Скрипты можно скопировать в любое расположение на виртуальной машине. Не забудьте обновить полный путь к файлам скрипта в файле VMSnapshotScriptPluginConfig.json.

  4. Обеспечьте следующие разрешения для файлов.

    • VMSnapshotScriptPluginConfig.json: разрешение "600". Например, только у привилегированных пользователей есть разрешения на чтение и запись этого файла. Разрешений на выполнение нет ни у кого.

    • Файл скрипта предварительного выполнения: разрешение "700". Только у привилегированных пользователей есть разрешения на чтение, запись и выполнение этого файла.

    • Файл скрипта последующего выполнения: разрешение "700". Только у привилегированных пользователей есть разрешения на чтение, запись и выполнение этого файла.

    Важно!

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

  5. Настройте файл VMSnapshotScriptPluginConfig.json, как описано далее.

    • pluginName — оставьте значение без изменения. Иначе сценарии могут выполняться неправильно.

    • preScriptLocation — укажите полный путь к скрипту предварительного выполнения на архивируемой виртуальной машине.

    • postScriptLocation — укажите полный путь к скрипту последующего выполнения на архивируемой виртуальной машине.

    • preScriptParams — укажите необязательные параметры, которые должны передаваться в скрипт предварительного выполнения. Все параметры должны быть заключены в кавычки. При использовании нескольких параметров они разделяются точками.

    • postScriptParams — укажите необязательные параметры, которые должны передаваться в скрипт последующего выполнения. Все параметры должны быть заключены в кавычки. При использовании нескольких параметров они разделяются точками.

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

    • postScriptNoOfRetries — укажите число попыток запуска, совершаемых скриптом последующего выполнения в случае сбоя перед завершением работы. Ноль означает один запуск без повторных попыток в случае сбоя.

    • timeoutInSeconds — укажите отдельные значения времени ожидания для сценариев предварительной и последующей обработки (максимальное значение может быть равно 1800).

    • continueBackupOnFailure — присвойте значение true, чтобы при сбое скриптов предварительного и последующего выполнения служба архивации Azure выполнила резервное копирование, согласованное с файловой системой и сбоем. Если присвоить значение false, при сбое скрипта резервное копирование также завершится сбоем (только если не используется виртуальная машина с одним диском, для которой резервное копирование состояния системы на момент сбоя будет выполнено независимо от этого параметра). Если для параметра continueBackupOnFailure задано значение false, то при сбое резервного копирования будет предпринята попытка выполнить операцию резервного копирования на основе логики повторных попыток в службе (для определенного количества попыток).

    • fsFreezeEnabled — укажите, будет ли во время создания моментального снимка виртуальной машины Linux вызываться fsfreeze для обеспечения согласованности с файловой системой. Рекомендуется присвоить этому параметру значение true, если отключение fsfreeze может повлиять на состояние приложения.

    • ScriptsExecutionPollTimeSeconds — укажите время, в течение которого расширение должно находиться в спящем режиме между операциями опроса выполняемого скрипта. Например, если это значение равно 2, расширение проверяет, завершен ли скрипт предварительного/обратного выполнения, каждые 2 секунды. Минимальное и максимальное значения, которые может принимать этот параметр, — 1 и 5 соответственно. Значение должно быть целым числом.

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

Устранение неполадок

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

Error Сообщение об ошибке Рекомендуемое действие
Pre-ScriptExecutionFailed Скрипт предварительного выполнения вернул ошибку, и резервная копия может быть несогласованной с приложениями. Чтобы устранить проблему, проверьте соответствующие журналы ошибок.
Post-ScriptExecutionFailed Скрипт последующего выполнения вернул ошибку, которая может влиять на состояние приложения. Чтобы устранить проблему, проверьте соответствующие журналы ошибок и состояние приложений.
Pre-ScriptNotFound Сценарий предварительного выполнения не найден в расположении, указанном в файле конфигурации VMSnapshotScriptPluginConfig.json. Чтобы обеспечить согласованное с приложениями резервное копирование приложений, убедитесь, что скрипт предварительного выполнения находится в расположении, указанном в файле конфигурации.
Post-ScriptNotFound Сценарий предварительного выполнения не найден в расположении, указанном в файле конфигурации VMSnapshotScriptPluginConfig.json. Чтобы обеспечить согласованное с приложениями резервное копирование приложений, убедитесь, что скрипт последующего выполнения находится в расположении, указанном в файле конфигурации.
IncorrectPluginhostFile Файл Pluginhost, который поставляется вместе с расширением VmSnapshotLinux, поврежден, поэтому скрипты предварительного и последующего выполнения не могут быть выполнены, а резервная копия будет несогласованной с приложениями. Чтобы устранить проблему, удалите расширение VmSnapshotLinux. Оно будет автоматически переустановлено при следующем резервном копировании.
IncorrectJSONConfigFile Файл VMSnapshotScriptPluginConfig.json является недопустимым, поэтому сценарии предварительного и последующего выполнения невозможно выполнить. Резервная копия будет несогласованной с приложениями. Скачайте копию файла из репозитория GitHub и выполните повторную настройку.
InsufficientPermissionforPre-Script Чтобы выполнить скрипты, привилегированный пользователь (root) должен быть владельцем файла, а сам файл должен иметь разрешения "700" (то есть только владелец имеет разрешения на его чтение, запись и выполнение). Убедитесь, что владельцем файла скрипта является привилегированный пользователь (root) и что только владелец имеет разрешения на его чтение, запись и выполнение.
InsufficientPermissionforPost-Script Чтобы выполнить скрипты, привилегированный пользователь (root) должен быть владельцем файла, а сам файл должен иметь разрешения "700" (то есть только владелец имеет разрешения на его чтение, запись и выполнение). Убедитесь, что владельцем файла скрипта является привилегированный пользователь (root) и что только владелец имеет разрешения на его чтение, запись и выполнение.
Pre-ScriptTimeout Истекло время запуска скрипта предварительного выполнения для согласованного с приложениями резервного копирования. Проверьте скрипт в файле VMSnapshotScriptPluginConfig.json (расположен в каталоге /etc/azure) и увеличьте время ожидания.
Post-ScriptTimeout Истекло время запуска скрипта последующего выполнения для согласованного с приложениями резервного копирования. Проверьте скрипт в файле VMSnapshotScriptPluginConfig.json (расположен в каталоге /etc/azure) и увеличьте время ожидания.

Дальнейшие действия

Резервное копирование виртуальных машин Azure в хранилище служб восстановления