Backup coerente con le applicazioni per macchine virtuali Linux in Azure

Quando viene eseguito il backup di snapshot delle macchine virtuali, la coerenza a livello di applicazioni fa riferimento al fatto che le applicazioni vengono avviate all'avvio delle macchine virtuali dopo il ripristino. È pertanto evidente che la coerenza con le applicazioni è un fattore estremamente importante. Per garantire che le macchine virtuali Linux siano coerenti a livello di applicazioni, è possibile usare il framework di script di pre-backup e script di post-backup Linux per eseguire backup coerenti con le applicazioni. Il framework degli script di pre e post-backup è supportato per le macchine virtuali Linux distribuite di Azure Resource Manager. Gli script per la coerenza dell'applicazione non supportano macchine virtuali distribuite Service Manager o macchine virtuali Windows.

Come funziona il framework

Il framework offre un'opzione per eseguire script di pre e post-backup durante la creazione di snapshot delle macchine virtuali. Gli script pre-backup vengono eseguiti immediatamente prima della creazione dello snapshot della macchina virtuale e gli script post-backup vengono eseguiti immediatamente dopo la creazione dello snapshot della macchina virtuale. Gli script di pre e post-backup offrono la flessibilità necessaria per controllare l'applicazione e l'ambiente quando si creano snapshot delle macchine virtuali.

Gli script di pre-backup richiamano API native delle applicazioni per disattivare gli I/O e scaricano sul disco il contenuto in memoria. Queste azioni garantiscono la coerenza dello snapshot con le applicazioni. Gli script post-backup usano le API native dell'applicazione per sbloccare le operazioni di I/O, che consentono all'applicazione di riprendere le normali operazioni dopo lo snapshot della macchina virtuale.

Passaggi per configurare gli script di pre e post-backup

  1. Accedere come utente root alla macchina virtuale Linux VM di cui si vuole eseguire il backup.

  2. Da GitHub scaricare VMSnapshotScriptPluginConfig.json e copiarlo nella cartella /etc/azure per tutte le macchine virtuali di cui si desidera eseguire il backup. Se la cartella /etc/azure non esiste, crearla.

  3. Copiare lo script di pre-backup e lo script di post-backup per l'applicazione su tutte le macchine virtuali di cui eseguire il backup. È possibile copiare gli script in qualsiasi posizione nella macchina virtuale. Assicurarsi di aggiornare il percorso completo dei file di script nel file VMSnapshotScriptPluginConfig.json .

  4. Assicurarsi che siano disponibili le autorizzazioni seguenti per i file:

    • VMSnapshotScriptPluginConfig.json: autorizzazione "600". Ad esempio solo l'utente "root" deve avere le autorizzazioni di "lettura" e "scrittura" per questo file, nessun utente deve avere autorizzazioni di "esecuzione".

    • File di pre-script: autorizzazione "700". Ad esempio, solo l'utente "root" deve avere le autorizzazioni di "lettura", "scrittura" ed "esecuzione" per questo file. Il file dovrebbe essere uno script della shell, ma in teoria questo script può generare internamente o fare riferimento ad altri script come uno script Python.

    • Post-script Autorizzazione "700". Ad esempio, solo l'utente "root" deve avere le autorizzazioni di "lettura", "scrittura" ed "esecuzione" per questo file. Il file dovrebbe essere uno script della shell, ma in teoria questo script può generare internamente o fare riferimento ad altri script come uno script Python.

    Importante

    Il framework offre notevoli potenzialità agli utenti. Controllare il framework e assicurarsi che solo l'utente "root" abbia accesso ai file di script e JSON critici. Se i requisiti non vengono soddisfatti, lo script non viene eseguito e pertanto si verificherà un arresto anomalo del file system e verrà creato un backup non coerente.

  5. Configurare VMSnapshotScriptPluginConfig.json come descritto di seguito:

    • plugName: lasciare questo campo come è o gli script potrebbero non funzionare come previsto.

    • preScriptLocation: specificare il percorso completo dello script di pre-backup nella VM di cui si eseguirà il backup.

    • postScriptLocation: specificare il percorso completo dello script di post-backup nella VM di cui si eseguirà il backup.

    • preScriptParams: specificare i parametri facoltativi da passare allo script di pre-backup. Tutti i parametri devono essere racchiusi tra virgolette. Se si usano più parametri, separare i parametri con una virgola.

    • postScriptParams: specificare i parametri facoltativi da passare allo script di post-backup. Tutti i parametri devono essere racchiusi tra virgolette. Se si usano più parametri, separare i parametri con una virgola.

    • preScriptNoOfRetries: impostare il numero di volte in cui deve essere eseguito nuovamente lo script preliminare se si verifica un errore prima della terminazione. Zero significa solo un tentativo e nessun tentativo se si verifica un errore.

    • postScriptNoOfRetries: impostare il numero di volte in cui deve essere eseguito il post-script se si verifica un errore prima della terminazione. Zero significa solo un tentativo e nessun tentativo se si verifica un errore.

    • timeoutInSeconds: specificare i timeout individuali per lo script di pre-backup e lo script di post-backup (il valore massimo può essere 1800).

    • continueBackupOnFailure: impostare questo valore su true se si vuole Backup di Azure di eseguire il fallback in un backup coerente/anomalo coerente con il file system se lo script pre-script o post-script ha esito negativo. Se si verifica un errore di script, l'impostazione su false ha esito negativo se si verifica un errore di script, tranne quando si dispone di una macchina virtuale a disco singolo che torna al backup coerente con l'arresto anomalo indipendentemente da questa impostazione. Quando il valore continueBackupOnFailure è impostato su false, se il backup non riesce l'operazione di backup verrà riprovato in base a una logica di ripetizione dei tentativi nel servizio (per il numero specificato di tentativi).

    • fsFreezeEnabled: specificare se il comando fsfreeze di Linux deve essere chiamato durante la creazione dello snapshot della macchina virtuale per garantire la coerenza del file system. È consigliabile mantenere questa impostazione impostata su true a meno che l'applicazione non abbia una dipendenza dalla disabilitazione di fsfreeze.

    • ScriptExecutionPollTimeSeconds: impostare l'ora in cui l'estensione deve dormire tra ogni polling per l'esecuzione dello script. Ad esempio, se il valore è 2, l'estensione verifica se l'esecuzione dello script pre/post è stata completata ogni 2 secondi. Il valore minimo e massimo che può richiedere è rispettivamente 1 e 5. Il valore deve essere rigorosamente un intero.

  6. Il framework di script è ora configurato. Se il backup della macchina virtuale è già configurato, il backup successivo richiamerà gli script e attiverà backup coerenti con le applicazioni. Se il backup della macchina virtuale non è configurato, configurarlo usando Backup delle macchine virtuali di Azure negli insiemi di credenziali di Servizi di ripristino.

