Partager via


Configurer une sauvegarde cohérente avec les applications pour les machines virtuelles Linux Azure à l’aide de Sauvegarde Azure

Cet article explique comment créer des sauvegardes cohérentes avec les applications pour les machines virtuelles Linux déployées par Azure à l’aide de Sauvegarde Azure. Il explique comment configurer l’infrastructure de script et la résolution des problèmes.

Lorsque sauvegarde Azure prend un instantané d’une machine virtuelle, la cohérence des applications garantit que les applications démarrent correctement après la restauration de la machine virtuelle. Pour obtenir ce comportement, utilisez l’infrastructure prescript et postscript Linux, qui prend en charge les machines virtuelles Linux déployées avec Azure Resource Manager. Ces scripts ne fonctionnent pas pour les machines virtuelles déployées avec System Center Service Manager ou Windows.

Comment fonctionne l’infrastructure ?

L’infrastructure offre une option permettant d’exécuter des prescripts personnalisés et des postscripts pendant que vous prenez des captures instantanées de machine virtuelle. Les scripts s'exécutent avant de créer l'instantané de la machine virtuelle. Les postscripts s’exécutent immédiatement après la prise d’un instantané de la machine virtuelle. Les prescripts et les postscripts offrent la possibilité de contrôler votre application et votre environnement pendant que vous prenez des captures instantanées de machine virtuelle.

Les prescripts appellent des API d’application natives, qui calment les E/S et vident le contenu en mémoire sur le disque. Ces actions garantissent que l’instantané est cohérent avec l’application. Les postscripts utilisent des API d’application native pour dégeler les E/S, ce qui permet à l’application de reprendre les opérations normales après l’instantané de la machine virtuelle.

Configurer le prescript et le postscript pour les machines virtuelles Linux Azure

Pour configurer le prescript et le postscript, procédez comme suit :

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

  2. À partir de GitHub, téléchargez VMSnapshotScriptPluginConfig.json et copiez-le dans le dossier /etc/azure pour toutes les machines virtuelles que vous souhaitez sauvegarder. Si le dossier /etc/azure n’existe pas, créez-le.

  3. Copiez le prescript et le postscript pour votre application sur toutes les machines virtuelles que vous envisagez de sauvegarder. Vous pouvez copier les scripts à 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. Pour utiliser les fichiers suivants, assurez-vous que vous disposez des autorisations correspondantes :

    • VMSnapshotScriptPluginConfig.json: l’autorisation est 600. Par exemple, seul l’utilisateur racine doit disposer d’autorisations de lecture et d’écriture dans ce fichier, et aucun utilisateur ne doit disposer d’autorisations d’exécution.
    • Fichier prescript : l’autorisation est 700. Par exemple, seul l’utilisateur racine doit disposer d’autorisations de lecture, d’écriture et d’exécution dans ce fichier. Le fichier est censé être un script shell, mais théoriquement, ce script peut générer ou faire référence en interne à d’autres scripts comme un script Python.
    • Postscript : l’autorisation est 700. Par exemple, seul l’utilisateur racine doit disposer d’autorisations de lecture, d’écriture et d’exécution dans ce fichier. Le fichier est censé être un script shell, mais théoriquement, ce script peut générer ou faire référence en interne à d’autres scripts comme un script Python.

    Important

    Le framework donne aux utilisateurs de nombreuses puissances. Sécurisez l’infrastructure et assurez-vous que seul l’utilisateur racine a accès aux fichiers JSON et de script critiques.

    Si la configuration requise n’est pas remplie, le script ne peut pas s’exécuter, ce qui entraîne un blocage du système de fichiers et une sauvegarde incohérente.

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

    • pluginName: Laissez ce champ tel qu’il est, ou vos scripts peuvent ne pas fonctionner comme prévu.
    • preScriptLocation: indiquez le chemin complet du prescript sur la machine virtuelle à sauvegarder.
    • postScriptLocation: indiquez le chemin complet du postscript sur la machine virtuelle à sauvegarder.
    • preScriptParams: indiquez les paramètres facultatifs qui doivent être passés au prescript. Tous les paramètres doivent être entre guillemets. Si vous utilisez plusieurs paramètres, séparez-les par une virgule.
    • postScriptParams: indiquez les paramètres facultatifs qui doivent être passés au postscript. 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 fois où le prescript doit être retenté si une erreur se produit avant la fin. Zéro signifie qu’une seule tentative est effectuée et qu’aucune nouvelle tentative n’est effectuée en cas de défaillance.
    • postScriptNoOfRetries: définissez le nombre de fois où le postscript doit être retenté si une erreur se produit avant la fin. Zéro signifie qu’une seule tentative est effectuée et qu’aucune nouvelle tentative n’est effectuée en cas de défaillance.
    • timeoutInSeconds: spécifiez des délais d’expiration individuels pour le prescript et le postscript (la valeur maximale est 1800).
    • continueBackupOnFailure: Définissez cette valeur sur true si vous souhaitez qu’Azure Backup retourne à une sauvegarde cohérente avec le système de fichiers/une sauvegarde cohérente en cas de crash si le préscript ou postscript échoue. La définition de cette valeur sur false échoue la sauvegarde en cas d’échec d’un script. (Une exception est que vous disposez d’une machine virtuelle à disque unique qui revient à une sauvegarde cohérente en cas d’incident, quel que soit ce paramètre.) Lorsque la continueBackupOnFailure valeur 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 dans le service (pour le nombre spécifié de tentatives).
    • fsFreezeEnabled: spécifiez si Linux fsfreeze doit être appelé pendant que vous prenez l’instantané de machine virtuelle pour garantir la cohérence du système de fichiers. Nous vous recommandons de conserver ce paramètre défini sur true , sauf si votre application a une dépendance sur la fsfreezedésactivation.
    • ScriptsExecutionPollTimeSeconds: définissez l’heure à laquelle l’extension doit dormir entre chaque sondage et l’exécution du script. Par exemple, si la valeur est 2, l’extension vérifie si l’exécution prescript ou postscript est terminée toutes les 2 secondes. La valeur minimale et maximale qu’elle peut prendre est de 1 à 5, respectivement. La valeur peut être un entier uniquement.
  6. L’infrastructure de script est désormais configurée. Si la sauvegarde de machine virtuelle est déjà configurée, la sauvegarde suivante appelle les scripts et déclenche une sauvegarde cohérente avec les applications. Si la sauvegarde de machine virtuelle n’est pas configurée, configurez-la en suivant les étapes de sauvegarde des machines virtuelles Azure dans les coffres Recovery Services.

