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


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

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

Когда Azure Backup создает моментальный снимок виртуальной машины, согласованность приложений обеспечивает правильный запуск приложений после восстановления виртуальной машины. Для этого используйте платформу прескриптов и постскриптов Linux, которая поддерживает виртуальные машины Linux, развернутые в Azure Resource Manager. Однако эти скрипты не работают для виртуальных машин, развернутых в Service Manager, или виртуальных машин Windows.

Как работает фреймворк?

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

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

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

Чтобы настроить Prescript и Post-Script, выполните следующие действия:

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

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

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

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

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

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

    • Постскриптум Разрешение 700. Например, только пользователь root должен иметь права на чтение, запись и выполнение этого файла. Ожидается, что файл будет скриптом оболочки, но теоретически этот скрипт может внутренне создавать или ссылаться на другие скрипты, такие как скрипт Python.

    Это важно

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

  5. Настройте VMSnapshotScriptPluginConfig.json, как описано здесь:

    • pluginName: оставьте это поле как есть или скрипты могут не работать должным образом.

    • preScriptLocation: укажите полный путь к прескрипту на виртуальной машине, для которой будет создана резервная копия.

    • postScriptLocation: Укажите полный путь к постскрипту на виртуальной машине, которая будет архивироваться.

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

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

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

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

    • timeoutInSeconds: Укажите отдельные тайм-ауты для прескрипта и постскриптума (максимальное значение может быть 1800).

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

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

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

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

Устранение неполадок с ошибками резервного копирования, согласованными с приложениями виртуальной машины Azure Linux

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

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

Дальнейшие шаги

Настройка резервного копирования виртуальных машин в хранилище Служб восстановления