Risoluzione dei problemi

Accertarsi di aggiungere le funzioni di log appropriate negli script di pre e post-backup e controllare i log di script per risolvere eventuali problemi degli script. Se continuano a verificarsi problemi durante l'esecuzione degli script, vedere la tabella seguente per altre informazioni.

Errore Messaggio di errore Azione consigliata
Pre-ScriptExecutionFailed Lo script di pre-backup ha restituito un errore perciò il backup potrebbe non essere coerente con le applicazioni. Controllare i log di errore dello script per risolvere il problema.
Post-ScriptExecutionFailed Lo script di post-backup ha restituito un errore che potrebbe compromettere lo stato dell'applicazione. Controllare i log di errore dello script per risolvere il problema e verificare lo stato dell'applicazione.
Pre-ScriptNotFound Lo script di pre-backup non è stato trovato nel percorso specificato nel file di configurazione VMSnapshotScriptPluginConfig.json. Assicurarsi che lo script di pre-backup sia presente nel percorso specificato nel file di configurazione per garantire un backup coerente con le applicazioni.
Post-ScriptNotFound Lo script di post-backup non è stato trovato nel percorso specificato nel file di configurazione VMSnapshotScriptPluginConfig.json. Assicurarsi che lo script di post-backup sia presente nel percorso specificato nel file di configurazione per garantire un backup coerente con le applicazioni.
IncorrectPluginhostFile Il file Pluginhost incluso con l'estensione VmSnapshotLinux è danneggiato perciò non è possibile eseguire gli script di pre e post-backup e il backup non sarà coerente con le applicazioni. Disinstallare l'estensione VmSnapshotLinux che sarà automaticamente reinstallata con il backup successivo per risolvere il problema.
IncorrectJSONConfigFile Il file VMSnapshotScriptPluginConfig.json non è corretto, perciò non è possibile eseguire gli script di pre e post-backup e il backup non sarà coerente con le applicazioni. Scaricare la copia da GitHub ed eseguirne di nuovo la configurazione.
InsufficientPermissionforPre-Script Per eseguire gli script, l'utente "root" deve essere il proprietario del file e il file deve avere le autorizzazioni "700" (ovvero solo il "proprietario" deve possedere le autorizzazioni di "lettura", "scrittura" ed "esecuzione"). Assicurarsi che l'utente "root" sia il "proprietario" del file di script e che solo il "proprietario" abbia le autorizzazioni di "lettura", "scrittura" ed "esecuzione".
InsufficientPermissionforPost-Script Per eseguire gli script, l'utente root deve essere il proprietario del file e il file deve avere le autorizzazioni "700" (ovvero solo il "proprietario" deve possedere le autorizzazioni di "lettura", "scrittura" ed "esecuzione"). Assicurarsi che l'utente "root" sia il "proprietario" del file di script e che solo il "proprietario" abbia le autorizzazioni di "lettura", "scrittura" ed "esecuzione".
Pre-ScriptTimeout Si è verificato il time-out dell'esecuzione dello script di pre-backup per un backup coerente della applicazioni. Controllare lo script e aumentare il timeout nel file VMSnapshotScriptPluginConfig.json disponibile all'indirizzo /etc/azure.
Post-ScriptTimeout Si è verificato il time-out dell'esecuzione dello script di post-backup per un backup coerente della applicazioni. Controllare lo script e aumentare il timeout nel file VMSnapshotScriptPluginConfig.json disponibile all'indirizzo /etc/azure.

Passaggi successivi

Configurare il backup della macchina virtuale in un insieme di credenziali di Servizi di ripristino