Compartir vía


Configuración de una copia de seguridad coherente con la aplicación para máquinas virtuales Linux de Azure mediante Azure Backup

En este artículo se describe cómo crear copias de seguridad coherentes con la aplicación para máquinas virtuales Linux implementadas en Azure mediante Azure Backup. Trata cómo configurar el marco de script y la solución de problemas.

Cuando Azure Backup toma una instantánea de una máquina virtual, la coherencia de la aplicación garantiza que las aplicaciones se inicien correctamente después de la restauración de la máquina virtual. Para lograr este comportamiento, use el marco de prescript y postscript de Linux, que admite máquinas virtuales Linux implementadas con Azure Resource Manager. Estos scripts no funcionan para las máquinas virtuales implementadas con System Center Service Manager o Windows.

¿Cómo funciona el marco?

El marco de trabajo proporciona una opción para ejecutar scripts anteriores y posteriores personalizados mientras toma una instantánea de las máquinas virtuales. Los scripts previos se ejecutan antes de tomar la instantánea de la máquina virtual. Los post-scripts se ejecutan inmediatamente después de tomar la instantánea de la máquina virtual. Los scripts anteriores y posteriores proporcionan la flexibilidad necesaria para controlar la aplicación y el entorno mientras toma instantáneas de las máquinas virtuales.

Los prescripts invocan las API nativas de aplicaciones, que silencian las E/S y vuelcan el contenido en memoria al disco. Estas acciones garantizan que la instantánea sea coherente con la aplicación. Los scripts posteriores usan las API nativas de la aplicación para reanudar las E/S, lo que permite que la aplicación reanude las operaciones normales después de tomar la instantánea de las máquinas virtuales.

Configuración de prescript y postscript para máquinas virtuales Linux de Azure

Para configurar prescript y postscript, siga estos pasos:

  1. Inicie sesión como usuario raíz en la máquina virtual Linux de la que desea realizar una copia de seguridad.

  2. En GitHub, descargue VMSnapshotScriptPluginConfig.json y cópielo en la carpeta /etc/azure para todas las máquinas virtuales de las que desea realizar una copia de seguridad. Si la carpeta /etc/azure no existe, créela.

  3. Copie el script anterior y el posterior de la aplicación en todas las máquinas virtuales de las que quiera realizar copias de seguridad. Puede copiar los scripts en cualquier ubicación de la máquina virtual. Asegúrese de actualizar la ruta de acceso completa de los archivos de script en el archivo VMSnapshotScriptPluginConfig.json.

  4. Para utilizar los siguientes archivos, asegúrese de que dispone de los permisos correspondientes:

    • VMSnapshotScriptPluginConfig.json: el permiso es 600. Por ejemplo, solo el usuario raíz debe tener permisos de lectura y escritura en este archivo y ningún usuario debe tener permisos de ejecución.
    • Archivo prescriptivo: el permiso es 700. Por ejemplo, solo el usuario raíz debe tener permisos de lectura, escritura y ejecución en este archivo. Se espera que el archivo sea un script de shell, pero en teoría, este script puede generarse internamente o hacer referencia a otros scripts como un script de Python.
    • Postscript: el permiso es 700. Por ejemplo, solo el usuario raíz debe tener permisos de lectura, escritura y ejecución en este archivo. Se espera que el archivo sea un script de shell, pero en teoría, este script puede generarse internamente o hacer referencia a otros scripts como un script de Python.

    Importante

    El marco proporciona a los usuarios numerosas potencias. Proteja el marco y asegúrese de que solo el usuario raíz tiene acceso a archivos JSON y de script críticos.

    Si no se cumplen los requisitos, el script no se puede ejecutar, lo que produce un bloqueo del sistema de archivos y una copia de seguridad incoherente.

  5. Configure VMSnapshotPluginConfig.json como se describe a continuación:

    • pluginName: deje este campo tal como está o es posible que los scripts no funcionen según lo previsto.
    • preScriptLocation: proporcione la ruta de acceso completa del script previo en la máquina virtual de la que se va a realizar la copia de seguridad.
    • postScriptLocation: proporcione la ruta de acceso completa del PostScript en la máquina virtual de la que se va a realizar la copia de seguridad.
    • preScriptParams: proporcione los parámetros opcionales que se deben pasar al pre-script. Todos los parámetros deben estar entre comillas. Si usa varios parámetros, separe los parámetros con una coma.
    • postScriptParams: proporcione los parámetros opcionales que se deben pasar al postscript. Todos los parámetros deben estar entre comillas. Si usa varios parámetros, separe los parámetros con una coma.
    • preScriptNoOfRetries: establezca el número de veces que debería reintentarse el script previo si se produce un error antes de finalizar. Cero significa solo un intento y ningún reintento si se produce un error.
    • postScriptNoOfRetries: establezca el número de veces que se debe reintentar el postscript si se produce un error antes de finalizar. Cero significa solo un intento y ningún reintento si se produce un error.
    • timeoutInSeconds: especifique tiempos de espera individuales para el prescript y el postscript (el valor máximo es 1800).
    • : establezca este valor en continueBackupOnFailuretrue si desea que Azure Backup revierta a una copia de seguridad coherente con el sistema de archivos o coherente frente a bloqueos en caso de que el script anterior o posterior sufran un error. Al establecer este valor en false, la copia de seguridad fallará si ocurre un error en un script. (Una excepción es cuando tiene una VM de disco único que recurre a una copia de seguridad consistente entre bloqueos sin importar esta configuración.) Cuando el valorcontinueBackupOnFailure está establecido en false, si se produce un error en la copia de seguridad, se vuelve a intentar la operación de copia de seguridad en función de una lógica de reintento en el servicio (para el número de intentos estipulado).
    • fsFreezeEnabled: especifique si Linux fsfreeze debe llamarse al realizar la instantánea de la máquina virtual para garantizar la coherencia del sistema de archivos. Se recomienda mantener esta configuración establecida en true a menos que la aplicación tenga una dependencia de deshabilitar fsfreeze.
    • ScriptsExecutionPollTimeSeconds: establece el tiempo durante el cual la extensión tiene que entrar en suspensión entre cada sondeo a la ejecución del script. Por ejemplo, si el valor es 2, la extensión comprueba si la ejecución de prescript o postscript se completó cada 2 segundos. El valor mínimo y máximo que puede tomar es 1 y 5, respectivamente. El valor debe ser estrictamente un entero.
  6. El marco de script ahora está configurado. Si la copia de seguridad de la máquina virtual ya está configurada, la siguiente copia de seguridad invoca los scripts y desencadena la copia de seguridad coherente con la aplicación. Si la copia de seguridad de la máquina virtual no está configurada, configúrela siguiendo los pasos descritos en Copia de seguridad de máquinas virtuales de Azure en almacenes de Recovery Services.

