Leer en inglés

Compartir a través de

使用 Azure 备份为 Azure Linux VM 配置应用程序一致性备份

本文介绍如何使用 Azure 备份为 Azure 部署的 Linux VM 创建应用程序一致性备份。 它介绍如何配置脚本框架和故障排除。

当 Azure 备份拍摄 VM 的快照时,应用程序一致性可确保应用程序在 VM 还原后正确启动。 为此,请使用支持 Azure 资源管理器部署的 Linux VM 的 Linux 规范和后脚本框架。 但是,这些脚本不适用于 Service Manager 部署或 Windows VM。

框架的工作原理是什么?

框架提供了在创建虚拟机快照时运行自定义预处理脚本和后处理脚本的选项。 在拍摄 VM 快照之前运行预脚本,拍摄 VM 快照后立即运行后脚本。 在创建 VM 快照时,前置脚本和后置脚本提供灵活性来控制您的应用程序和环境。

Prescripts 调用本机应用程序 API,该 API 会暂停 IO,并将内存中的内容刷新到磁盘。 这些操作可确保快照是应用一致的。 脚本后使用本机应用程序 API 解冻 IO,使应用程序能够在 VM 快照后恢复正常作。

为 Azure Linux VM 配置前脚本和后脚本

若要配置 Prescript 和后脚本,请执行以下步骤:

  1. 以根用户身份登录到要备份的 Linux VM。

  2. GitHub 下载 VMSnapshotScriptPluginConfig.json ,并将其复制到要备份的所有 VM 的 /etc/azure 文件夹中。 如果 /etc/azure 文件夹不存在,请创建它。

  3. 在计划备份的所有 VM 上复制应用程序的规范和后脚本。 可以将脚本复制到 VM 上的任意位置。 请务必更新 VMSnapshotScriptPluginConfig.json 文件中脚本文件的完整路径。

  4. 若要使用以下文件,请确保你具有相应的权限:

    • VMSnapshotScriptPluginConfig.json:权限 600。 例如,只有 用户才应具有对此文件的 读取写入 权限,并且任何用户都不应具有 执行 权限。

    • 预脚本文件:权限 700。 例如,只有用户才应具有对此文件的读取写入和执行权限。 该文件应是 shell 脚本,但理论上,此脚本可以在内部生成或引用其他脚本(如 Python 脚本)。

    • 后记 权限 700。 例如,只有用户才应具有对此文件的读取写入和执行权限。 该文件应是 shell 脚本,但理论上,此脚本可以在内部生成或引用其他脚本(如 Python 脚本)。

    Importante

    该框架为用户提供了众多功能。 保护框架,并确保只有 用户有权访问关键 JSON 和脚本文件。 如果未满足要求,则脚本不会运行,这会导致文件系统崩溃和不一致的备份。

  5. 按如下所述配置 VMSnapshotScriptPluginConfig.json

    • pluginName:将此字段保留原样,或者脚本可能无法按预期工作。

    • preScriptLocation:提供将要进行备份的 VM 上预备脚本的完整路径。

    • postScriptLocation:提供要备份的 VM 上脚本的完整路径。

    • preScriptParams:提供需要传递给规范的可选参数。 所有参数都应采用引号。 如果使用多个参数,请使用逗号分隔参数。

    • postScriptParams:提供需要传递给后脚本的可选参数。 所有参数都应采用引号。 如果使用多个参数,请使用逗号分隔参数。

    • preScriptNoOfRetries:设置在出现任何错误时前置脚本应重试的次数,直到终止为止。 零表示只有一次尝试,如果没有故障,则不重试。

    • postScriptNoOfRetries:设置在终止前出现任何错误时应重试后脚本的次数。 零表示只有一次尝试,如果没有故障,则不重试。

    • timeoutInSeconds:为前脚本和后脚本指定单独的超时值(最大值可以达到1800)。

    • continueBackupOnFailure:如果希望 Azure 备份在前置脚本或后置脚本失败时回退到文件系统一致性/崩溃一致性备份,请将此值设置为 true 。 如果将其设置为 false,那么在脚本失败时备份将会失败(除非在单磁盘 VM 下,无论该设置如何,仍会回退到崩溃一致性备份)。 当 continueBackupOnFailure 值设置为 false 时,如果备份失败,则会根据服务中的重试逻辑(针对规定的尝试次数)再次尝试备份作。

    • fsFreezeEnabled:指定在拍摄 VM 快照时是否应调用 Linux fsfreeze,以确保文件系统一致性。 建议将此设置设置为 true,除非应用程序依赖于禁用 fsfreeze。

    • ScriptsExecutionPollTimeSeconds:设置扩展在每次轮询到脚本执行之间的睡眠时间。 例如,如果值为 2,扩展将检查前/后脚本执行是否每 2 秒完成一次。 可以采用的最小值和最大值分别为 1 和 5。 该值应严格为整数。

  6. 现在已配置脚本框架。 如果已配置 VM 备份,则下一个备份将调用脚本并触发应用程序一致性备份。 如果未配置 VM 备份,请对其进行配置,方法是使用 将 Azure 虚拟机备份到恢复服务保管库。

排查 Azure Linux VM 应用程序一致性备份错误

请确保在编写规范和后脚本时添加适当的日志记录,并查看脚本日志以修复任何脚本问题。 如果运行脚本时仍有问题,请参阅下表了解详细信息。

错误 错误消息 建议的措施
脚本预执行失败 该规范返回了错误,因此备份可能不是应用程序一致的。 查看脚本的失败日志以解决此问题。
脚本执行后失败 后处理脚本报告了一个可能影响应用程序状态的错误。 查看脚本的失败日志,以解决问题并检查应用程序状态。
前脚本未找到 VMSnapshotScriptPluginConfig.json 配置文件中指定的位置找不到该脚本。 请确保预备脚本在配置文件中指定的路径存在,以保证应用一致性备份。
Post-Script未找到 VMSnapshotScriptPluginConfig.json 配置文件中指定的位置找不到后脚本。 确保脚本文件存在于配置文件中指定的路径中,以确保应用一致性备份。
IncorrectPluginhostFile Pluginhost VmSnapshotLinux 扩展附带的文件已损坏,因此无法运行预脚本和后脚本,备份将不具有应用程序一致性。 卸载 VmSnapshotLinux 扩展,并会自动重新安装下一个备份来解决问题。
错误的JSONConfigFile VMSnapshotScriptPluginConfig.json 文件不正确,因此前置脚本和后置脚本无法运行,备份将无法达到应用程序一致性。 GitHub 下载副本并再次对其进行配置。
InsufficientPermissionforPre-Script 对于运行脚本,用户应是文件的所有者,并且该文件应具有 700 个权限(也就是说,只有所有者应具有读取写入和执行权限)。 请确保用户是脚本文件的所有者,并且只有所有者具有读取写入和执行权限
InsufficientPermissionforPost-Script 对于运行脚本,根用户应是文件的所有者,并且该文件应具有 700 个权限(也就是说,只有所有者应具有读取写入和执行权限)。 请确保用户是脚本文件的所有者,并且只有所有者具有读取写入和执行权限
Pre-ScriptTimeout 执行应用程序一致性备份前脚本超时。 检查脚本并增加位于 /etc/azureVMSnapshotScriptPluginConfig.json 文件中的超时。
ScriptTimeout 后 应用程序一致性备份后脚本的执行超时。 检查脚本并增加位于 /etc/azureVMSnapshotScriptPluginConfig.json 文件中的超时。

后续步骤

将 VM 备份配置为恢复服务保管库