Sauvegarde cohérente avec les applications de machines virtuelles Linux Azure en utilisant Sauvegarde Azure

Cet article explique comment créer des sauvegardes cohérentes avec les applications de vos machines virtuelles Linux sur Azure en utilisant Sauvegarde Azure. Dans cet article, vous allez configurer l’infrastructure de script pour sauvegarder des machines virtuelles Linux déployées par Azure. Cet article fournit également des informations sur la résolution des problèmes.

Quand vous prenez des instantanés de sauvegarde de vos machines virtuelles, la cohérence avec les applications signifie que vos applications démarrent au démarrage des machines virtuelles une fois celles-ci restaurées. Comme vous pouvez l’imaginer, la cohérence des applications est extrêmement importante. Pour faire en sorte que vos machines virtuelles Linux soient cohérente avec les applications, vous pouvez utiliser l’infrastructure de pré-script et de post-script de Linux afin d’effectuer des sauvegardes cohérentes avec les applications. L’infrastructure de pré-script et de post-script prend en charge les machines virtuelles Linux déployées par Azure Resource Manager. Les scripts de cohérence des applications ne prennent pas en charge les machines virtuelles déployées par Service Manager et les machines virtuelles Windows.

Fonctionnement de l’infrastructure

L’infrastructure fournit une option permettant d’exécuter des pré-scripts et des post-scripts personnalisés quand vous capturez des instantanés de machine virtuelle. Les pré-scripts s’exécutent juste avant la capture d’un instantané de machine virtuelle et les post-scripts s’exécutent juste après. Les pré-scripts et les post-scripts vous permettent de contrôler votre application et votre environnement quand vous prenez des captures instantanées de machine virtuelle.

Les pré-scripts appellent des API d’application natives, qui suspendent les E/S et vident le contenu de la mémoire sur le disque. Ces actions garantissent que la capture instantanée est cohérente des applications. Les post-scripts utilisent les API natives de l’application pour libérer les E/S, qui permettent à l’application de reprendre ses opérations normales après la capture instantanée des machines virtuelles.

Configurer un pré-script et un post-script pour une machine virtuelle Linux Azure

Pour configurer un pré-script et un post-script, effectuez les étapes suivantes :

  1. Connectez-vous en tant qu’utilisateur root de la machine virtuelle Linux que vous souhaitez sauvegarder.

  2. Dans GitHub, téléchargez le fichier VMSnapshotScriptPluginConfig.json et copiez-le dans le dossier /etc/azure de toutes les machines virtuelles à sauvegarder. Si le dossier /etc/azure n’existe pas, créez-le.

  3. Copiez le pré-script et le post-script pour votre application sur toutes les machines virtuelles que vous prévoyez de sauvegarder. Vous pouvez copier les scripts vers n’importe quel emplacement sur la machine virtuelle. Veillez à mettre à jour le chemin d’accès complet des fichiers de script dans le fichier VMSnapshotScriptPluginConfig.json.

  4. Vérifiez les autorisations suivantes pour ces fichiers :

    • VMSnapshotScriptPluginConfig.json : autorisation « 600 ». Par exemple, seul l’utilisateur « racine » doit avoir des autorisations de « lecture » et « d’écriture » pour ce fichier, et aucun utilisateur ne doit disposer des autorisations « d’exécution ».

    • Fichier de pré-script : autorisation « 700 ». Par exemple, seul l’utilisateur « racine » doit avoir les autorisations de « lecture », « d’écriture » et « d’exécution » pour ce fichier. Le fichier est censé être un script d’interpréteur de commandes, mais théoriquement ce script peut générer ou faire référence à d’autres scripts comme un script Python.

    • Post-script : autorisation « 700 ». Par exemple, seul l’utilisateur « racine » doit avoir les autorisations de « lecture », « d’écriture » et « d’exécution » pour ce fichier. Le fichier est censé être un script d’interpréteur de commandes, mais théoriquement ce script peut générer ou faire référence à d’autres scripts comme un script Python.

    Important

    L’infrastructure offre beaucoup de puissance aux utilisateurs. Sécurisez l’infrastructure et vérifiez que seul l’utilisateur « root » a accès au fichier JSON et aux fichiers de script. Si ces conditions ne sont pas remplies, le script ne s’exécute pas, ce qui bloque le système de fichiers et produit une sauvegarde incohérente.

  5. Configurez VMSnapshoScriptPluginConfig.json comme décrit ici :

    • pluginName : laissez ce champ tel quel, sinon vos scripts ne fonctionneront pas comme prévu.

    • preScriptLocation : fournissez le chemin d’accès complet du pré-script sur la machine virtuelle à sauvegarder.

    • postScriptLocation : fournissez le chemin complet du post-script sur la machine virtuelle qui sera sauvegardée.

    • preScriptParams : fournissez les paramètres facultatifs qui doivent être passés au pré-script. Tous les paramètres doivent être entre guillemets. Si vous utilisez plusieurs paramètres, séparez-les par une virgule.

    • postScriptParams : fournissez les paramètres facultatifs qui doivent être transmis au post-script. Tous les paramètres doivent être entre guillemets. Si vous utilisez plusieurs paramètres, séparez-les par une virgule.

    • preScriptNoOfRetries : définissez le nombre de nouvelles tentatives d’exécution du pré-script en cas d’erreur avant d’y mettre fin. Zéro signifie une seule tentative et aucune nouvelle tentative en cas d’échec.

    • postScriptNoOfRetries : définissez le nombre de fois où le post-script doit être traité à nouveau en cas d’erreur avant de terminer. Zéro signifie une seule tentative et aucune nouvelle tentative en cas d’échec.

    • timeoutInSeconds : spécifiez les délais d’attente individuels pour le pré-script et pour le post-script (la valeur maximale est 1 800).

    • continueBackupOnFailure : définissez cette valeur sur true si vous voulez que Sauvegarde Azure effectue une sauvegarde cohérente avec le système de fichiers/l’incident en cas d’échec du pré-script ou du post-script. Si cette valeur est définie sur false, la sauvegarde échoue en cas d’échec du script (sauf si vous avez une machine virtuelle à un seul disque qui restaure vers une sauvegarde cohérente en cas d’incident, indépendamment de ce paramètre). Lorsque la valeur de continueBackupOnFailure est définie sur false, si la sauvegarde échoue, l’opération de sauvegarde est tentée à nouveau en fonction d’une logique de nouvelle tentative en service (pour le nombre spécifié de tentatives).

    • fsFreezeEnabled : spécifiez si fsfreeze Linux doit être appelé pendant la prise d’instantané de la machine virtuelle pour garantir la cohérence du système de fichiers. Nous vous recommandons de laisser cette valeur définie sur true, sauf si votre application comporte des dépendances sur la désactivation de fsfreeze.

    • ScriptsExecutionPollTimeSeconds : définissez le temps de veille de l’extension entre chaque sondage d’exécution du script. Par exemple, si la valeur est 2, l’extension vérifie si l’exécution du pré-script/post-script s’est effectuée toutes les 2 secondes. La valeur minimale est 1 et la valeur maximale 5. La valeur peut être un entier uniquement.

  6. L’infrastructure de script est désormais configurée. Si la sauvegarde de la machine virtuelle est déjà configurée, la sauvegarde suivante appelle les scripts et déclenche la sauvegarde cohérente avec les applications. Si la sauvegarde de machine virtuelle n’est pas configurée, configurez-la en procédant de la manière décrite dans Sauvegarde de machines virtuelles Azure dans des coffres Recovery Services.