Résoudre les erreurs de sauvegarde cohérente avec l’application de machine virtuelle Azure Linux

Veillez à ajouter un enregistrement des logs approprié pendant que vous écrivez le script de prés-exécution et le script de post-exécution. Passez en revue vos journaux de script pour résoudre les problèmes de script. Si vous rencontrez toujours des problèmes d’exécution de scripts, reportez-vous au tableau suivant.

Erreur Message d'erreur Action recommandée
Pre-ScriptExecutionFailed Le prescript a retourné une erreur. La sauvegarde peut donc ne pas être cohérente avec l’application. Examinez les journaux d’activité d’erreur de votre script pour résoudre le problème.
Post-ScriptExecutionFailed Le postscript a retourné une erreur susceptible d’affecter l’état de l’application. Examinez les journaux d’échec de votre script pour résoudre le problème et vérifiez l’état de l’application.
Pre-ScriptNotFound Le prescript n’a pas été trouvé à l’emplacement spécifié dans le fichier de configuration VMSnapshotScriptPluginConfig.json. Assurez-vous que le prescript est présent au chemin d’accès spécifié dans le fichier config pour garantir la sauvegarde cohérente de l’application.
Post-ScriptNotFound Le postscript n’a pas été trouvé à l’emplacement spécifié dans le fichier de configuration VMSnapshotScriptPluginConfig.json. Assurez-vous que le postscript est présent au chemin d’accès spécifié dans le fichier de configuration pour garantir la sauvegarde cohérente de l’application.
IncorrectPluginhostFile Le Pluginhost fichier, fourni avec l’extension VmSnapshotLinux , est endommagé, de sorte que le prescript et le postscript ne peuvent pas s’exécuter et la sauvegarde n’est pas cohérente avec l’application. Désinstallez l’extension VmSnapshotLinux . Il réinstalle automatiquement avec la sauvegarde suivante pour résoudre le problème.
IncorrectJSONConfigFile Le fichier VMSnapshotScriptPluginConfig.json est incorrect. Par conséquent, le prescript et le postscript ne peuvent pas s’exécuter et la sauvegarde n’est pas cohérente avec l’application. Téléchargez la copie à partir de GitHub et la configurer à nouveau.
InsufficientPermissionforPre-Script Pour les scripts en cours d’exécution, l’utilisateur racine doit être le propriétaire du fichier. Le fichier doit disposer de 700 autorisations. (Autrement dit, seul le propriétaire doit disposer d’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 d’autorisations de lecture, d’écriture et d’exécution.
InsufficientPermissionforPost-Script Pour les scripts en cours d’exécution, l’utilisateur racine doit être le propriétaire du fichier. Le fichier doit disposer de 700 autorisations. (Autrement dit, seul le propriétaire doit disposer d’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 d’autorisations de lecture, d’écriture et d’exécution.
Pre-ScriptTimeout L’exécution du prescript pour la 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 du post-scriptum pour la sauvegarde cohérente avec l’application a expiré. Vérifiez le script et augmentez le délai d’expiration dans le fichier VMSnapshotScriptPluginConfig.json situé à l’emplacement /etc/azure.