Solución de problemas de errores de copia de seguridad consistente entre aplicaciones de máquinas virtuales Linux de Azure

Asegúrese de agregar un registro de datos adecuado mientras escribe el guion previo y el guion posterior. Revise los registros de script para corregir cualquier problema de script. Si sigue teniendo problemas para ejecutar scripts, consulte la tabla siguiente.

Error Mensaje de error Acción recomendada
Pre-ScriptExecutionFailed El código previo devolvió un error, por lo que es posible que la copia de seguridad no sea coherente con la aplicación. Examine los registros de error del script para corregir el problema.
Post-ScriptExecutionFailed El PostScript devolvió un error que podría afectar al estado de la aplicación. Examine los registros de errores del script para corregir el problema y compruebe el estado de la aplicación.
Pre-ScriptNotFound El preíndice no se encontró en la ubicación especificada en el archivo de configuración de VMSnapshotScriptPluginConfig.json. Asegúrese de que el preíndice está presente en la ruta de acceso especificada en el archivo de configuración para garantizar la copia de seguridad coherente con la aplicación.
Post-ScriptNotFound El postscript no se encontró en la ubicación especificada en el archivo de configuración de VMSnapshotScriptPluginConfig.json. Asegúrese de que el postscript está presente en la ruta de acceso especificada en el archivo de configuración para garantizar la copia de seguridad coherente con la aplicación.
IncorrectPluginhostFile El archivo Pluginhost, que viene con la extensión VmSnapshotLinux, está dañado, por lo que el prescript y el postscript no se pueden ejecutar y la copia de seguridad no es consistente con la aplicación. Desinstale la VmSnapshotLinux extensión. Se vuelve a instalar automáticamente con la siguiente copia de seguridad para corregir el problema.
IncorrectJSONConfigFile El archivo VMSnapshotScriptPluginConfig.json es incorrecto, por lo que el preíndice y postíndice no se puede ejecutar y la copia de seguridad no es coherente con la aplicación. Descargue la copia de GitHub y configúrela de nuevo.
InsufficientPermissionforPre-Script Para ejecutar scripts, el usuario raíz debe ser el propietario del archivo. El archivo debe tener 700 permisos. (Es decir, solo el propietario debe tener permisos de lectura, escritura y ejecución). Asegúrese de que el usuario raíz es el propietario del archivo de script y que solo el propietario tiene permisos de lectura, escritura y ejecución.
InsufficientPermissionforPost-Script Para ejecutar scripts, el usuario raíz debe ser el propietario del archivo. El archivo debe tener 700 permisos. (Es decir, solo el propietario debe tener permisos de lectura, escritura y ejecución). Asegúrese de que el usuario raíz es el propietario del archivo de script y que solo el propietario tiene permisos de lectura, escritura y ejecución.
Pre-ScriptTimeout La ejecución del script previo de la copia de seguridad consistente entre aplicaciones ha superado el tiempo de espera. Compruebe el script y aumente el tiempo de espera en el archivo VMSnapshotScriptPluginConfig.json ubicado en /etc/azure.
Post-ScriptTimeout La ejecución del PostScript de la copia de seguridad consistente entre aplicaciones ha superado el tiempo de espera. Compruebe el script y aumente el tiempo de espera en el archivo VMSnapshotScriptPluginConfig.json ubicado en /etc/azure.