Dépannage

Veillez à ajouter une journalisation appropriée lors de l’écriture de votre pré-script et de votre post-script, et passez en revue vos journaux de script pour résoudre les problèmes des scripts. Si vous rencontrez toujours des problèmes pour exécuter des scripts, reportez-vous au tableau suivant pour plus d’informations.

Error Message d’erreur Action recommandée
Pre-ScriptExecutionFailed Le pré-script a retourné une erreur : la sauvegarde peut donc ne pas être cohérente avec les applications. Examinez les journaux d’activité d’erreur de votre script pour résoudre le problème.
Post-ScriptExecutionFailed Le post-script a renvoyé une erreur qui peut affecter l’état de l’application. Examinez les journaux d’activité d’erreur de votre script pour résoudre le problème et vérifiez l’état de l’application.
Pre-ScriptNotFound Le pré-script est introuvable à l’emplacement spécifié dans le fichier de configuration VMSnapshotScriptPluginConfig.json. Vérifiez que ce pré-script est présent dans le chemin d’accès spécifié dans le fichier de configuration pour garantir une sauvegarde cohérente avec les applications.
Post-ScriptNotFound Le post-script est introuvable à l’emplacement spécifié dans le fichier de configuration VMSnapshotScriptPluginConfig.json. Assurez-vous que ce post-script est présent au niveau du chemin d’accès spécifié dans le fichier de configuration pour garantir la sauvegarde cohérente des applications.
IncorrectPluginhostFile Le fichier Pluginhost, qui est fourni avec l’extension VmSnapshotLinux est endommagé : le pré-script et le post-script ne peuvent donc pas s’exécuter et la sauvegarde ne sera pas cohérente avec les applications. Désinstallez l’extension VmSnapshotLinux, et elle sera automatiquement réinstallée avec la sauvegarde suivante pour résoudre le problème.
IncorrectJSONConfigFile Le fichier VMSnapshotScriptPluginConfig.json est incorrect : le pré-script et le post-script ne peuvent donc pas s’exécuter et la sauvegarde ne sera pas cohérente avec les applications. Téléchargez la copie à partir de GitHub et la configurer à nouveau.
InsufficientPermissionforPre-Script Pour l’exécution de scripts, l’utilisateur racine doit être le propriétaire du fichier et le fichier doit avoir des autorisations « 700 », (seul le propriétaire doit avoir des autorisations de « lecture », « d’écriture » et « d’exécution »). Assurez-vous que l’utilisateur « racine » est le « propriétaire » du fichier de script et que seul le propriétaire dispose des autorisations de « lecture », « d’écriture » et « d’exécution ».
InsufficientPermissionforPost-Script Pour l’exécution de scripts, l’utilisateur racine doit être le propriétaire du fichier et le fichier doit avoir des autorisations « 700 » (c.-à-d. que seul le propriétaire doit avoir des autorisations de « lecture », « d’écriture » et « d’exécution »). Assurez-vous que l’utilisateur « racine » est le « propriétaire » du fichier de script et que seul le propriétaire dispose des autorisations de « lecture », « d’écriture » et « d’exécution ».
Pre-ScriptTimeout L’exécution du pré-script de sauvegarde cohérente des applications a expiré. Vérifiez le script et augmentez le délai d’expiration dans le fichier VMSnapshotScriptPluginConfig.json situé à l’emplacement /etc/azure.
Post-ScriptTimeout L’exécution des post-scripts de sauvegarde cohérente avec les applications a dépassé le délai d’expiration. Vérifiez le script et augmentez le délai d’expiration dans le fichier VMSnapshotScriptPluginConfig.json situé à l’emplacement /etc/azure.

Étapes suivantes

Sauvegarder des machines virtuelles Azure dans un coffre Recovery Services