Поделиться через


Резервное копирование виртуальных машин Linux с согласованием приложений с помощью Azure Backup

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

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

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

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

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

Настройка предварительного и последующего скрипта для виртуальной машины Linux в Azure

Чтобы настроить prescript и post-script, выполните следующие действия.

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

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

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

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

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

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

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

    Внимание

    Платформа предоставляет пользователям широкие возможности. Защитите платформу и убедитесь, что только у привилегированных пользователей есть доступ к важным 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 в хранилища Служб восстановления.

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

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

Ошибка Сообщение об ошибке Рекомендуемое действие
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 в хранилище служб восстановления