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


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

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

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

Как работает платформа?

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

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

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

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

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

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

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

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

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

    Это важно

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

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

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

    • pluginName: оставьте это поле как есть или скрипты могут не работать должным образом.
    • preScriptLocation: укажите полный путь к прескрипту на виртуальной машине, подлежащей резервному копированию.
    • postScriptLocation: Укажите полный путь к PostScript на виртуальной машине для его резервного копирования.
    • preScriptParams: укажите параметры, которые нужно передать в скрипт. Все параметры должны находиться в кавычках. При использовании нескольких параметров разделите параметры запятой.
    • postScriptParams: укажите необязательные параметры, которые необходимо передать в postscript. Все параметры должны находиться в кавычках. При использовании нескольких параметров разделите параметры запятой.
    • preScriptNoOfRetries: задайте количество раз, сколько раз предписание должно быть повторено, если возникает ошибка до завершения. Ноль означает только одну попытку, и нет повторной попытки в случае сбоя.
    • postScriptNoOfRetries: Установите количество повторных попыток выполнения постскриптума в случае ошибки до завершения. Ноль означает только одну попытку, и нет повторной попытки в случае сбоя.
    • timeoutInSeconds: укажите отдельные тайм-ауты для предстрочного и постскрипта (максимальное значение — 1800).
    • continueBackupOnFailure: установите значение true, если вы хотите, чтобы служба Azure Backup вернулась к согласованному с файловой системой или аварийному резервному копированию при сбое сценария предварительной или последующей обработки. Если происходит сбой сценария, и это значение установлено в false, резервное копирование завершается ошибкой. (Исключение заключается в том, что у вас есть виртуальная машина с одним диском, которая возвращается в отказоустойчивое резервное копирование независимо от этого параметра.) continueBackupOnFailure Если задано значение false, если резервное копирование завершается ошибкой, операция резервного копирования выполняется повторно на основе логики повторных попыток в службе (для указанного количества попыток).
    • fsFreezeEnabled: укажите, следует ли вызывать Linux fsfreeze во время создания моментального снимка виртуальной машины, чтобы обеспечить согласованность файловой системы. Мы рекомендуем сохранить этот параметр равным true , если приложение не имеет зависимости от отключения fsfreeze.
    • ScriptsExecutionPollTimeSeconds: установите время задержки расширения между каждым опросом во время выполнения скрипта. Например, если значение равно 2, расширение проверяет, было ли выполнение прескрипта или постскрипта завершено каждые 2 секунды. Минимальное и максимальное значение, которое может занять , равно 1 и 5 соответственно. Значение должно быть строго целым числом.
  6. Теперь платформа скриптов настроена. Если резервная копия виртуальной машины уже настроена, следующая резервная копия вызывает скрипты и активирует резервное копирование, согласованное с приложением. Если резервная копия виртуальной машины не настроена, настройте ее, выполнив действия, описанные в статье "Резервное копирование виртуальных машин Azure в хранилища служб восстановления".

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

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

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